taskjuggler 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|