0
Proteus SDK <ul><li>Andy Keller Director of Engineering </li></ul>Dave Shepperton Senior Software Engineer
What’s new in 5.x? <ul><li><join>  tag </li></ul><ul><li>Proteus skin framework </li></ul><ul><li>Tabbed navigation </li><...
<join>  tag <ul><li>Adds separators between chunks of output </li></ul><ul><ul><li>Doesn’t print at the beginning or end <...
Proteus Skin Framework <ul><li>The Proteus skin is like browser within a browser. It uses the GWTRPC skin to generate the ...
Proteus Skin Framework (cont’d) <ul><li>gwt.rpc.view SDL Tags Produce a Tree of ViewData objects: </li></ul>
Customizing Proteus Navigation: Configurable Tabs <ul><li>tabs#main-allprojects -> view.tabsjson SDL Tag ->  Tab::evalJSON...
Handling JavaScript Installation for Widgets in Proteus Widgets in Proteus <ul><li>Problem: Some widgets require JavaScrip...
Handling JavaScript Installation for Widgets in Proteus (cont’d) Widgets in Proteus (cont’d) <ul><li>e.g., googlemap token...
Entry Decorators <ul><li>Provide custom, context-sensitive renderings for different kinds of entries </li></ul><ul><li>Bas...
Entry Decorators (cont’d) <ul><li>entry.content tag ->  Entry::decorate  method -> milestone decorator configuration -> SD...
Entry Labels <ul><li>An entry with a corresponding label </li></ul><ul><ul><li>Encoded as ::Project:-e:[entry#] </li></ul>...
Entry Labels: used for PM Task Project Milestone Milestones have Project Tasks have Project and Milestone
Entry Labels: new Java SDK methods <ul><li>Entry and TractionId </li></ul><ul><ul><ul><li>LabelName   getLabelName () </li...
Entry Labels: new SDL tags <ul><li>Entry </li></ul><ul><ul><ul><li>__ entry. labelname__ </li></ul></ul></ul><ul><li>Label...
Entry Labels: retrieving labeled content <ul><li>Just like any other labeled entries </li></ul><ul><li>SDK - Journal </li>...
Entry Labels: special PM tags <ul><ul><ul><li>< goal .milestones>  </li></ul></ul></ul><ul><ul><ul><li>< goal .tasks> </li...
Upcoming SlideShare
Loading in...5
×

Proteus SDK

1,282

Published on

Andy Keller and Dave Shepperton, Traction Software. Traction User Group, Oct 15 2010, Newport RI. TUG 2010 Newport slides, agenda and more see www.TractionSoftware.com

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,282
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Proteus SDK"

  1. 1. Proteus SDK <ul><li>Andy Keller Director of Engineering </li></ul>Dave Shepperton Senior Software Engineer
  2. 2. What’s new in 5.x? <ul><li><join> tag </li></ul><ul><li>Proteus skin framework </li></ul><ul><li>Tabbed navigation </li></ul><ul><li>Entry types </li></ul><ul><li>Entry decorators </li></ul><ul><li>Entry labels </li></ul><ul><li>XML forms </li></ul>
  3. 3. <join> tag <ul><li>Adds separators between chunks of output </li></ul><ul><ul><li>Doesn’t print at the beginning or end </li></ul></ul><ul><ul><li>Doesn’t repeat separators </li></ul></ul><ul><ul><li>Works through tags and functions </li></ul></ul><ul><li>Used for entry details, line breaks, sql query operators, and more </li></ul><join separator=”,”> __join.separator__ A __join.separator__ <compare.equals a=”1” b=”2”> D </compare.equals> __join.separator__ <compare.equals a=”1” b=”1”> B </compare.equals> __join.separator__ C __join.separator__ </join> A,B,C
  4. 4. Proteus Skin Framework <ul><li>The Proteus skin is like browser within a browser. It uses the GWTRPC skin to generate the components of the page: </li></ul>
  5. 5. Proteus Skin Framework (cont’d) <ul><li>gwt.rpc.view SDL Tags Produce a Tree of ViewData objects: </li></ul>
  6. 6. Customizing Proteus Navigation: Configurable Tabs <ul><li>tabs#main-allprojects -> view.tabsjson SDL Tag -> Tab::evalJSONData -> tasks tab configuration -> tabs#server-tasks -> JSON rendering </li></ul>
  7. 7. Handling JavaScript Installation for Widgets in Proteus Widgets in Proteus <ul><li>Problem: Some widgets require JavaScript which use document.write to install their own additional JavaScript. You can’t do this in an already closed HTML document! (Symptom: page goes blank, spinner spins forever...) </li></ul><ul><li>Solution: Don’t let external JavaScript ruin the current document. Instead, render an IFrame with a link to a view that is its own HTML document that includes the JavaScript. </li></ul>
  8. 8. Handling JavaScript Installation for Widgets in Proteus (cont’d) Widgets in Proteus (cont’d) <ul><li>e.g., googlemap token (in plugins/com.traction.googlemap): </li></ul><ul><li>token -> token configuration -> SDL renderer ->IFrame tag -> type=googlemap View via view configuration -> HTML rendering (with SCRIPT tag) </li></ul>
  9. 9. Entry Decorators <ul><li>Provide custom, context-sensitive renderings for different kinds of entries </li></ul><ul><li>Based upon the “custom entry type” of the Entry, same as: com.traction.sdk.Entry::getCustomEntryType() __entry.customentrytype__ </li></ul><ul><li>Decorators are per token renderer set; currently supported for the Proteus skin only (via the GWTRPC render). </li></ul>
  10. 10. Entry Decorators (cont’d) <ul><li>entry.content tag -> Entry::decorate method -> milestone decorator configuration -> SDL renderer -> HTML rendering </li></ul>
  11. 11. Entry Labels <ul><li>An entry with a corresponding label </li></ul><ul><ul><li>Encoded as ::Project:-e:[entry#] </li></ul></ul><ul><ul><li>Considered system labels </li></ul></ul><ul><ul><li>Typically hidden from the interface </li></ul></ul><ul><li>Used for grouping entries with another entry, e.g. tasks with a milestone and/or project, milestones with a project </li></ul><ul><li>Added/removed with reclassifications </li></ul><ul><ul><li>References would require an edit </li></ul></ul><ul><ul><li>Label history tracks changes </li></ul></ul>
  12. 12. Entry Labels: used for PM Task Project Milestone Milestones have Project Tasks have Project and Milestone
  13. 13. Entry Labels: new Java SDK methods <ul><li>Entry and TractionId </li></ul><ul><ul><ul><li>LabelName getLabelName () </li></ul></ul></ul><ul><li>LabelName </li></ul><ul><ul><ul><li>String getDisplayName ( CJournalRequest ) </li></ul></ul></ul><ul><ul><li>Item </li></ul></ul><ul><ul><ul><li>LabelIterator getSystemLabels () </li></ul></ul></ul>
  14. 14. Entry Labels: new SDL tags <ul><li>Entry </li></ul><ul><ul><ul><li>__ entry. labelname__ </li></ul></ul></ul><ul><li>LabelName </li></ul><ul><ul><ul><li>__ labelname. displayname__ </li></ul></ul></ul><ul><li>Item </li></ul><ul><ul><ul><li>< item. labels system=true> </ item .labels> </li></ul></ul></ul>
  15. 15. Entry Labels: retrieving labeled content <ul><li>Just like any other labeled entries </li></ul><ul><li>SDK - Journal </li></ul><ul><ul><ul><li>EntryIterator getLabeledEntries ( ... ) </li></ul></ul></ul><ul><li>SDL </li></ul><ul><ul><ul><li>< entries type=cat cat=”__entry.labelname__”> </ entries > </li></ul></ul></ul>
  16. 16. Entry Labels: special PM tags <ul><ul><ul><li>< goal .milestones> </li></ul></ul></ul><ul><ul><ul><li>< goal .tasks> </li></ul></ul></ul><ul><ul><ul><li>< milestone .goal> </li></ul></ul></ul><ul><ul><ul><li>< milestone .tasks> </li></ul></ul></ul><ul><ul><ul><li>< task .goal> </li></ul></ul></ul><ul><ul><ul><li>< task .milestone> </li></ul></ul></ul>These all put an entry or entries in scope
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×