Changeset 841c78 in indico
- Timestamp:
- 01/19/10 18:23:47 (3 years ago)
- Branches:
- master, burotel, hello-world-walkthrough, ipv6, new-webex, prov-dual-interface, v0.97-series, v0.98-series, v0.98.2, v0.98.3, v0.98b1, v0.98b2, v0.99, 051b2622c51afb171a1dedb46a0df4fbb0cbd02e, 0da0c1403bae8e51d8229f460181c71b9e6dda72
- Children:
- 6a51d1
- Parents:
- 6f8761
- Location:
- indico
- Files:
-
- 8 edited
-
MaKaC/schedule.py (modified) (5 diffs)
-
MaKaC/services/implementation/schedule.py (modified) (2 diffs)
-
MaKaC/webinterface/pages/conferences.py (modified) (2 diffs)
-
MaKaC/webinterface/pages/sessions.py (modified) (1 diff)
-
MaKaC/webinterface/tpls/js/vars.js.tpl (modified) (1 diff)
-
htdocs/js/indico/Timetable/Base.js (modified) (2 diffs)
-
htdocs/js/indico/Timetable/Draw.js (modified) (17 diffs)
-
htdocs/js/indico/Timetable/Management.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
indico/MaKaC/schedule.py
r4d6620 r841c78 986 986 return self.__owner.getAdjustedEndDate(tz) 987 987 988 @Retrieves('MaKaC.schedule.LinkedTimeSchEntry', 'duration', lambda x: str(x))988 @Retrieves('MaKaC.schedule.LinkedTimeSchEntry', 'duration', Conversion.timedelta) 989 989 def getDuration(self): 990 990 return self.__owner.getDuration() … … 1089 1089 return self.getEndDate().astimezone(timezone(tz)) 1090 1090 1091 @Retrieves(['MaKaC.schedule.BreakTimeSchEntry'], 'duration', lambda x: str(int(x.seconds / 60)))1091 @Retrieves(['MaKaC.schedule.BreakTimeSchEntry'], 'duration', Conversion.timedelta) 1092 1092 def getDuration(self): 1093 1093 return self.duration … … 1465 1465 genId = entry['id'] 1466 1466 1467 entry['duration'] = int(obj.getDuration().seconds / 60)1468 1469 1467 # sessions that are no poster sessions will be expanded 1470 1468 if entry['entryType'] == 'Session': … … 1484 1482 1485 1483 @staticmethod 1486 def process(schedule, tz): 1487 1488 from MaKaC.services.interface.rpc import json 1484 def process(schedule, tz, days = None): 1489 1485 1490 1486 scheduleDict={} 1491 1487 1492 for day in daysBetween(schedule.getAdjustedStartDate(tz), schedule.getAdjustedEndDate(tz)): 1488 if not days: 1489 days = daysBetween(schedule.getAdjustedStartDate(tz), schedule.getAdjustedEndDate(tz)) 1490 1491 for day in days: 1493 1492 dayEntry = {} 1494 1493 … … 1503 1502 scheduleDict[day.strftime("%Y%m%d")] = dayEntry 1504 1503 1505 return json.encode(scheduleDict)1504 return scheduleDict 1506 1505 1507 1506 @staticmethod -
indico/MaKaC/services/implementation/schedule.py
rd4734e r841c78 982 982 'autoOps': translateAutoOps(self.getAutoOps())} 983 983 984 985 class MoveEntryUpDown(ScheduleOperation, conferenceServices.ConferenceModifBase): 986 def _checkParams(self): 987 conferenceServices.ConferenceModifBase._checkParams(self) 988 989 pManager = ParameterManager(self._params, timezone = self._conf.getTimezone()) 990 991 self._schEntryId = pManager.extract("scheduleEntryId", pType=int, allowEmpty=False) 992 self._sessionId = pManager.extract("sessionId", pType=str, allowEmpty=True, defaultValue=None) 993 self._sessionSlotId = pManager.extract("sessionSlotId", pType=str, allowEmpty=True, defaultValue=None) 994 self._direction = pManager.extract("direction", pType=bool, allowEmpty=False) 995 996 def _performOperation(self): 997 998 if (self._sessionId != None and self._sessionSlotId != None): 999 1000 slot = self._conf.getSessionById(self._sessionId).getSlotById(self._sessionSlotId) 1001 sched = slot.getSchedule() 1002 else: 1003 sched = self._conf.getSchedule() 1004 1005 schEntry = sched.getEntryById(self._schEntryId) 1006 1007 if self._direction: 1008 sched.moveUpEntry(schEntry) 1009 else: 1010 sched.moveDownEntry(schEntry) 1011 1012 return schedule.ScheduleToJson.process(sched, self._conf.getTimezone(), days = [ schEntry.getAdjustedStartDate() ]) 1013 1014 1015 984 1016 methodMap = { 985 1017 "get": ConferenceGetSchedule, … … 1025 1057 "getAllSpeakers": ConferenceGetAllSpeakers, 1026 1058 1027 "moveEntry": MoveEntry 1059 "moveEntry": MoveEntry, 1060 "moveEntryUpDown": MoveEntryUpDown 1028 1061 } -
indico/MaKaC/webinterface/pages/conferences.py
r3daa2e r841c78 1146 1146 vars = wcomponents.WTemplated.getVars( self ) 1147 1147 tz = DisplayTZ(self._aw,self._conf).getDisplayTZ() 1148 vars["ttdata"] = s chedule.ScheduleToJson.process(self._conf.getSchedule(), tz)1148 vars["ttdata"] = simplejson.dumps(schedule.ScheduleToJson.process(self._conf.getSchedule(), tz)) 1149 1149 vars['eventInfo'] = simplejson.dumps(DictPickler.pickle(self._conf, timezone=tz)) 1150 1150 return vars … … 3175 3175 vars['rbActive'] = info.HelperMaKaCInfo.getMaKaCInfoInstance().getRoomBookingModuleActive() 3176 3176 3177 vars['ttdata'] = s chedule.ScheduleToJson.process(self._conf.getSchedule(), tz)3177 vars['ttdata'] = simplejson.dumps(schedule.ScheduleToJson.process(self._conf.getSchedule(), tz)) 3178 3178 vars['eventInfo'] = simplejson.dumps(DictPickler.pickle(self._conf, timezone=tz)) 3179 3179 -
indico/MaKaC/webinterface/pages/sessions.py
r7d3212 r841c78 1498 1498 vars['rbActive'] = info.HelperMaKaCInfo.getMaKaCInfoInstance().getRoomBookingModuleActive() 1499 1499 1500 vars['ttdata'] = s chedule.ScheduleToJson.process(self._session.getSchedule(), tz)1500 vars['ttdata'] = simplejson.dumps(schedule.ScheduleToJson.process(self._session.getSchedule(), tz)) 1501 1501 1502 1502 eventInfo = DictPickler.pickle(self._session.getConference(), timezone=tz) -
indico/MaKaC/webinterface/tpls/js/vars.js.tpl
ra89437 r841c78 71 71 star: "<%= iconFileName("star")%>", 72 72 starGrey: "<%= iconFileName("starGrey")%>", 73 warning_yellow: "<%= iconFileName("warning_yellow")%>" 73 warning_yellow: "<%= iconFileName("warning_yellow")%>", 74 arrow_up: "<%= iconFileName("upArrow")%>", 75 arrow_down: "<%= iconFileName("downArrow")%>" 74 76 }, 75 77 Urls: { -
indico/htdocs/js/indico/Timetable/Base.js
r7ec8ce r841c78 797 797 }, 798 798 799 _updateDay: function(dayData) { 800 801 var data = this.getData(); 802 803 extend(data, dayData); 804 805 this.timetableDrawer.redraw(); 806 }, 807 799 808 _updateMovedEntry: function(result, oldEntryId) { 800 809 this._updateEntry(result, oldEntryId, function(data){ … … 918 927 }, 919 928 929 _updateDay: function(dayData) { 930 931 var data = this.getData(); 932 933 extend(data, dayData[keys(dayData)[0]]); 934 935 this.timetableDrawer.redraw(); 936 }, 937 920 938 getTTMenu: function() { 921 939 var self = this; -
indico/htdocs/js/indico/Timetable/Draw.js
rf25f07 r841c78 36 36 self.div.dom.style.cursor = 'default'; 37 37 var cursor = getMousePointerCoordinates(event); 38 if (this.managementMode) { 39 40 this.popup = new TimetableBlockPopupManagement( 41 self.timetable, 42 this, 43 self.eventData, 44 self.div, 45 function() { 46 self.div.dom.style.cursor = 'pointer'; 47 self.popupActive = false; 48 return self.popupAllowClose; 49 }, 50 self.managementActions); 51 52 } else { 53 this.popup = new TimetableBlockPopup( 54 self.timetable, 55 self.eventData, 56 self.div, 57 function() { 58 self.div.dom.style.cursor = 'pointer'; 59 self.popupActive = false; 60 return self.popupAllowClose; 61 }, 62 function(color) { 63 var parent = self.div.getParent(); 64 parent.setStyle('backgroundColor', color); 65 } 66 ); 67 } 38 39 this.popup = self._drawPopup(); 40 68 41 this.popup.open(cursor.x, cursor.y); 69 42 }, … … 124 97 125 98 return button; 99 }, 100 101 _getRightSideDecorators: function() 102 { 103 return Html.span({}); 126 104 } 127 105 128 106 }, 129 function(timetable , managementMode, managementActions){107 function(timetable){ 130 108 this.timetable = timetable; 131 this.managementMode = managementMode;132 this.managementActions = managementActions;133 109 this.popupActive = false; 134 110 this.popupAllowClose = true; … … 136 112 ); 137 113 138 type("TimetableBlock ", ["TimetableBlockBase"],114 type("TimetableBlockNormal", ["TimetableBlockBase"], 139 115 { 140 116 _blockDescription: function(block, event) { … … 148 124 } 149 125 150 this.titleWrapper = Html.div({}, this. titleDiv);126 this.titleWrapper = Html.div({}, this._getRightSideDecorators(), this.titleDiv); 151 127 152 128 this.div = Html.div({style: { width: '100%', height: '100%'}}, this.titleWrapper); 153 129 154 if (!this.compactMode) { 130 if (this.compactMode) { 131 this.timeDiv = Html.div('timetableBlockTimeDiscreet', this.eventData.startDate.time.substring(0,5) +' - '+ this.eventData.endDate.time.substring(0,5)); 132 this.div.insert(this.timeDiv); 133 } else { 155 134 this.timeDiv = Html.div({className: 'timetableBlockTime'}, this.eventData.startDate.time.substring(0,5) +' - '+ this.eventData.endDate.time.substring(0,5)); 156 135 … … 166 145 } 167 146 168 // If it's a contrib tion the addspeakers information147 // If it's a contribution add the speakers information 169 148 if (self.eventData.presenters && self.eventData.presenters.length > 0) { 170 149 this.presentersDiv = Html.div({className: 'timetableBlockPresenters'}); … … 177 156 178 157 // Add material menu 179 if (!self.management Mode&& self.eventData.material && self.eventData.material.length > 0) {158 if (!self.managementActions && self.eventData.material && self.eventData.material.length > 0) { 180 159 this.titleWrapper.insert(this.createMaterialButton(this.eventData.material)); 181 160 } … … 185 164 this.div.append(this.timeDiv); 186 165 this.div.append(this.locationDiv); 187 } else {188 this.timeDiv = Html.div('timetableBlockTimeDiscreet', this.eventData.startDate.time.substring(0,5) +' - '+ this.eventData.endDate.time.substring(0,5));189 this.div.insert(this.timeDiv);190 166 } 191 167 … … 256 232 this.block.observeClick(function(e) { self.openPopup(e); }); 257 233 highlightWithMouse(this.div, this.block); 234 showWithMouse(this.div, this.arrows); 258 235 } 259 236 … … 359 336 } 360 337 }, 361 function(timetable, eventData, blockData, compactMode, printableVersion, detailLevel, managementMode, managementActions){ 362 this.TimetableBlockBase(timetable, managementMode, managementActions); 338 function(timetable, eventData, blockData, compactMode, printableVersion, detailLevel){ 339 340 this.TimetableBlockBase(timetable); 363 341 364 342 this.compactMode = compactMode; … … 368 346 this.printableVersion = printableVersion; 369 347 this.detailLevel = detailLevel; 348 this.arrows = Html.span({}); 370 349 } 371 350 ); 372 351 373 352 374 type("TimetableBlockWholeDay ", ["TimetableBlockBase"],353 type("TimetableBlockWholeDayBase", ["TimetableBlockBase"], 375 354 { 376 355 _blockDescription: function(block, event) { … … 378 357 379 358 this.titleDiv = Html.div({className: 'timetableBlockTitle', style: {fontWeight: this.eventData.fontWeight}}, this.eventData.title); 380 this.titleWrapper = Html.div({}, this. titleDiv);359 this.titleWrapper = Html.div({}, this._getRightSideDecorators(), this.titleDiv); 381 360 382 361 this.div = Html.div({style: { width: '100%', height: '100%'}}, this.titleWrapper); … … 419 398 block.observeClick(function(e) { self.openPopup(e); }); 420 399 highlightWithMouse(this.div, block); 400 showWithMouse(this.div, this.arrows); 421 401 } 422 402 … … 427 407 } 428 408 }, 429 function(timetable, eventData, blockData , managementMode, managementActions){430 this.TimetableBlockBase(timetable , managementMode, managementActions);409 function(timetable, eventData, blockData){ 410 this.TimetableBlockBase(timetable); 431 411 432 412 this.eventData = eventData; 433 413 this.blockData = blockData; 434 414 this.margin = TimetableDefaults.blockMargin; 415 this.arrows = Html.span({}); 435 416 } 436 417 ); 418 419 420 type("TimetableBlockDisplayMixin",[], 421 { 422 _drawPopup: function() { 423 424 var self = this; 425 426 return new TimetableBlockPopup( 427 this.timetable, 428 this.eventData, 429 this.div, 430 function() { 431 self.div.dom.style.cursor = 'pointer'; 432 self.popupActive = false; 433 return self.popupAllowClose; 434 }, 435 function(color) { 436 var parent = self.div.getParent(); 437 parent.setStyle('backgroundColor', color); 438 } 439 ); 440 } 441 442 }); 443 444 type("TimetableBlockManagementMixin",[], 445 { 446 _drawPopup: function() { 447 448 var self = this; 449 450 return new TimetableBlockPopupManagement( 451 this.timetable, 452 this, 453 this.eventData, 454 this.div, 455 function() { 456 self.div.dom.style.cursor = 'pointer'; 457 self.popupActive = false; 458 return self.popupAllowClose; 459 }, 460 this.managementActions); 461 }, 462 463 _getRightSideDecorators: function() 464 { 465 return this.arrows; 466 } 467 468 }, 469 function() { 470 var arrowUp = Html.img({src: imageSrc('arrow_up'), title: $T('Move up')}); 471 var arrowDown = Html.img({src: imageSrc('arrow_down'), style:{paddingLeft: '5px'}, title: $T('Move down')}); 472 473 var self = this; 474 475 arrowUp.observeClick( 476 function(event) { 477 self.managementActions.moveEntryUpDown(self.eventData, true); 478 event.stopPropagation(); 479 return false; 480 }); 481 482 arrowDown.observeClick( 483 function(event) { 484 self.managementActions.moveEntryUpDown(self.eventData, false); 485 event.stopPropagation(); 486 return false; 487 }); 488 489 490 this.arrows = Html.div({style: {cssFloat: 'right', padding: '2px'}}, arrowUp, arrowDown); 491 }); 492 493 type("TimetableBlockWholeDayDisplay", ["TimetableBlockWholeDayBase", "TimetableBlockDisplayMixin"], 494 { 495 }, 496 function(timetable, eventData, blockData) { 497 this.TimetableBlockWholeDayBase(timetable, eventData, blockData); 498 }); 499 500 type("TimetableBlockWholeDayManagement", ["TimetableBlockWholeDayBase", "TimetableBlockManagementMixin"], 501 { 502 }, 503 function(timetable, eventData, blockData, managementActions) { 504 this.TimetableBlockWholeDayBase(timetable, eventData, blockData); 505 this.managementActions = managementActions; 506 this.TimetableBlockManagementMixin(); 507 508 this._getRightSideDecorators = TimetableBlockManagementMixin.prototype._getRightSideDecorators; 509 510 }); 511 512 513 type("TimetableBlockNormalDisplay", ["TimetableBlockNormal", "TimetableBlockDisplayMixin"], 514 { 515 }, 516 function(timetable, eventData, blockData, compactMode, printableVersion, detailLevel) 517 { 518 this.TimetableBlockNormal(timetable, eventData, blockData, compactMode, printableVersion, detailLevel); 519 }); 520 521 type("TimetableBlockNormalManagement", ["TimetableBlockNormal", "TimetableBlockManagementMixin"], 522 { 523 }, 524 function(timetable, eventData, blockData, compactMode, printableVersion, detailLevel, managementActions) 525 { 526 this.TimetableBlockNormal(timetable, eventData, blockData, compactMode, printableVersion, detailLevel); 527 this.managementActions = managementActions; 528 this.TimetableBlockManagementMixin(); 529 530 this._getRightSideDecorators = TimetableBlockManagementMixin.prototype._getRightSideDecorators; 531 532 }); 437 533 438 534 … … 688 784 689 785 690 type("TimetableBlockPopupManagement", ["TimetableBlockPopup"], { 786 type("TimetableBlockPopupManagement", ["TimetableBlockPopup"], 787 { 691 788 692 789 _getTime: function() { … … 884 981 this.managementActions = managementActions; 885 982 this.TimetableBlockPopup(timetable, eventData, blockDiv, closeHandler); 886 } 887 ); 983 }); 888 984 889 985 type("ContributionsPopup", ["ExclusivePopup"], { … … 1070 1166 each(blocks, function(blockData) { 1071 1167 var eventData = data[blockData.id]; 1072 var block = new TimetableBlockWholeDay(self.timetable, eventData, blockData, self.managementMode, self.managementActions); 1168 1169 var block; 1170 if (self.managementMode) { 1171 block = new TimetableBlockWholeDayManagement(self.timetable, eventData, blockData, self.managementActions); 1172 } else { 1173 block = new TimetableBlockWholeDayDisplay(self.timetable, eventData, blockData); 1174 } 1073 1175 wholeDayBlockDiv.append(block.draw(0, 100)); 1074 1176 blockAdded = true; … … 1124 1226 // compactMode = true; 1125 1227 1126 block = new TimetableBlock(self.timetable, eventData, blockData, compactMode, self.printableVersion, self.detail.get(), self.managementMode, self.managementActions); 1228 if (self.managementMode) { 1229 1230 block = new TimetableBlockNormalManagement(self.timetable, eventData, blockData, compactMode, self.printableVersion, self.detail.get(), self.managementActions); 1231 } else { 1232 block = new TimetableBlockNormalDisplay(self.timetable, eventData, blockData, compactMode, self.printableVersion, self.detail.get()); 1233 } 1127 1234 blockDiv.append(block.draw(leftPos, width)); 1128 1235 self.blocks.push(block); -
indico/htdocs/js/indico/Timetable/Management.js
rf25f07 r841c78 469 469 }, 470 470 471 472 /* 473 * Moves entries up or down, according to the "arrows" 474 */ 475 moveEntryUpDown: function(eventData, direction) { 476 /* 477 * true - up 478 * false - down 479 */ 480 481 info = this._getLocatorParams(eventData); 482 info.set('direction', direction); 483 484 var self = this; 485 486 var killProgress = IndicoUI.Dialogs.Util.progress(); 487 488 indicoRequest('schedule.moveEntryUpDown', 489 info, 490 function(result, error){ 491 killProgress(); 492 if (error) { 493 IndicoUtil.errorReport(error); 494 } else { 495 self.timetable._updateDay(result); 496 } 497 }); 498 499 }, 500 501 471 502 /* 472 503 * Iterates through entries and adds all of them … … 491 522 type("TopLevelTimeTableManagementActions", ["TimetableManagementActions"], 492 523 { 524 _getLocatorParams: function(eventData) { 525 var info = new WatchObject(); 526 info.set('scheduleEntryId', eventData.scheduleEntryId); 527 info.set('conference', eventData.conferenceId); 528 529 return info; 530 } 531 493 532 }, 494 533 function(timetable, eventInfo, contextInfo, isSessionTimetable) { … … 499 538 type("IntervalTimeTableManagementActions", ["TimetableManagementActions"], 500 539 { 540 _getLocatorParams: function(eventData) { 541 var info = new WatchObject(); 542 info.set('scheduleEntryId', eventData.scheduleEntryId); 543 info.set('conference', eventData.conferenceId); 544 info.set('sessionId', eventData.sessionId); 545 info.set('sessionSlotId', eventData.sessionSlotId); 546 547 return info; 548 } 549 501 550 }, 502 551 function(timetable, eventInfo, intervalInfo, isSessionTimetable) {
Note: See TracChangeset
for help on using the changeset viewer.
