taskjuggler 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +30 -0
- data/README.rdoc +1 -0
- data/data/tjp.vim +13 -9
- data/lib/taskjuggler/Allocation.rb +2 -2
- data/lib/taskjuggler/AttributeBase.rb +10 -0
- data/lib/taskjuggler/Attributes.rb +2 -8
- data/lib/taskjuggler/Journal.rb +20 -19
- data/lib/taskjuggler/PTNProxy.rb +14 -1
- data/lib/taskjuggler/ProjectFileParser.rb +3 -0
- data/lib/taskjuggler/ProjectFileScanner.rb +54 -44
- data/lib/taskjuggler/PropertyList.rb +32 -0
- data/lib/taskjuggler/PropertyTreeNode.rb +4 -0
- data/lib/taskjuggler/ResourceScenario.rb +53 -20
- data/lib/taskjuggler/RichText/Document.rb +7 -5
- data/lib/taskjuggler/RichText/Scanner.rb +38 -38
- data/lib/taskjuggler/RichText/TOCEntry.rb +1 -1
- data/lib/taskjuggler/TaskScenario.rb +78 -62
- data/lib/taskjuggler/TextParser.rb +4 -3
- data/lib/taskjuggler/TextParser/MacroTable.rb +3 -1
- data/lib/taskjuggler/TextParser/Scanner.rb +73 -58
- data/lib/taskjuggler/Tj3Config.rb +1 -1
- data/lib/taskjuggler/TjpSyntaxRules.rb +215 -67
- data/lib/taskjuggler/apps/Tj3Client.rb +1 -1
- data/lib/taskjuggler/daemon/ReportServer.rb +8 -1
- data/lib/taskjuggler/reports/ExportRE.rb +46 -0
- data/lib/taskjuggler/reports/MspXmlRE.rb +409 -0
- data/lib/taskjuggler/reports/Report.rb +29 -4
- data/lib/taskjuggler/reports/ReportBase.rb +0 -8
- data/lib/taskjuggler/reports/TableReport.rb +13 -3
- data/lib/taskjuggler/reports/TaskListRE.rb +1 -0
- data/lib/taskjuggler/reports/TjpExportRE.rb +1 -1
- data/manual/Rich_Text_Attributes +2 -2
- data/manual/Tutorial +15 -11
- data/manual/html/Day_To_Day_Juggling.html +1 -1
- data/manual/html/Getting_Started.html +1 -1
- data/manual/html/How_To_Contribute.html +1 -1
- data/manual/html/Installation.html +1 -1
- data/manual/html/Intro.html +1 -1
- data/manual/html/Reporting_Bugs.html +1 -1
- data/manual/html/Rich_Text_Attributes.html +1 -1
- data/manual/html/Software.html +1 -1
- data/manual/html/TaskJuggler_2x_Migration.html +1 -1
- data/manual/html/TaskJuggler_Internals.html +1 -1
- data/manual/html/The_TaskJuggler_Syntax.html +1 -1
- data/manual/html/Tutorial.html +5 -2
- data/manual/html/account.html +1 -1
- data/manual/html/account.task.html +1 -1
- data/manual/html/accountprefix.html +1 -1
- data/manual/html/accountreport.html +9 -3
- data/manual/html/accountroot.html +1 -1
- data/manual/html/active.html +1 -1
- data/manual/html/adopt.task.html +3 -3
- data/manual/html/aggregate.html +1 -1
- data/manual/html/alert.html +1 -1
- data/manual/html/alertlevels.html +1 -1
- data/manual/html/allocate.html +5 -2
- data/manual/html/alphabet.html +1 -1
- data/manual/html/alternative.html +1 -1
- data/manual/html/author.html +1 -1
- data/manual/html/balance.html +1 -1
- data/manual/html/booking.resource.html +1 -1
- data/manual/html/booking.task.html +1 -1
- data/manual/html/caption.html +1 -1
- data/manual/html/cellcolor.column.html +1 -1
- data/manual/html/celltext.column.html +43 -4
- data/manual/html/center.html +1 -1
- data/manual/html/charge.html +1 -1
- data/manual/html/chargeset.html +2 -2
- data/manual/html/columnid.html +6 -6
- data/manual/html/columns.html +1 -1
- data/manual/html/complete.html +1 -1
- data/manual/html/copyright.html +1 -1
- data/manual/html/credits.html +1 -1
- data/manual/html/currency.html +1 -1
- data/manual/html/currencyformat.html +1 -1
- data/manual/html/dailymax.html +1 -1
- data/manual/html/dailymin.html +1 -1
- data/manual/html/dailyworkinghours.html +1 -1
- data/manual/html/date.extend.html +1 -1
- data/manual/html/date.html +2 -2
- data/manual/html/definitions.html +1 -1
- data/manual/html/depends.html +1 -1
- data/manual/html/details.html +1 -1
- data/manual/html/disabled.html +1 -1
- data/manual/html/duration.html +1 -1
- data/manual/html/efficiency.html +1 -1
- data/manual/html/effort.html +1 -1
- data/manual/html/email.html +1 -1
- data/manual/html/enabled.html +1 -1
- data/manual/html/end.column.html +1 -1
- data/manual/html/end.html +1 -1
- data/manual/html/end.limit.html +1 -1
- data/manual/html/end.report.html +9 -3
- data/manual/html/end.timesheet.html +1 -1
- data/manual/html/endcredit.html +1 -1
- data/manual/html/epilog.html +1 -1
- data/manual/html/export.html +73 -5
- data/manual/html/extend.html +1 -1
- data/manual/html/fail.html +1 -1
- data/manual/html/fdl.html +1 -1
- data/manual/html/flags.account.html +1 -1
- data/manual/html/flags.html +1 -1
- data/manual/html/flags.journalentry.html +1 -1
- data/manual/html/flags.report.html +1 -1
- data/manual/html/flags.resource.html +1 -1
- data/manual/html/flags.statussheet.html +1 -1
- data/manual/html/flags.task.html +1 -1
- data/manual/html/flags.timesheet.html +1 -1
- data/manual/html/fontcolor.column.html +1 -1
- data/manual/html/footer.html +1 -1
- data/manual/html/formats.export.html +72 -0
- data/manual/html/formats.html +3 -3
- data/manual/html/functions.html +3 -3
- data/manual/html/gapduration.html +2 -2
- data/manual/html/gaplength.html +1 -1
- data/manual/html/halign.center.html +1 -1
- data/manual/html/halign.column.html +1 -1
- data/manual/html/halign.left.html +1 -1
- data/manual/html/halign.right.html +1 -1
- data/manual/html/hasalert.html +1 -1
- data/manual/html/header.html +1 -1
- data/manual/html/headline.html +1 -1
- data/manual/html/height.html +1 -1
- data/manual/html/hideaccount.html +1 -1
- data/manual/html/hidejournalentry.html +1 -1
- data/manual/html/hidereport.html +1 -1
- data/manual/html/hideresource.html +1 -1
- data/manual/html/hidetask.html +1 -1
- data/manual/html/icalreport.html +1 -1
- data/manual/html/include.macro.html +1 -1
- data/manual/html/include.project.html +1 -1
- data/manual/html/include.properties.html +1 -1
- data/manual/html/index.html +1 -1
- data/manual/html/inherit.extend.html +1 -1
- data/manual/html/interval1.html +2 -2
- data/manual/html/interval2.html +2 -2
- data/manual/html/interval3.html +2 -2
- data/manual/html/interval4.html +2 -2
- data/manual/html/isactive.html +1 -1
- data/manual/html/ischildof.html +1 -1
- data/manual/html/isdependencyof.html +1 -1
- data/manual/html/isdutyof.html +1 -1
- data/manual/html/isfeatureof.html +1 -1
- data/manual/html/isleaf.html +1 -1
- data/manual/html/ismilestone.html +1 -1
- data/manual/html/isongoing.html +1 -1
- data/manual/html/isresource.html +1 -1
- data/manual/html/isresponsibilityof.html +1 -1
- data/manual/html/istask.html +1 -1
- data/manual/html/journalattributes.html +1 -1
- data/manual/html/journalentry.html +1 -1
- data/manual/html/journalmode.html +11 -3
- data/manual/html/leaveallowance.html +1 -1
- data/manual/html/leaves.html +1 -1
- data/manual/html/left.html +1 -1
- data/manual/html/length.html +1 -1
- data/manual/html/limits.allocate.html +1 -1
- data/manual/html/limits.html +1 -1
- data/manual/html/limits.resource.html +1 -1
- data/manual/html/limits.task.html +1 -1
- data/manual/html/listitem.column.html +1 -1
- data/manual/html/listtype.column.html +1 -1
- data/manual/html/loadunit.html +2 -2
- data/manual/html/logicalexpression.html +1 -1
- data/manual/html/logicalflagexpression.html +1 -1
- data/manual/html/macro.html +1 -1
- data/manual/html/managers.html +1 -1
- data/manual/html/mandatory.html +1 -1
- data/manual/html/maxend.html +1 -1
- data/manual/html/maximum.html +1 -1
- data/manual/html/maxstart.html +1 -1
- data/manual/html/milestone.html +1 -1
- data/manual/html/minend.html +1 -1
- data/manual/html/minimum.html +1 -1
- data/manual/html/minstart.html +1 -1
- data/manual/html/monthlymax.html +1 -1
- data/manual/html/monthlymin.html +1 -1
- data/manual/html/navbar.html +5 -1
- data/manual/html/navigator.html +1 -1
- data/manual/html/newtask.html +1 -1
- data/manual/html/nikureport.html +1 -1
- data/manual/html/note.task.html +1 -1
- data/manual/html/now.html +1 -1
- data/manual/html/numberformat.html +1 -1
- data/manual/html/onend.html +1 -1
- data/manual/html/onstart.html +1 -1
- data/manual/html/opennodes.html +1 -1
- data/manual/html/overtime.booking.html +1 -1
- data/manual/html/period.column.html +1 -1
- data/manual/html/period.limit.html +1 -1
- data/manual/html/period.report.html +1 -1
- data/manual/html/period.task.html +1 -1
- data/manual/html/persistent.html +1 -1
- data/manual/html/precedes.html +1 -1
- data/manual/html/priority.html +1 -1
- data/manual/html/priority.timesheet.html +1 -1
- data/manual/html/project.html +1 -1
- data/manual/html/projectid.html +1 -1
- data/manual/html/projectid.task.html +1 -1
- data/manual/html/projectids.html +1 -1
- data/manual/html/projection.html +1 -1
- data/manual/html/prolog.html +1 -1
- data/manual/html/properties.html +1 -1
- data/manual/html/purge.html +8 -5
- data/manual/html/rate.html +1 -1
- data/manual/html/rate.resource.html +1 -1
- data/manual/html/reference.extend.html +1 -1
- data/manual/html/remaining.html +1 -1
- data/manual/html/replace.html +1 -1
- data/manual/html/reportprefix.html +1 -1
- data/manual/html/resource.html +1 -1
- data/manual/html/resourceattributes.html +1 -1
- data/manual/html/resourceprefix.html +1 -1
- data/manual/html/resourcereport.html +9 -3
- data/manual/html/resourceroot.html +1 -1
- data/manual/html/resources.limit.html +1 -1
- data/manual/html/responsible.html +1 -1
- data/manual/html/richtext.extend.html +1 -1
- data/manual/html/right.html +1 -1
- data/manual/html/rollupaccount.html +1 -1
- data/manual/html/rollupresource.html +1 -1
- data/manual/html/rolluptask.html +1 -1
- data/manual/html/scale.column.html +1 -1
- data/manual/html/scenario.html +1 -1
- data/manual/html/scenario.ical.html +1 -1
- data/manual/html/scenarios.export.html +1 -1
- data/manual/html/scenarios.html +1 -1
- data/manual/html/scenariospecific.extend.html +1 -1
- data/manual/html/scheduled.html +2 -2
- data/manual/html/scheduling.html +1 -1
- data/manual/html/select.html +1 -1
- data/manual/html/selfcontained.html +1 -1
- data/manual/html/shift.allocate.html +1 -1
- data/manual/html/shift.html +1 -1
- data/manual/html/shift.resource.html +1 -1
- data/manual/html/shift.task.html +1 -1
- data/manual/html/shift.timesheet.html +1 -1
- data/manual/html/shifts.allocate.html +1 -1
- data/manual/html/shifts.resource.html +1 -1
- data/manual/html/shifts.task.html +1 -1
- data/manual/html/shorttimeformat.html +1 -1
- data/manual/html/sloppy.booking.html +1 -1
- data/manual/html/sloppy.projection.html +1 -1
- data/manual/html/sortaccounts.html +1 -1
- data/manual/html/sortjournalentries.html +1 -1
- data/manual/html/sortresources.html +1 -1
- data/manual/html/sorttasks.html +1 -1
- data/manual/html/start.column.html +1 -1
- data/manual/html/start.html +1 -1
- data/manual/html/start.limit.html +1 -1
- data/manual/html/start.report.html +1 -1
- data/manual/html/startcredit.html +1 -1
- data/manual/html/status.statussheet.html +1 -1
- data/manual/html/status.timesheet.html +1 -1
- data/manual/html/statussheet.html +1 -1
- data/manual/html/statussheetreport.html +1 -1
- data/manual/html/strict.projection.html +1 -1
- data/manual/html/summary.html +1 -1
- data/manual/html/supplement.html +1 -1
- data/manual/html/supplement.resource.html +1 -1
- data/manual/html/supplement.task.html +1 -1
- data/manual/html/tagfile.html +1 -1
- data/manual/html/task.html +1 -1
- data/manual/html/task.statussheet.html +1 -1
- data/manual/html/task.timesheet.html +1 -1
- data/manual/html/taskattributes.html +1 -1
- data/manual/html/taskprefix.html +1 -1
- data/manual/html/taskreport.html +9 -3
- data/manual/html/taskroot.export.html +104 -0
- data/manual/html/taskroot.html +3 -3
- data/manual/html/text.extend.html +3 -3
- data/manual/html/textreport.html +9 -3
- data/manual/html/timeformat.html +1 -1
- data/manual/html/timeoff.nikureport.html +1 -1
- data/manual/html/timesheet.html +1 -1
- data/manual/html/timesheetreport.html +1 -1
- data/manual/html/timezone.export.html +1 -1
- data/manual/html/timezone.html +1 -1
- data/manual/html/timezone.report.html +1 -1
- data/manual/html/timezone.shift.html +1 -1
- data/manual/html/timingresolution.html +1 -1
- data/manual/html/title.column.html +1 -1
- data/manual/html/title.html +1 -1
- data/manual/html/toc.html +203 -189
- data/manual/html/tooltip.column.html +1 -1
- data/manual/html/tracereport.html +9 -3
- data/manual/html/trackingscenario.html +1 -1
- data/manual/html/treelevel.html +1 -1
- data/manual/html/vacation.html +1 -1
- data/manual/html/vacation.resource.html +1 -1
- data/manual/html/vacation.shift.html +1 -1
- data/manual/html/warn.html +1 -1
- data/manual/html/weeklymax.html +1 -1
- data/manual/html/weeklymin.html +1 -1
- data/manual/html/weekstartsmonday.html +1 -1
- data/manual/html/weekstartssunday.html +1 -1
- data/manual/html/width.column.html +1 -1
- data/manual/html/width.html +1 -1
- data/manual/html/work.html +1 -1
- data/manual/html/workinghours.project.html +1 -1
- data/manual/html/workinghours.resource.html +1 -1
- data/manual/html/workinghours.shift.html +1 -1
- data/manual/html/yearlyworkingdays.html +1 -1
- data/test/TestSuite/CSV-Reports/project-1.tji +0 -6
- data/test/TestSuite/CSV-Reports/refs/alert.csv +0 -7
- data/test/TestSuite/CSV-Reports/refs/celltext.csv +0 -7
- data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +0 -3
- data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +0 -7
- data/test/TestSuite/CSV-Reports/refs/sortBy_duration.down.csv +0 -7
- data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +0 -7
- data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +0 -7
- data/test/TestSuite/CSV-Reports/refs/taskreport.csv +0 -7
- data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +0 -18
- data/test/TestSuite/CSV-Reports/refs/weekly.csv +0 -1
- data/test/TestSuite/HTML-Reports/Alerts-2.tjp +46 -0
- data/test/TestSuite/Scheduler/Correct/purge.tjp +30 -0
- data/test/TestSuite/Syntax/Correct/Export.tjp +8 -2
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +0 -1
- metadata +16 -10
- data/test/TestSuite/CSV-Reports/refs/taskcounter.csv +0 -9
data/CHANGELOG
CHANGED
|
@@ -1,3 +1,33 @@
|
|
|
1
|
+
= Release 3.3.0 (2012-07-22)
|
|
2
|
+
|
|
3
|
+
== New Features
|
|
4
|
+
|
|
5
|
+
* Support 'purge' in export report definitions.
|
|
6
|
+
* Allow 'export' to be used as nested report.
|
|
7
|
+
* Export scheduled project as Microsoft Project XML format.
|
|
8
|
+
* Some speed improvements of the TJP parser.
|
|
9
|
+
* Support nested macro definitions.
|
|
10
|
+
* Improved scheduling performance.
|
|
11
|
+
* 'effortleft' and 'effortdone' columns now work for resources as well.
|
|
12
|
+
* Adding 'status_dep' and 'alerts_dep' journalmode options.
|
|
13
|
+
|
|
14
|
+
== Bug Fixes
|
|
15
|
+
|
|
16
|
+
* Don't crash when 'complete' is reported for container w/o real sub-tasks.
|
|
17
|
+
* Fix 'celltext' documentation.
|
|
18
|
+
* Properly compute cost from tasks when reported in a resource context.
|
|
19
|
+
* Ensure that there are no duplicated (by adoption) tasks in a report.
|
|
20
|
+
* Clarify start/end slot clipping for tasks with 'allocate'.
|
|
21
|
+
* Don't miss certain tasks in 'inputs' and 'targets' list.
|
|
22
|
+
* Don't crash when gantt report interval is outside of tasks.
|
|
23
|
+
* Allow macro definitions at end of file.
|
|
24
|
+
* Don't silently force interval durations to align with timing resolution.
|
|
25
|
+
* Make @none work for logical expressions.
|
|
26
|
+
* Support 'purge' for a specific scenario.
|
|
27
|
+
* Properly escape " in plain text strings in export reports.
|
|
28
|
+
* Make nested 'supplement' work with absolute IDs.
|
|
29
|
+
|
|
30
|
+
|
|
1
31
|
= Release 3.2.0 (2012-04-30)
|
|
2
32
|
|
|
3
33
|
== New Features
|
data/README.rdoc
CHANGED
|
@@ -74,6 +74,7 @@ browser is all you need for your work.
|
|
|
74
74
|
* Powerful project description language with macro support
|
|
75
75
|
* Scales well on multi-core or multi-CPU systems
|
|
76
76
|
* Support for project management teams and revision control systems
|
|
77
|
+
* Data export to Microsoft Project and Computer Associates Clarity
|
|
77
78
|
|
|
78
79
|
== Web Publishing and Groupware Functions
|
|
79
80
|
|
data/data/tjp.vim
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
" Vim syntax file
|
|
2
2
|
" Language: TaskJuggler
|
|
3
3
|
" Maintainer: TaskJuggler Developers <taskjuggler-devel@googlegroups.com>
|
|
4
|
-
" Last Change: 2012-
|
|
4
|
+
" Last Change: 2012-07-22 20:00:43 +0200
|
|
5
5
|
" This file was automatically generated by VimSyntax.rb
|
|
6
6
|
|
|
7
7
|
if exists("b:current_syntax")
|
|
@@ -256,12 +256,16 @@ syn keyword tjp_details details contained
|
|
|
256
256
|
hi def link tjp_details Type
|
|
257
257
|
syn keyword tjp_definitions definitions contained
|
|
258
258
|
hi def link tjp_definitions Type
|
|
259
|
+
syn keyword tjp_formats_export formats contained
|
|
260
|
+
hi def link tjp_formats_export Type
|
|
259
261
|
syn keyword tjp_resourceattributes resourceattributes contained
|
|
260
262
|
hi def link tjp_resourceattributes Type
|
|
261
263
|
syn keyword tjp_scenarios_export scenarios contained
|
|
262
264
|
hi def link tjp_scenarios_export Type
|
|
263
265
|
syn keyword tjp_taskattributes taskattributes contained
|
|
264
266
|
hi def link tjp_taskattributes Type
|
|
267
|
+
syn keyword tjp_taskroot_export taskroot contained
|
|
268
|
+
hi def link tjp_taskroot_export Type
|
|
265
269
|
syn keyword tjp_timezone_export timezone contained
|
|
266
270
|
hi def link tjp_timezone_export Type
|
|
267
271
|
syn keyword tjp_date_extend date contained
|
|
@@ -370,6 +374,8 @@ syn keyword tjp_weeklymax weeklymax contained
|
|
|
370
374
|
hi def link tjp_weeklymax Type
|
|
371
375
|
syn keyword tjp_weeklymin weeklymin contained
|
|
372
376
|
hi def link tjp_weeklymin Type
|
|
377
|
+
syn keyword tjp_loadunit loadunit contained
|
|
378
|
+
hi def link tjp_loadunit Type
|
|
373
379
|
syn keyword tjp_logicalexpression @
|
|
374
380
|
hi def link tjp_logicalexpression Type
|
|
375
381
|
syn keyword tjp_navigator navigator contained
|
|
@@ -440,8 +446,6 @@ syn keyword tjp_journalmode journalmode contained
|
|
|
440
446
|
hi def link tjp_journalmode Type
|
|
441
447
|
syn keyword tjp_left left contained
|
|
442
448
|
hi def link tjp_left Type
|
|
443
|
-
syn keyword tjp_loadunit loadunit contained
|
|
444
|
-
hi def link tjp_loadunit Type
|
|
445
449
|
syn keyword tjp_opennodes opennodes contained
|
|
446
450
|
hi def link tjp_opennodes Type
|
|
447
451
|
syn keyword tjp_prolog prolog contained
|
|
@@ -621,9 +625,9 @@ syn match tjptime /\s\d\{1,2}:\d\d\(:\d\d\)\?/
|
|
|
621
625
|
|
|
622
626
|
syn cluster tjpcommon contains=tjpcomment,tjpdate,tjptime,tjpstring,tjpnumber
|
|
623
627
|
syn region tjpblk_account start=/^\s*account\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_account,tjp_account,tjpblk_account,tjp_aggregate,tjp_credits,tjp_flags_account
|
|
624
|
-
syn region tjpblk_accountreport start=/^\s*accountreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_accountreport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_height,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_tracereport,tjpblk_tracereport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title,tjp_width
|
|
628
|
+
syn region tjpblk_accountreport start=/^\s*accountreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_accountreport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_height,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_export,tjpblk_export,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_tracereport,tjpblk_tracereport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title,tjp_width
|
|
625
629
|
syn region tjpblk_allocate start=/^\s*allocate\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_allocate,tjp_alternative,tjp_select,tjp_persistent,tjp_mandatory,tjp_shifts_allocate contained
|
|
626
|
-
syn region tjpblk_export start=/^\s*export\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_export,tjp_definitions,tjp_hideresource,tjp_hidetask,tjp_end_report,tjp_period_report,tjp_start_report,tjp_resourceattributes,tjp_rollupresource,tjp_rolluptask,tjp_scenarios_export,tjp_taskattributes,tjp_timezone_export
|
|
630
|
+
syn region tjpblk_export start=/^\s*export\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_export,tjp_definitions,tjp_formats_export,tjp_hideresource,tjp_hidetask,tjp_loadunit,tjp_purge,tjp_end_report,tjp_period_report,tjp_accountreport,tjpblk_accountreport,tjp_export,tjpblk_export,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_tracereport,tjpblk_tracereport,tjp_start_report,tjp_resourceattributes,tjp_rollupresource,tjp_rolluptask,tjp_scenarios_export,tjp_taskattributes,tjp_taskroot_export,tjp_timezone_export
|
|
627
631
|
syn region tjpblk_date_extend start=/^\s*date\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_date_extend,tjp_inherit_extend,tjp_scenariospecific_extend contained
|
|
628
632
|
syn region tjpblk_reference_extend start=/^\s*reference\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_reference_extend,tjp_inherit_extend,tjp_scenariospecific_extend contained
|
|
629
633
|
syn region tjpblk_richtext_extend start=/^\s*richtext\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_richtext_extend,tjp_inherit_extend,tjp_scenariospecific_extend contained
|
|
@@ -647,7 +651,7 @@ syn region tjpblk_include_properties start=/^\s*include\s.*{\s*$/ end=/^\s*}\s*$
|
|
|
647
651
|
syn region tjpblk_columns start=/^\s*columns\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_columns,tjp_celltext_column,tjp_cellcolor_column,tjp_end_column,tjp_fontcolor_column,tjp_halign_column,tjp_listitem_column,tjp_listtype_column,tjp_period_column,tjp_scale_column,tjp_start_column,tjp_title_column,tjp_tooltip_column,tjp_width_column contained
|
|
648
652
|
syn region tjpblk_resource start=/^\s*resource\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_resource,tjp_email,tjp_journalentry,tjpblk_journalentry,tjp_purge,tjp_resource,tjpblk_resource,tjp_chargeset,tjp_efficiency,tjp_flags_resource,tjp_booking_resource,tjpblk_booking_resource,tjp_fail,tjp_leaveallowance,tjp_leaves,tjp_limits_resource,tjpblk_limits_resource,tjp_managers,tjp_rate_resource,tjp_shifts_resource,tjp_vacation_resource,tjp_warn,tjp_workinghours_resource,tjp_supplement_resource,tjpblk_supplement_resource
|
|
649
653
|
syn region tjpblk_supplement_resource start=/^\s*supplement resource\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_supplement_resource,tjp_email,tjp_journalentry,tjpblk_journalentry,tjp_purge,tjp_resource,tjpblk_resource,tjp_chargeset,tjp_efficiency,tjp_flags_resource,tjp_booking_resource,tjpblk_booking_resource,tjp_fail,tjp_leaveallowance,tjp_leaves,tjp_limits_resource,tjpblk_limits_resource,tjp_managers,tjp_rate_resource,tjp_shifts_resource,tjp_vacation_resource,tjp_warn,tjp_workinghours_resource,tjp_supplement_resource,tjpblk_supplement_resource,tjp_supplement contained
|
|
650
|
-
syn region tjpblk_resourcereport start=/^\s*resourcereport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_resourcereport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_height,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_tracereport,tjpblk_tracereport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title,tjp_width
|
|
654
|
+
syn region tjpblk_resourcereport start=/^\s*resourcereport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_resourcereport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_height,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_export,tjpblk_export,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_tracereport,tjpblk_tracereport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title,tjp_width
|
|
651
655
|
syn region tjpblk_booking_resource start=/^\s*booking\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_booking_resource,tjp_overtime_booking,tjp_sloppy_booking contained
|
|
652
656
|
syn region tjpblk_limits_resource start=/^\s*limits\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_limits_resource,tjp_dailymax,tjpblk_dailymax,tjp_dailymin,tjpblk_dailymin,tjp_maximum,tjpblk_maximum,tjp_minimum,tjpblk_minimum,tjp_monthlymax,tjpblk_monthlymax,tjp_monthlymin,tjpblk_monthlymin,tjp_weeklymax,tjpblk_weeklymax,tjp_weeklymin,tjpblk_weeklymin contained
|
|
653
657
|
syn region tjpblk_scenario start=/^\s*scenario\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_scenario,tjp_active,tjp_scenario,tjpblk_scenario contained
|
|
@@ -659,17 +663,17 @@ syn region tjpblk_task_statussheet start=/^\s*task\s.*{\s*$/ end=/^\s*}\s*$/ tra
|
|
|
659
663
|
syn region tjpblk_tagfile start=/^\s*tagfile\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_tagfile,tjp_hideresource,tjp_hidetask,tjp_rollupresource,tjp_rolluptask
|
|
660
664
|
syn region tjpblk_task start=/^\s*task\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_task,tjp_adopt_task,tjp_journalentry,tjpblk_journalentry,tjp_note_task,tjp_purge,tjp_supplement_task,tjpblk_supplement_task,tjp_task,tjpblk_task,tjp_allocate,tjpblk_allocate,tjp_booking_task,tjpblk_booking_task,tjp_charge,tjp_chargeset,tjp_complete,tjp_depends,tjpblk_depends,tjp_duration,tjp_effort,tjp_end,tjp_flags_task,tjp_fail,tjp_length,tjp_limits_task,tjpblk_limits_task,tjp_maxend,tjp_maxstart,tjp_milestone,tjp_minend,tjp_minstart,tjp_period_task,tjp_precedes,tjpblk_precedes,tjp_priority,tjp_projectid_task,tjp_responsible,tjp_scheduled,tjp_scheduling,tjp_shifts_task,tjp_start,tjp_warn
|
|
661
665
|
syn region tjpblk_supplement_task start=/^\s*supplement task\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_supplement_task,tjp_adopt_task,tjp_journalentry,tjpblk_journalentry,tjp_note_task,tjp_purge,tjp_supplement_task,tjpblk_supplement_task,tjp_task,tjpblk_task,tjp_allocate,tjpblk_allocate,tjp_booking_task,tjpblk_booking_task,tjp_charge,tjp_chargeset,tjp_complete,tjp_depends,tjpblk_depends,tjp_duration,tjp_effort,tjp_end,tjp_flags_task,tjp_fail,tjp_length,tjp_limits_task,tjpblk_limits_task,tjp_maxend,tjp_maxstart,tjp_milestone,tjp_minend,tjp_minstart,tjp_period_task,tjp_precedes,tjpblk_precedes,tjp_priority,tjp_projectid_task,tjp_responsible,tjp_scheduled,tjp_scheduling,tjp_shifts_task,tjp_start,tjp_warn,tjp_supplement contained
|
|
662
|
-
syn region tjpblk_taskreport start=/^\s*taskreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_taskreport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_height,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_tracereport,tjpblk_tracereport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title,tjp_width
|
|
666
|
+
syn region tjpblk_taskreport start=/^\s*taskreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_taskreport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_height,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_export,tjpblk_export,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_tracereport,tjpblk_tracereport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title,tjp_width
|
|
663
667
|
syn region tjpblk_booking_task start=/^\s*booking\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_booking_task,tjp_overtime_booking,tjp_sloppy_booking contained
|
|
664
668
|
syn region tjpblk_depends start=/^\s*depends\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_depends,tjp_gapduration,tjp_gaplength,tjp_onend,tjp_onstart contained
|
|
665
669
|
syn region tjpblk_limits_task start=/^\s*limits\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_limits_task,tjp_dailymax,tjpblk_dailymax,tjp_dailymin,tjpblk_dailymin,tjp_maximum,tjpblk_maximum,tjp_minimum,tjpblk_minimum,tjp_monthlymax,tjpblk_monthlymax,tjp_monthlymin,tjpblk_monthlymin,tjp_weeklymax,tjpblk_weeklymax,tjp_weeklymin,tjpblk_weeklymin contained
|
|
666
670
|
syn region tjpblk_precedes start=/^\s*precedes\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_precedes,tjp_gapduration,tjp_gaplength,tjp_onend,tjp_onstart contained
|
|
667
|
-
syn region tjpblk_textreport start=/^\s*textreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_textreport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_height,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_tracereport,tjpblk_tracereport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title,tjp_width
|
|
671
|
+
syn region tjpblk_textreport start=/^\s*textreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_textreport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_height,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_export,tjpblk_export,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_tracereport,tjpblk_tracereport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title,tjp_width
|
|
668
672
|
syn region tjpblk_timesheet start=/^\s*timesheet\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_timesheet,tjp_newtask,tjpblk_newtask,tjp_shift_timesheet,tjp_status_timesheet,tjpblk_status_timesheet,tjp_task_timesheet,tjpblk_task_timesheet
|
|
669
673
|
syn region tjpblk_newtask start=/^\s*newtask\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_newtask,tjp_end_timesheet,tjp_priority_timesheet,tjp_remaining,tjp_status_timesheet,tjpblk_status_timesheet,tjp_work contained
|
|
670
674
|
syn region tjpblk_task_timesheet start=/^\s*task\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_task_timesheet,tjp_end_timesheet,tjp_priority_timesheet,tjp_remaining,tjp_status_timesheet,tjpblk_status_timesheet,tjp_work contained
|
|
671
675
|
syn region tjpblk_timesheetreport start=/^\s*timesheetreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_timesheetreport,tjp_hideresource,tjp_hidetask,tjp_end_report,tjp_period_report,tjp_start_report,tjp_sortresources,tjp_sorttasks
|
|
672
|
-
syn region tjpblk_tracereport start=/^\s*tracereport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_tracereport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_height,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_tracereport,tjpblk_tracereport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title,tjp_width
|
|
676
|
+
syn region tjpblk_tracereport start=/^\s*tracereport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_tracereport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_height,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_export,tjpblk_export,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_tracereport,tjpblk_tracereport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title,tjp_width
|
|
673
677
|
syn region tjpblk_status_timesheet start=/^\s*status\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_status_timesheet,tjp_details,tjp_flags_timesheet,tjp_summary contained
|
|
674
678
|
syn region tjpblk_macro start=/macro\s\+\h\w*\s*\[/ end=/\]$/ transparent fold contains=ALL
|
|
675
679
|
syn region tjpstring start=/"/ skip=/\\"/ end=/"/
|
|
@@ -90,9 +90,9 @@ class TaskJuggler
|
|
|
90
90
|
when 1 # lowest alloc probability
|
|
91
91
|
x['criticalness', scenarioIdx] <=> y['criticalness', scenarioIdx]
|
|
92
92
|
when 2 # lowest allocated load
|
|
93
|
-
x
|
|
93
|
+
x.bookedEffort(scenarioIdx) <=> y.bookedEffort(scenarioIdx)
|
|
94
94
|
when 3 # hightes allocated load
|
|
95
|
-
y
|
|
95
|
+
y.bookedEffort(scenarioIdx) <=> x.bookedEffort(scenarioIdx)
|
|
96
96
|
else
|
|
97
97
|
raise "Unknown selection mode #{@selectionMode}"
|
|
98
98
|
end
|
|
@@ -154,6 +154,16 @@ class TaskJuggler
|
|
|
154
154
|
@type.id + " " + get.to_s
|
|
155
155
|
end
|
|
156
156
|
|
|
157
|
+
private
|
|
158
|
+
|
|
159
|
+
def quotedString(str)
|
|
160
|
+
if str.include?("\n")
|
|
161
|
+
"-8<-\n#{str}\n->8-"
|
|
162
|
+
else
|
|
163
|
+
"\"#{str.gsub("\"", '\"')}\""
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
157
167
|
end
|
|
158
168
|
|
|
159
169
|
# The ListAttributeBase is a specialized form of AttributeBase for a list of
|
|
@@ -543,13 +543,7 @@ class TaskJuggler
|
|
|
543
543
|
end
|
|
544
544
|
|
|
545
545
|
def to_tjp
|
|
546
|
-
|
|
547
|
-
if inputText[-1] == ?\n
|
|
548
|
-
"#{@type.id} -8<-\n#{inputText}\n->8-"
|
|
549
|
-
else
|
|
550
|
-
escaped = inputText.gsub("\"", '\"')
|
|
551
|
-
"#{@type.id} \"#{escaped}\""
|
|
552
|
-
end
|
|
546
|
+
"#{@type.id} #{quotedString(get.richText.inputText)}"
|
|
553
547
|
end
|
|
554
548
|
|
|
555
549
|
end
|
|
@@ -623,7 +617,7 @@ class TaskJuggler
|
|
|
623
617
|
end
|
|
624
618
|
|
|
625
619
|
def to_tjp
|
|
626
|
-
"#{@type.id}
|
|
620
|
+
"#{@type.id} #{quotedString(get)}"
|
|
627
621
|
end
|
|
628
622
|
|
|
629
623
|
end
|
data/lib/taskjuggler/Journal.rb
CHANGED
|
@@ -433,7 +433,7 @@ class TaskJuggler
|
|
|
433
433
|
entries.uniq!
|
|
434
434
|
end
|
|
435
435
|
end
|
|
436
|
-
when :status_down
|
|
436
|
+
when :status_down, :status_dep
|
|
437
437
|
# In this mode only the last entries before the query end date for
|
|
438
438
|
# each task (incl. sub tasks) are included.
|
|
439
439
|
if query.property
|
|
@@ -451,7 +451,7 @@ class TaskJuggler
|
|
|
451
451
|
entries.uniq!
|
|
452
452
|
end
|
|
453
453
|
end
|
|
454
|
-
when :alerts_down
|
|
454
|
+
when :alerts_down, :alerts_dep
|
|
455
455
|
# In this mode only the last entries before the query end date for
|
|
456
456
|
# each task (incl. sub tasks) and only the ones with the highest alert
|
|
457
457
|
# level are included.
|
|
@@ -687,27 +687,28 @@ class TaskJuggler
|
|
|
687
687
|
latestDate = e.date if latestDate.nil? || e.date > latestDate
|
|
688
688
|
# Find the highest alert level.
|
|
689
689
|
maxAlertLevel = e.alertLevel if e.alertLevel > maxAlertLevel
|
|
690
|
-
cEntries << e
|
|
690
|
+
cEntries << e unless cEntries.include?(e)
|
|
691
691
|
end
|
|
692
692
|
end
|
|
693
693
|
|
|
694
694
|
# Only Task properties have dependencies.
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
695
|
+
if (query.journalMode == :status_dep ||
|
|
696
|
+
query.journalMode == :alerts_dep) && property.is_a?(Task)
|
|
697
|
+
# Now gather all current entries of the dependency properties and find
|
|
698
|
+
# the date that is closest to and right before the given _date_.
|
|
699
|
+
property['startpreds', query.scenarioIdx].each do |p, onEnd|
|
|
700
|
+
# We only follow end->start dependencies.
|
|
701
|
+
next unless onEnd
|
|
702
|
+
|
|
703
|
+
currentEntriesR(date, p, minLevel, minDate, query).each do |e|
|
|
704
|
+
# Find the date of the most recent entry.
|
|
705
|
+
latestDate = e.date if latestDate.nil? || e.date > latestDate
|
|
706
|
+
# Find the highest alert level.
|
|
707
|
+
maxAlertLevel = e.alertLevel if e.alertLevel > maxAlertLevel
|
|
708
|
+
cEntries << e unless cEntries.include?(e)
|
|
709
|
+
end
|
|
710
|
+
end
|
|
711
|
+
end
|
|
711
712
|
|
|
712
713
|
if !pEntries.empty? && (maxPAlertLevel > maxAlertLevel ||
|
|
713
714
|
latestDate.nil? ||
|
data/lib/taskjuggler/PTNProxy.rb
CHANGED
|
@@ -25,13 +25,26 @@ class TaskJuggler
|
|
|
25
25
|
|
|
26
26
|
def initialize(ptn, parent)
|
|
27
27
|
@ptn = ptn
|
|
28
|
-
raise "Adopted
|
|
28
|
+
raise "Adopted properties must have a parent" unless parent
|
|
29
29
|
@parent = parent
|
|
30
30
|
@indext = nil
|
|
31
31
|
@tree = nil
|
|
32
32
|
@level = -1
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
+
# Return the logical ID of this node respesting adoptions. For PropertySet
|
|
36
|
+
# objects with a flat namespace, this is just the ID. Otherwise, the
|
|
37
|
+
# logical ID is composed of all IDs from the root node to this node,
|
|
38
|
+
# separating the IDs by a dot. In contrast to PropertyTreeNode::fullId()
|
|
39
|
+
# the logicalId takes the aption path into account.
|
|
40
|
+
def logicalId
|
|
41
|
+
if @ptn.propertySet.flatNamespace
|
|
42
|
+
@ptn.id
|
|
43
|
+
else
|
|
44
|
+
@parent.logicalId + '.' + @ptn.id[(@ptn.id.rindex('.') + 1).. -1]
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
35
48
|
def set(attribute, val)
|
|
36
49
|
if attribute == 'index'
|
|
37
50
|
@index = val
|
|
@@ -22,26 +22,26 @@ class TaskJuggler
|
|
|
22
22
|
def initialize(masterFile)
|
|
23
23
|
tokenPatterns = [
|
|
24
24
|
# Any white spaces
|
|
25
|
-
[ nil, /\s+/, :tjp, method('newPos') ],
|
|
25
|
+
[ nil, '\s+', /\s+/, :tjp, method('newPos') ],
|
|
26
26
|
|
|
27
27
|
# Single line comments starting with #
|
|
28
|
-
[ nil, /#.*\n?/, :tjp, method('newPos') ],
|
|
28
|
+
[ nil, '#.*\n?', /#.*\n?/, :tjp, method('newPos') ],
|
|
29
29
|
|
|
30
30
|
# C++ style single line comments starting with //
|
|
31
|
-
[ nil, /\/\/.*\n?/, :tjp, method('newPos') ],
|
|
31
|
+
[ nil, '//.*\n?', /\/\/.*\n?/, :tjp, method('newPos') ],
|
|
32
32
|
|
|
33
33
|
# C style single line comment /* .. */.
|
|
34
|
-
[ nil, /\/\*.*\*\//, :tjp, method('newPos') ],
|
|
34
|
+
[ nil, '/\*.*\*/', /\/\*.*\*\//, :tjp, method('newPos') ],
|
|
35
35
|
|
|
36
36
|
# C style multi line comment: We need three patterns here. The first
|
|
37
37
|
# one is for the start of the string. It switches the scanner mode to
|
|
38
38
|
# the :cppComment mode.
|
|
39
|
-
[ nil, /\/\*([^*]*[^\/]|.*)\n/, :tjp, method('startComment') ],
|
|
39
|
+
[ nil, '/\*([^*]*[^/]|.*)\n', /\/\*([^*]*[^\/]|.*)\n/, :tjp, method('startComment') ],
|
|
40
40
|
# This is the string end pattern. It switches back to tjp mode.
|
|
41
|
-
[ nil, /.*\*\//, :cppComment, method('endComment') ],
|
|
41
|
+
[ nil, '.*\*/', /.*\*\//, :cppComment, method('endComment') ],
|
|
42
42
|
# This pattern matches string lines that contain neither the start,
|
|
43
43
|
# nor the end of the string.
|
|
44
|
-
[ nil, /^.*\n/, :cppComment ],
|
|
44
|
+
[ nil, '^.*\n', /^.*\n/, :cppComment ],
|
|
45
45
|
|
|
46
46
|
# Macro Call: This case is more complicated because we want to replace
|
|
47
47
|
# macro calls inside of numbers, strings and identifiers. For this to
|
|
@@ -54,100 +54,102 @@ class TaskJuggler
|
|
|
54
54
|
# with neither start nor end. Macro calls inside of strings need a
|
|
55
55
|
# special start pattern that is active in the string modes. Both
|
|
56
56
|
# patterns switch the scanner to macroCall mode.
|
|
57
|
-
[ nil, /([-a-zA-Z_0-9>:.+]*|"(\\"|[^"])*?|'(\\'|[^'])*?)?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
|
|
57
|
+
[ nil, '([-a-zA-Z_0-9>:.+]*|"(\\\\"|[^"])*?|\'(\\\\\'|[^\'])*?)?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\\\"|[^"])*")*', /([-a-zA-Z_0-9>:.+]*|"(\\"|[^"])*?|'(\\'|[^'])*?)?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
|
|
58
58
|
:tjp, method('startMacroCall') ],
|
|
59
59
|
# This pattern is similar to the previous one, but is active inside of
|
|
60
60
|
# multi-line strings. The corresponding rule for sizzors strings
|
|
61
61
|
# can be found below.
|
|
62
|
-
[ nil,
|
|
62
|
+
[ nil, '(\\\\"|[^"])*?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\\\"|[^"])*")*',
|
|
63
|
+
/(\\"|[^"])*?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
|
|
63
64
|
:dqString, method('startMacroCall') ],
|
|
64
|
-
[ nil,
|
|
65
|
+
[ nil, '(\\\\\'|[^\'])*?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\\\"|[^"])*")*',
|
|
66
|
+
/(\\'|[^'])*?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
|
|
65
67
|
:sqString, method('startMacroCall') ],
|
|
66
68
|
# This pattern matches the end of a macro call. It injects the prefix
|
|
67
69
|
# and the expanded macro into the scanner again. The mode is restored
|
|
68
70
|
# to the previous mode.
|
|
69
|
-
[ nil, /(\s*"(\\"|[^"])*")*\s*\}/, :macroCall, method('endMacroCall') ],
|
|
71
|
+
[ nil, '(\s*"(\\\\"|[^"])*")*\s*\}', /(\s*"(\\"|[^"])*")*\s*\}/, :macroCall, method('endMacroCall') ],
|
|
70
72
|
# This pattern collects macro call arguments in lines that contain
|
|
71
73
|
# neither the start nor the end of the macro.
|
|
72
|
-
[ nil, /.*\n/, :macroCall, method('midMacroCall') ],
|
|
74
|
+
[ nil, '.*\n', /.*\n/, :macroCall, method('midMacroCall') ],
|
|
73
75
|
|
|
74
76
|
# Environment variable reference. This is similar to the macro call,
|
|
75
77
|
# but the it can only extend within the starting line.
|
|
76
|
-
[ nil, /([-a-zA-Z_0-9>:.+]*|"(\\"|[^"])*?|'(\\'|[^'])*?)?\$\([A-Z_][A-Z_0-9]*\)/,
|
|
78
|
+
[ nil, '([-a-zA-Z_0-9>:.+]*|"(\\\\"|[^"])*?|\'(\\\\\'|[^\'])*?)?\$\([A-Z_][A-Z_0-9]*\)', /([-a-zA-Z_0-9>:.+]*|"(\\"|[^"])*?|'(\\'|[^'])*?)?\$\([A-Z_][A-Z_0-9]*\)/,
|
|
77
79
|
:tjp, method('environmentVariable') ],
|
|
78
80
|
# An ID with a colon suffix: foo:
|
|
79
|
-
[ :ID_WITH_COLON, /[a-zA-Z_]\w*:/, :tjp, method('chop') ],
|
|
81
|
+
[ :ID_WITH_COLON, '[a-zA-Z_]\w*:', /[a-zA-Z_]\w*:/, :tjp, method('chop') ],
|
|
80
82
|
|
|
81
83
|
# An absolute ID: a.b.c
|
|
82
|
-
[ :ABSOLUTE_ID, /[a-zA-Z_]\w*(\.[a-zA-Z_]\w*)+/ ],
|
|
84
|
+
[ :ABSOLUTE_ID, '[a-zA-Z_]\w*(\.[a-zA-Z_]\w*)+', /[a-zA-Z_]\w*(\.[a-zA-Z_]\w*)+/ ],
|
|
83
85
|
|
|
84
86
|
# A normal ID: bar
|
|
85
|
-
[ :ID, /[a-zA-Z_]\w*/ ],
|
|
87
|
+
[ :ID, '[a-zA-Z_]\w*', /[a-zA-Z_]\w*/ ],
|
|
86
88
|
|
|
87
89
|
# A date
|
|
88
|
-
[ :DATE, /\d{4}-\d{1,2}-\d{1,2}(-\d{1,2}:\d{1,2}(:\d{1,2})?(-[-+]?\d{4})?)?/, :tjp, method('to_date') ],
|
|
90
|
+
[ :DATE, '\d{4}-\d{1,2}-\d{1,2}(-\d{1,2}:\d{1,2}(:\d{1,2})?(-[-+]?\d{4})?)?', /\d{4}-\d{1,2}-\d{1,2}(-\d{1,2}:\d{1,2}(:\d{1,2})?(-[-+]?\d{4})?)?/, :tjp, method('to_date') ],
|
|
89
91
|
|
|
90
92
|
# A time of day
|
|
91
|
-
[ :TIME, /\d{1,2}:\d{2}/, :tjp, method('to_time') ],
|
|
93
|
+
[ :TIME, '\d{1,2}:\d{2}', /\d{1,2}:\d{2}/, :tjp, method('to_time') ],
|
|
92
94
|
|
|
93
95
|
# A floating point number (e. g. 3.143)
|
|
94
|
-
[ :FLOAT, /\d*\.\d+/, :tjp, method('to_f') ],
|
|
96
|
+
[ :FLOAT, '\d*\.\d+', /\d*\.\d+/, :tjp, method('to_f') ],
|
|
95
97
|
|
|
96
98
|
# An integer number
|
|
97
|
-
[ :INTEGER, /\d+/, :tjp, method('to_i') ],
|
|
99
|
+
[ :INTEGER, '\d+', /\d+/, :tjp, method('to_i') ],
|
|
98
100
|
|
|
99
101
|
# Multi line string enclosed with double quotes. The string may
|
|
100
102
|
# contain double quotes prefixed by a backslash. The first rule
|
|
101
103
|
# switches the scanner to dqString mode.
|
|
102
|
-
[ 'nil', /"(\\"|[^"])*/, :tjp, method('startStringDQ') ],
|
|
104
|
+
[ 'nil', '"(\\\\"|[^"])*', /"(\\"|[^"])*/, :tjp, method('startStringDQ') ],
|
|
103
105
|
# Any line not containing the start or end.
|
|
104
|
-
[ 'nil', /^(\\"|[^"])*\n/, :dqString, method('midStringDQ') ],
|
|
106
|
+
[ 'nil', '^(\\\\"|[^"])*\n', /^(\\"|[^"])*\n/, :dqString, method('midStringDQ') ],
|
|
105
107
|
# The end of the string.
|
|
106
|
-
[ :STRING, /(\\"|[^"])*"/, :dqString, method('endStringDQ') ],
|
|
108
|
+
[ :STRING, '(\\\\"|[^"])*"', /(\\"|[^"])*"/, :dqString, method('endStringDQ') ],
|
|
107
109
|
|
|
108
110
|
# Multi line string enclosed with single quotes.
|
|
109
|
-
[ 'nil', /'(\\'|[^'])*/, :tjp, method('startStringSQ') ],
|
|
111
|
+
[ 'nil', '\'(\\\\\'|[^\'])*', /'(\\'|[^'])*/, :tjp, method('startStringSQ') ],
|
|
110
112
|
# Any line not containing the start or end.
|
|
111
|
-
[ 'nil', /^(\\'|[^'])*\n/, :sqString, method('midStringSQ') ],
|
|
113
|
+
[ 'nil', '^(\\\\\'|[^\'])*\n', /^(\\'|[^'])*\n/, :sqString, method('midStringSQ') ],
|
|
112
114
|
# The end of the string.
|
|
113
|
-
[ :STRING, /(\\'|[^'])*'/, :sqString, method('endStringSQ') ],
|
|
115
|
+
[ :STRING, '(\\\\\'|[^\'])*\'', /(\\'|[^'])*'/, :sqString, method('endStringSQ') ],
|
|
114
116
|
|
|
115
117
|
# Scizzors marked string -8<- ... ->8-: The opening mark must be the
|
|
116
118
|
# last thing in the line. The indentation of the first line after the
|
|
117
119
|
# opening mark determines the indentation for all following lines. So,
|
|
118
120
|
# we first switch the scanner to szrString1 mode.
|
|
119
|
-
[ 'nil', /-8<-.*\n/, :tjp, method('startStringSZR') ],
|
|
121
|
+
[ 'nil', '-8<-.*\n', /-8<-.*\n/, :tjp, method('startStringSZR') ],
|
|
120
122
|
# Since the first line can be the last line (empty string case), we
|
|
121
123
|
# need to detect the end in szrString1 and szrString mode. The
|
|
122
124
|
# patterns switch the scanner back to tjp mode.
|
|
123
|
-
[ :STRING, /\s*->8-/, :szrString1, method('endStringSZR') ],
|
|
124
|
-
[ :STRING, /\s*->8-/, :szrString, method('endStringSZR') ],
|
|
125
|
+
[ :STRING, '\s*->8-', /\s*->8-/, :szrString1, method('endStringSZR') ],
|
|
126
|
+
[ :STRING, '\s*->8-', /\s*->8-/, :szrString, method('endStringSZR') ],
|
|
125
127
|
# This rule handles macros inside of sizzors strings.
|
|
126
|
-
[ nil, /.*?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
|
|
128
|
+
[ nil, '.*?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\\\"|[^"])*")*', /.*?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
|
|
127
129
|
[ :szrString, :szrString1 ], method('startMacroCall') ],
|
|
128
130
|
# Any line not containing the start or end.
|
|
129
|
-
[ 'nil', /.*\n/, :szrString1, method('firstStringSZR') ],
|
|
130
|
-
[ 'nil', /.*\n/, :szrString, method('midStringSZR') ],
|
|
131
|
+
[ 'nil', '.*\n', /.*\n/, :szrString1, method('firstStringSZR') ],
|
|
132
|
+
[ 'nil', '.*\n', /.*\n/, :szrString, method('midStringSZR') ],
|
|
131
133
|
|
|
132
134
|
# Single line macro definition
|
|
133
|
-
[ :MACRO, /\[.*\]\n/, :tjp, method('chop2nl') ],
|
|
135
|
+
[ :MACRO, '\[.*\](\n|$)', /\[.*\]\n/, :tjp, method('chop2nl') ],
|
|
134
136
|
|
|
135
137
|
# Multi line macro definition: The pattern switches the scanner into
|
|
136
138
|
# macroDef mode.
|
|
137
|
-
[ nil, /\[.*\n/, :tjp, method('startMacroDef') ],
|
|
139
|
+
[ nil, '\[.*\n', /\[.*\n/, :tjp, method('startMacroDef') ],
|
|
138
140
|
# The end of the macro is marked by a ']' that is immediately followed
|
|
139
141
|
# by a line break. It switches the scanner back to tjp mode.
|
|
140
|
-
[ :MACRO, /.*\]\n/, :macroDef, method('endMacroDef') ],
|
|
142
|
+
[ :MACRO, '.*\](\n|$)', /.*\]\n/, :macroDef, method('endMacroDef') ],
|
|
141
143
|
# Any line not containing the start or end.
|
|
142
|
-
[ nil, /.*\n/, :macroDef, method('midMacroDef') ],
|
|
144
|
+
[ nil, '.*\n', /.*\n/, :macroDef, method('midMacroDef') ],
|
|
143
145
|
|
|
144
146
|
# Some multi-char literals.
|
|
145
|
-
[ :LITERAL, /<=?/ ],
|
|
146
|
-
[ :LITERAL, />=?/ ],
|
|
147
|
-
[ :LITERAL, /!=?/ ],
|
|
147
|
+
[ :LITERAL, '<=?', /<=?/ ],
|
|
148
|
+
[ :LITERAL, '>=?', />=?/ ],
|
|
149
|
+
[ :LITERAL, '!=?', /!=?/ ],
|
|
148
150
|
|
|
149
151
|
# Everything else is returned as a single-char literal.
|
|
150
|
-
[ :LITERAL, /./ ]
|
|
152
|
+
[ :LITERAL, '.', /./ ]
|
|
151
153
|
]
|
|
152
154
|
|
|
153
155
|
super(masterFile, Log, tokenPatterns, :tjp)
|
|
@@ -203,8 +205,12 @@ class TaskJuggler
|
|
|
203
205
|
end
|
|
204
206
|
|
|
205
207
|
def chop2nl(type, match)
|
|
206
|
-
# remove first and last
|
|
207
|
-
|
|
208
|
+
# remove first and last \n (if it exists) and the last character.
|
|
209
|
+
if match[-1] == ?\n
|
|
210
|
+
[ type, match[1..-3] ]
|
|
211
|
+
else
|
|
212
|
+
[ type, match[1..-2] ]
|
|
213
|
+
end
|
|
208
214
|
end
|
|
209
215
|
|
|
210
216
|
def startComment(type, match)
|
|
@@ -332,8 +338,12 @@ class TaskJuggler
|
|
|
332
338
|
|
|
333
339
|
def endMacroDef(type, match)
|
|
334
340
|
self.mode = :tjp
|
|
335
|
-
# Remove "]\n"
|
|
336
|
-
|
|
341
|
+
# Remove "](\n|$)"
|
|
342
|
+
if match[-1] == ?\n
|
|
343
|
+
@macroDef += match[0..-3]
|
|
344
|
+
else
|
|
345
|
+
@macroDef += match[0..-2]
|
|
346
|
+
end
|
|
337
347
|
[ :MACRO, @macroDef ]
|
|
338
348
|
end
|
|
339
349
|
|