fix shift calendar headers

This commit is contained in:
msquare 2016-11-15 22:00:17 +01:00
parent 54f3253c32
commit ac53559fea
3 changed files with 28 additions and 21 deletions

View File

@ -37,8 +37,18 @@ function user_shifts() {
* The shiftfilter to update.
*/
function update_ShiftsFilter_timerange(ShiftsFilter $shiftsFilter, $days) {
$shiftsFilter->setStartTime(check_request_datetime('start_day', 'start_time', $days, time()));
$shiftsFilter->setEndTime(check_request_datetime('end_day', 'end_time', $days, time() + 24 * 60 * 60));
$start_time = $shiftsFilter->getStartTime();
if ($start_time == null) {
$start_time = time();
}
$end_time = $shiftsFilter->getEndTime();
if ($end_time == null) {
$end_time = $start_time + 24 * 60 * 60;
}
$shiftsFilter->setStartTime(check_request_datetime('start_day', 'start_time', $days, $start_time));
$shiftsFilter->setEndTime(check_request_datetime('end_day', 'end_time', $days, $end_time));
if ($shiftsFilter->getStartTime() > $shiftsFilter->getEndTime()) {
$shiftsFilter->setEndTime($shiftsFilter->getStartTime() + 24 * 60 * 60);
@ -57,19 +67,11 @@ function update_ShiftsFilter_timerange(ShiftsFilter $shiftsFilter, $days) {
*/
function update_ShiftsFilter(ShiftsFilter $shiftsFilter, $user_shifts_admin, $days) {
$shiftsFilter->setUserShiftsAdmin($user_shifts_admin);
if (isset($_REQUEST['filled'])) {
$shiftsFilter->setFilled(check_request_int_array('filled'));
}
if (isset($_REQUEST['rooms'])) {
$shiftsFilter->setRooms(check_request_int_array('rooms'));
}
if (isset($_REQUEST['types'])) {
$shiftsFilter->setTypes(check_request_int_array('types'));
}
if ((isset($_REQUEST['start_time']) && isset($_REQUEST['start_day']) && isset($_REQUEST['end_time']) && isset($_REQUEST['end_day'])) || $shiftsFilter->getStartTime() == null || $shiftsFilter->getEndTime() == null) {
$shiftsFilter->setFilled(check_request_int_array('filled', $shiftsFilter->getFilled()));
$shiftsFilter->setRooms(check_request_int_array('rooms', $shiftsFilter->getRooms()));
$shiftsFilter->setTypes(check_request_int_array('types', $shiftsFilter->getTypes()));
update_ShiftsFilter_timerange($shiftsFilter, $days);
}
}
function load_rooms() {
$rooms = sql_select("SELECT `RID` AS `id`, `Name` AS `name` FROM `Room` WHERE `show`='Y' ORDER BY `Name`");

View File

@ -89,12 +89,14 @@ function select_array($data, $key_name, $value_name) {
*
* @param String $name
* Name of the request param
* @param array<int> $default
* Default return value, if param is not set
*/
function check_request_int_array($name) {
function check_request_int_array($name, $default = []) {
if (isset($_REQUEST[$name]) && is_array($_REQUEST[$name])) {
return array_filter($_REQUEST[$name], 'is_numeric');
}
return [];
return $default;
}
/**

View File

@ -56,12 +56,12 @@ class ShiftCalendarRenderer {
foreach ($shifts as $shift) {
$room_id = $shift['RID'];
if (! isset($lanes[$room_id])) {
// initialize room with one lane
$header = Room_name_render([
'RID' => $room_id,
'Name' => $shift['room_name']
]);
if (! isset($lanes[$room_id])) {
// initialize room with one lane
$lanes[$room_id] = [
new ShiftCalendarLane($header, $this->getFirstBlockStartTime(), $this->getBlocksPerSlot())
];
@ -108,6 +108,9 @@ class ShiftCalendarRenderer {
* @return the generated html
*/
public function render() {
if (count($this->lanes) == 0) {
return '';
}
return div('shift-calendar', [
$this->renderTimeLane(),
$this->renderShiftLanes()