mirror of
https://github.com/atlanticbiomedical/portal.git
synced 2025-07-01 18:17:26 -04:00
Fixed 'Tetris' calendar problem.
This commit is contained in:
@ -0,0 +1,105 @@
|
||||
package com.bradrydzewski.gwt.calendar.client.techview;
|
||||
|
||||
import com.bradrydzewski.gwt.calendar.client.HasSettings;
|
||||
import com.bradrydzewski.gwt.calendar.client.util.FormattingUtil;
|
||||
import com.google.gwt.user.client.DOM;
|
||||
import com.google.gwt.user.client.ui.AbsolutePanel;
|
||||
import com.google.gwt.user.client.ui.ComplexPanel;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.SimplePanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
/**
|
||||
* The DayGrid draws the grid that displays days / time intervals in the
|
||||
* body of the calendar.
|
||||
*
|
||||
* @author Brad Rydzewski
|
||||
*/
|
||||
public class DayViewGrid /*Impl*/ extends Composite {
|
||||
|
||||
class Div extends ComplexPanel {
|
||||
|
||||
public Div() {
|
||||
setElement(DOM.createDiv());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove(Widget w) {
|
||||
return super.remove(w);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(Widget w) {
|
||||
super.add(w, getElement());
|
||||
}
|
||||
}
|
||||
|
||||
protected AbsolutePanel grid = new AbsolutePanel();
|
||||
protected SimplePanel gridOverlay = new SimplePanel();
|
||||
|
||||
private HasSettings settings = null;
|
||||
|
||||
private static final int HOURS_PER_DAY = 24;
|
||||
|
||||
public DayViewGrid(HasSettings settings) { //was DayViewGridImpl
|
||||
initWidget(grid);
|
||||
this.settings = settings;
|
||||
}
|
||||
|
||||
public void build(int workingHourStart, int workingHourStop, int days) {
|
||||
|
||||
grid.clear();
|
||||
|
||||
int intervalsPerHour = settings.getSettings().getIntervalsPerHour(); //2; //30 minute intervals
|
||||
float intervalSize = settings.getSettings().getPixelsPerInterval();
|
||||
|
||||
this.setHeight((intervalsPerHour * (intervalSize) * 24) + "px");
|
||||
|
||||
float dayWidth = 100f / days;
|
||||
float dayLeft = 0f;
|
||||
|
||||
int dayStartsAt = settings.getSettings().getDayStartsAt();
|
||||
|
||||
for (int i = 0; i < HOURS_PER_DAY; i++) {
|
||||
boolean isWorkingHours = ((i + dayStartsAt) >= workingHourStart && (i + dayStartsAt) <= workingHourStop);
|
||||
//create major interval
|
||||
SimplePanel sp1 = new SimplePanel();
|
||||
sp1.setStyleName("major-time-interval");
|
||||
sp1.setHeight(intervalSize + FormattingUtil.getBorderOffset() + "px");
|
||||
|
||||
//if working hours set
|
||||
if (isWorkingHours) {
|
||||
sp1.addStyleName("working-hours");
|
||||
}
|
||||
|
||||
//add to body
|
||||
grid.add(sp1);
|
||||
|
||||
for (int x = 0; x < intervalsPerHour - 1; x++) {
|
||||
SimplePanel sp2 = new SimplePanel();
|
||||
sp2.setStyleName("minor-time-interval");
|
||||
|
||||
sp2.setHeight(intervalSize + FormattingUtil.getBorderOffset() + "px");
|
||||
if (isWorkingHours) {
|
||||
sp2.addStyleName("working-hours");
|
||||
}
|
||||
grid.add(sp2);
|
||||
}
|
||||
}
|
||||
|
||||
for (int day = 0; day < days; day++) {
|
||||
dayLeft = dayWidth * day;
|
||||
SimplePanel dayPanel = new SimplePanel();
|
||||
dayPanel.setStyleName("day-separator");
|
||||
grid.add(dayPanel);
|
||||
DOM.setStyleAttribute(dayPanel.getElement(), "left", dayLeft + "%");
|
||||
}
|
||||
|
||||
gridOverlay.setHeight("100%");
|
||||
gridOverlay.setWidth("100%");
|
||||
DOM.setStyleAttribute(gridOverlay.getElement(), "position", "absolute");
|
||||
DOM.setStyleAttribute(gridOverlay.getElement(), "left", "0px");
|
||||
DOM.setStyleAttribute(gridOverlay.getElement(), "top", "0px");
|
||||
grid.add(gridOverlay);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user