@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Translate drawing day rows into javascript

Summary: Ref T8300, Translate drawing day rows into javascript

Test Plan: no user facing changes

Reviewers: epriestley, #blessed_reviewers

Reviewed By: epriestley, #blessed_reviewers

Subscribers: Korvin, epriestley

Maniphest Tasks: T8300

Differential Revision: https://secure.phabricator.com/D12983

+113 -1
+16 -1
src/view/phui/calendar/PHUICalendarDayView.php
··· 46 46 require_celerity_resource('phui-calendar-day-css'); 47 47 48 48 $hours = $this->getHoursOfDay(); 49 + $js_hours = array(); 50 + 51 + foreach ($hours as $hour) { 52 + $js_hours[] = array( 53 + 'hour' => $hour->format('G'), 54 + 'hour_meridian' => $hour->format('g A'), 55 + ); 56 + } 57 + 49 58 $js_hourly_events = array(); 50 59 $hourly_events = array(); 51 60 ··· 90 99 'eventEndEpoch' => $event->getEpochEnd(), 91 100 'eventName' => $event->getName(), 92 101 'eventID' => $event->getEventID(), 102 + 'viewerIsInvited' => $event->getViewerIsInvited(), 103 + 'uri' => $event->getURI(), 93 104 ); 94 105 } 95 106 } ··· 115 126 'eventEndEpoch' => $event->getEpochEnd(), 116 127 'eventName' => $event->getName(), 117 128 'eventID' => $event->getEventID(), 118 - 'hour' => $hour, 129 + 'viewerIsInvited' => $event->getViewerIsInvited(), 130 + 'uri' => $event->getURI(), 131 + 'hour' => $hour->format('G'), 119 132 'offset' => '0', 120 133 'width' => '100%', 121 134 'top' => $top.'%', ··· 201 214 array( 202 215 'todayEvents' => $this->jsTodayEvents, 203 216 'hourlyEvents' => $js_hourly_events, 217 + 'hours' => $js_hours, 218 + 'firstEventHour' => $first_event_hour->format('G'), 204 219 )); 205 220 206 221 $table_box = id(new PHUIObjectBoxView())
+97
webroot/rsrc/js/application/calendar/behavior-day-view.js
··· 4 4 5 5 6 6 JX.behavior('day-view', function(config) { 7 + var hours = config.hours; 8 + var first_event_hour = config.firstEventHour; 7 9 var hourly_events = config.hourlyEvents; 8 10 var today_events = config.todayEvents; 9 11 ··· 78 80 return hourly_events; 79 81 } 80 82 83 + function drawEvent( 84 + start, 85 + end, 86 + name, 87 + viewerIsInvited, 88 + uri, 89 + id, 90 + offset, 91 + width, 92 + top, 93 + height) { 94 + 95 + var link_class = 'phui-calendar-day-event-link'; 96 + if (viewerIsInvited) { 97 + link_class = link_class + ' viewer-invited-day-event'; 98 + } 99 + 100 + var name_link = JX.$N( 101 + 'a', 102 + { 103 + className : link_class, 104 + href: uri 105 + }, 106 + name); 107 + 108 + var div = JX.$N( 109 + 'div', 110 + { 111 + className: 'phui-calendar-day-event', 112 + style: { 113 + left: offset, 114 + width: width, 115 + top: top, 116 + height: height 117 + } 118 + }, 119 + name_link); 120 + 121 + return div; 122 + } 123 + 124 + function drawRows() { 125 + var rows = []; 126 + var early_hours = [8]; 127 + if (first_event_hour) { 128 + early_hours.push(first_event_hour); 129 + } 130 + var min_early_hour = Math.min(early_hours[0], early_hours[1]); 131 + 132 + 133 + for(var i=0; i < hours.length; i++) { 134 + if (hours[i]['hour'] < min_early_hour) { 135 + continue; 136 + } 137 + var drawn_hourly_events = []; 138 + var cell_time = JX.$N( 139 + 'td', 140 + {className: 'phui-calendar-day-hour'}, 141 + hours[i]['hour_meridian']); 142 + 143 + for (var j=0; j < hourly_events.length; j++) { 144 + if (hourly_events[j]['hour'] == hours[i]['hour']) { 145 + drawn_hourly_events.push( 146 + drawEvent( 147 + hourly_events[j]['eventStartEpoch'], 148 + hourly_events[j]['eventEndEpoch'], 149 + hourly_events[j]['eventName'], 150 + hourly_events[j]['eventID'], 151 + hourly_events[j]['viewerIsInvited'], 152 + hourly_events[j]['hour'], 153 + hourly_events[j]['offset'], 154 + hourly_events[j]['width'], 155 + hourly_events[j]['top'], 156 + hourly_events[j]['height'] 157 + ) 158 + ); 159 + } 160 + } 161 + 162 + var cell_event = JX.$N( 163 + 'td', 164 + { 165 + className: 'phui-calendar-day-events' 166 + }, 167 + drawn_hourly_events); 168 + var row = JX.$N( 169 + 'tr', 170 + {}, 171 + [cell_time, cell_event]); 172 + rows.push(row); 173 + } 174 + return rows; 175 + } 176 + 81 177 var today_clusters = findTodayClusters(); 82 178 for(var i=0; i < today_clusters.length; i++) { 83 179 hourly_events = updateEventsFromCluster(today_clusters[i], hourly_events); 84 180 } 181 + var rows = drawRows(); 85 182 });