NeXTPLAN

1,257 views

Published on

Software that rocks! with Seaside and Smalltalk

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,257
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

NeXTPLAN

  1. 1. NeXTPLAN* Enterprise software that rocks! with Seaside & Smalltalk Johan Brichau - johan@inceptive.be Friday 17 September 2010
  2. 2. NeXTPLAN is... • A collaborative resource planning tool for event organizers of all sizes. • Developed for and with major player of Belgian cultural scene (Vooruit, Gent). • Features: Event planning, resource planning & management, contact management, retro planning, billing, reporting. Friday 17 September 2010
  3. 3. NeXTPLAN* Friday 17 September 2010
  4. 4. NeXTPLAN* Friday 17 September 2010
  5. 5. In this talk.... • Smalltalk and Seaside are an impressive platform to create highly dynamic web applications that blur the traditional distinction with desktop applications • Some details: • Local AJAX updates • OODBs • SVG + AJAX in Seaside • Testing, porting to Gemstone Friday 17 September 2010
  6. 6. Demo 1 • [demo to show component interactions in calendar: grouped events & bubbles, changing names, decoration] Friday 17 September 2010
  7. 7. Component-based Friday 17 September 2010
  8. 8. Component-based Friday 17 September 2010
  9. 9. Component-based Friday 17 September 2010
  10. 10. Ajax Updates Architecture • Every operation eventually invokes the update rendering • Update rendering • Component re-rendering • Ajax-jQuery replace operation Friday 17 September 2010
  11. 11. Global Ajax Update Friday 17 September 2010
  12. 12. Global Ajax Update Friday 17 September 2010
  13. 13. Global Ajax Update scriptToUpdatebodyOn: html ^ (html jQuery: #cells) load: [:r | self renderCellsOn: r] + Easy and crisp + Universally applicable - Re-renders too much (too long!) - Wastes in-place editing advantage - Most of the time updates are local Friday 17 September 2010
  14. 14. Local updates Friday 17 September 2010
  15. 15. Local updates Friday 17 September 2010
  16. 16. Local updates Friday 17 September 2010
  17. 17. Local updates Friday 17 September 2010
  18. 18. Local updates Updates of other users (via database changes)! Friday 17 September 2010
  19. 19. Pitfalls • Instance variable values • Capture concurrent changes to calendar • Client side behavior (Javascript) • Invoke again or not? • For example: • Drag & drop of cells • Context menu on cells • Dynamic calendar extension on page scroll Friday 17 September 2010
  20. 20. Seaside Design Pattern? UpdateableComponent htmlId renderContentOn: Complete render renderInternalOn: Internal render needsRefresh Wants to render? scriptToUpdateOn: Script to render Friday 17 September 2010
  21. 21. Local updates CalendarComponent>>updateScriptOn: canvas ^ canvas jQuery ajax script: [:s | self cells do: [:c| c needsRefresh ifTrue:[ s << (c updateScriptOn: s)]]] Cell>>updateScriptOn: canvas ^(canvas jQuery id: self htmlId) load:[:r| self renderInternalOn: r] Friday 17 September 2010
  22. 22. Local updates CalendarComponent>>updateScriptOn: canvas ^ canvas jQuery ajax script: [:s | self childrendo: [:c| cells c needsRefresh ifTrue:[ s << (c updateScriptOn: s)]]] Cell>>updateScriptOn: canvas ^(canvas jQuery id: self htmlId) load:[:r| self renderInternalOn: r] Friday 17 September 2010
  23. 23. Local updates CalendarComponent>>updateScriptOn: canvas ^ canvas jQuery ajax script: [:s | self childrendo: [:c| cells c needsRefresh ifTrue:[ s << (c updateScriptOn: s)]]] Cell>>updateScriptOn: canvas ^(canvas jQuery id: self htmlId) load:[:r| self renderInternalOn: r] replaceWith: renderContentOn: Friday 17 September 2010
  24. 24. Local updates • Own session changes • True object-based change propagation • Concurrent session changes • Manual handling Friday 17 September 2010
  25. 25. SVG in Seaside • SeasideDynamicSVG package • SVG canvas & brushes • SVG + jQuery • SVG + AJAX • Dynamic load of svg content • Problem: Painterʼs algorithm for "z-index" • Solution: svgLoad Friday 17 September 2010
  26. 26. Demo 2 • [show Tree view animations driven by Ajax updates] Friday 17 September 2010
  27. 27. JQuery svgLoad <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>NextPlan Structure Editor 0.24</title><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/><meta http-equiv="Content-Script-Type" content="text/javascript"/><link rel="stylesheet" type="text/css" href="/files/WADevelopmentFiles/development.css"/><link rel="stylesheet stylesheet" type="text/css" href="./stylesheets/main.css"/><link rel="stylesheet stylesheet" type="text/css" href="./stylesheets/calendar.css"/><script type="text/javascript" src="./javascripts/jQuery.js"></script><script type="text/javascript" src="./javascripts/jQueryUi.js"></script><script type="text/javascript" src="./javascripts/underscore.js"></script><script type="text/javascript" src="./javascripts/calendar-scripts.js"></script><script type="text/javascript" src="./javascripts/jquery.viewportforframe.js"></script><script type="text/javascript" src="./ javascripts/jquery.tablesorter.bugfixed.js"></script><script type="text/javascript" src="./javascripts/resizable-tables.js"></script><script type="text/javascript" src="./javascripts/jquery.rightClick.js"></script><script type="text/javascript" src="./javascripts/resourcefinder.js"></script><script type="text/javascript" src="./javascripts/jquery.jeditable.js"></script><script type="text/javascript" src="./javascripts/jquery.jeditable.masked.js"></script><script type="text/javascript" src="./javascripts/jquery.maskedinput-1.2.2.min.js"></script><link rel="stylesheet stylesheet" type="text/css" href="./stylesheets/se.css"/><script type="text/javascript" src="/files/JQWidgetBoxDevelopmentLibrary/mbMenusvgPatched.js"></script><script type="text/javascript" src="/files/JQWidgetBoxDevelopmentLibrary/jqueryhoverintent.js"></script><script type="text/javascript" src="./javascripts/keynavigation.js"></script><script type="text/ javascript" src="./javascripts/textselection.js"></script><script type="text/javascript" src="./javascripts/jquery.svg.js"></script><script type="text/javascript" src="./javascripts/jquery.svgdom.js"></script><script type="text/javascript" src="./javascripts/jquery.svganim.js"></script><script type="text/javascript" src="./javascripts/jquery.svgpatch.js"></script><script type="text/javascript" src="./javascripts/se-scripts.js"></script><script type="text/javascript" src="./javascripts/modernizr-1.1.min.js"></script><script type="text/javascript" src="./javascripts/np-common.js"></script><script type="text/javascript" src="./javascripts/modernizr-1.1.min.js"></script><script type="text/javascript" src="/files/JQWidgetBoxDevelopmentLibrary/jeditable.js"></script><script type="text/javascript" src="/files/JQWidgetBoxDeploymentLibrary/jquerymetadata.js"></script><script type="text/javascript" src="./javascripts/modernizr-1.1.min.js"></ script><script type="text/javascript" src="./javascripts/modernizr-1.1.min.js"></script><script type="text/javascript" src="./javascripts/modernizr-1.1.min.js"></script></head><body id="calendar-tab" oncontextmenu="return false;" onload="onLoad()"><div id="branding"><h1><a title="Go to the homepage" href="/">NextPlan</a></h1><ul><li id="skip-to-main"><a href="#nav-main">Skip to main navigation</a></li><li id="skip-to-tools"><a href="#nav-tools">Skip to tools</a></li><li id="skip-to-user"><a href="#nav-user">Skip to user panel</a></li></ul></div><div id="treeeditor" style="position:relative;margin:0 auto;width:100%;height:100%;min-height:100%;"><div id="menucontainer"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100px" height="80px"><g id="menu_background"><path d="M86,29.5c0,6.627-5.373,12-12,12H22c-6.627,0-12-5.373-12-12v-16c0-6.627,5.373-12,12-12h52c6.627,0,12,5.373,12,12V29.5z"></path></ g><g id="clock_icon" class="active" onclick="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;7&quot;].join(&quot;&amp;&quot;)})" transform="translate(-49,-5)"><rect x="66" y="11.5" style="opacity:0" width="27" height="27"></rect><path d="M79.5,12.5C72.597,12.5,67,18.097,67,25s5.597,12.5,12.5,12.5S92,31.903,92,25S86.403,12.5,79.5,12.5z M79.5,34.5c-5.246,0-9.5-4.255-9.5-9.5c0-5.246,4.254-9.5,9.5-9.5c5.245,0,9.5,4.254,9.5,9.5C89,30.245,84.745,34.5,79.5,34.5z"></path><path d="M84.801,27.404c0.521,0.365,0.561,1.211,0.085,1.891l0,0c-0.476,0.678-1.284,0.932-1.806,0.566l-4.662-3.265c-0.522-0.366-0.561-1.212-0.086-1.891l0,0c0.477-0.679,1.285-0.933,1.806-0.567L84.801,27.404z"></path><path d="M81,25.346c0,0.637-0.672,1.154-1.5,1.154l0,0c-0.828,0-1.5-0.518-1.5-1.154v-6.691c0-0.638,0.672-1.154,1.5-1.154l0,0c0.828,0,1.5,0.517,1.5,1.154V25.346z"></path></g><g id="tree_icon" onclick="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;8&quot;].join(&quot;&amp;&quot;)})" transform="translate(50,7)"><rect x="0" y="-3.5" style="opacity:0" width="27" height="27"></rect><rect x="6" y="21.5" width="9" height="1"></rect><rect x="6" y="14.5" width="9" height="1"></rect><rect x="6" y="7.5" width="9" height="1"></rect><rect x="6" y="4.5" width="1" height="20"></rect><path d="M15,19.5v5h11v-5"></path><path d="M15,12.5v5h11v-5"></path><path d="M15,5.5v5h11v-5"></path><path d="M1,-0.5v5h11v-5"></path></g><g id="draft" onclick="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/ NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;9&quot;].join(&quot;&amp;&quot;)})" transform="translate(25,60)"><path d="M38,6c0,3.313-2.485,6-5.55,6h-25.9C3.485,12,1,9.313,1,6l0,0c0-3.313,2.485-6,5.55-6h25.9C35.515,0,38,2.687,38,6L38,6z"></path><text transform="translate(6,8.8555)">DRAFT</text></g><g id="undo" onclick="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/ NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;10&quot;].join(&quot;&amp;&quot;)})" transform="translate(10,45)"><path d="M38,6c0,3.313-2.485,6-5.55,6h-25.9C3.485,12,1,9.313,1,6l0,0c0-3.313,2.485-6,5.55-6h25.9C35.515,0,38,2.687,38,6L38,6z"></path><text transform="translate(8,8.8555)">UNDO</text></g><g id="redo" onclick="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/ NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;11&quot;].join(&quot;&amp;&quot;)})" transform="translate(50,45)"><path d="M38,6c0,3.313-2.485,6-5.55,6h-25.9C3.485,12,1,9.313,1,6l0,0c0-3.313,2.485-6,5.55-6h25.9C35.515,0,38,2.687,38,6L38,6z"></path><text transform="translate(8,8.8555)">REDO</text></g></svg></div><div id="svgcontainer" class="svgcontainer" cMenu="canvasMenu" permissions="[&quot;addEvent&quot;,&quot;addResource&quot;]"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1200px" height="642px"><g id="lines" xmlns="http://www.w3.org/2000/svg"><line id="lineNPCompositeEvent173-NPEvent144" x1="183" y1="313" x2="401" y2="54" style="stroke-width:2" class="SUIDdatetimenode1line NPResourceInstance85line SUIDnodelist6line SUIDresourcegroupnode2line SUIDresourcedetailnode3line SUIDresourcegroupnode4line SUIDresourcedetailnode5line NPCompositeEvent173line NPEvent144line nodeline eventline eventline" xmlns="http://www.w3.org/2000/svg"></line><line id="lineNPCompositeEvent173-NPEvent164" x1="183" y1="313" x2="401" y2="213" style="stroke-width:2" class="NPCompositeEvent173line NPEvent164line nodeline eventline eventline" xmlns="http://www.w3.org/2000/svg"></line><line id="lineNPCompositeEvent173-NPEvent171" x1="183" y1="313" x2="401" y2="409" style="stroke-width:2" class="NPCompositeEvent173line NPEvent171line nodeline eventline eventline" xmlns="http://www.w3.org/2000/svg"></line><line id="lineNPEvent144-SUIDdatetimenode1" x1="529" y1="54" x2="651" y2="54" style="stroke-width:2" class="permanentselected NPCompositeEvent173line NPEvent144line SUIDdatetimenode1line nodeline eventline datetimenodeline" xmlns="http://www.w3.org/2000/svg"></line><g id="lineNPEvent144-NPResourceInstance85" class="permanentselected NPCompositeEvent173line NPEvent144line NPResourceInstance85line nodeline eventline locationnodeline" xmlns="http://www.w3.org/2000/svg"><line id="lineNPEvent144-NPResourceInstance85-hor" x1="621" y1="91" x2="651" y2="91" style="stroke-width:2" xmlns="http://www.w3.org/2000/svg"></line><line id="lineNPEvent144-NPResourceInstance85-vert" x1="621" y1="54" x2="621" y2="91" style="stroke-width:2" xmlns="http://www.w3.org/2000/svg"></line></g><g id="lineNPEvent144-SUIDnodelist6" class="permanentselected NPCompositeEvent173line SUIDresourcegroupnode2line SUIDresourcedetailnode3line SUIDresourcegroupnode4line SUIDresourcedetailnode5line NPEvent144line SUIDnodelist6line nodeline eventline nodelistline" xmlns="http://www.w3.org/2000/svg"><line id="lineNPEvent144-SUIDnodelist6-hor" x1="621" y1="128" x2="646" y2="128" style="stroke-width:2" xmlns="http://www.w3.org/2000/svg"></line><line id="lineNPEvent144- SUIDnodelist6-vert" x1="621" y1="54" x2="621" y2="128" style="stroke-width:2" xmlns="http://www.w3.org/2000/svg"></line></g><line id="lineSUIDresourcegroupnode2-SUIDresourcedetailnode3" x1="779" y1="128" x2="809" y2="128" style="stroke-width:2" class="permanentselected SUIDnodelist6line NPEvent144line NPCompositeEvent173line SUIDresourcegroupnode2line SUIDresourcedetailnode3line nodeline resourcegroupnodeline resourcedetailnodeline" xmlns="http://www.w3.org/2000/svg"></ line><line id="lineSUIDresourcegroupnode4-SUIDresourcedetailnode5" x1="779" y1="157" x2="809" y2="157" style="stroke-width:2" class="permanentselected SUIDnodelist6line NPEvent144line NPCompositeEvent173line SUIDresourcegroupnode4line SUIDresourcedetailnode5line nodeline resourcegroupnodeline resourcedetailnodeline" xmlns="http://www.w3.org/2000/svg"></line></g><g id="nodes" xmlns="http://www.w3.org/2000/svg"><g id="NPCompositeEvent173" cMenu="eventMenu" permissions="[&quot;readEvent&quot;,&quot;writeEvent&quot;,&quot;deleteEvent&quot;,&quot;readResourceMgmt&quot;,&quot;writeResourceMgmt&quot;,&quot;deleteResourceMgmt&quot;]" class="NPEvent144 SUIDdatetimenode1 NPResourceInstance85 SUIDnodelist6 SUIDresourcegroupnode2 SUIDresourcedetailnode3 SUIDresourcegroupnode4 SUIDresourcedetailnode5 NPEvent164 NPEvent171 treenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M188,314c0,6.627-5.373,12-12,12H62c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V314z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(62,305.5)" xmlns="http://www.w3.org/2000/svg"><pre id="NPCompositeEvent173-text" xmlns="http://www.w3.org/1999/xhtml" title="Othello">Othello</pre></foreignObject><a class="conflict" onmouseover="var thisbb = getAbsoluteBoundingBox($ ('#NPCompositeEvent173')[0]);$('.conflict-summary').html(&quot;&lt;strong&gt;Conflicts:&lt;/strong&gt;&lt;span class='conflict-item'&gt;The schedule of Othello2 exceeds the day boundaries&lt;/span&gt; &lt;span class='conflict-item'&gt;Stekkerdoos in event Othello2 is already used by event(s) Othello3.&lt;/span&gt; &lt;span class='conflict-item'&gt;2KW Fresnell in event Othello2 is already used by event(s) Othello3.&lt;/span&gt; &lt;span class='conflict-item'&gt;Stekkerdoos in event Othello3 is already used by event(s) Othello2.&lt;/span&gt; &lt;span class='conflict-item'&gt;2KW Fresnell in event Othello3 is already used by event(s) Othello2.&lt;/span&gt;&lt;span class='tip'&gt;&lt;/span&gt;&quot;).css('top',thisbb.y-40).css('left',thisbb.x+thisbb.width+20).show()" onmouseout="$('.conflict-summary').hide()" xlink:href="javascript:void(0)"><g class="conflict-alert" style="display:block" id="NPCompositeEvent173-alert" transform="translate(178,293)" xmlns="http://www.w3.org/2000/svg"><polygon style="fill:#FFF000" points="9.041,2.756 11.37,0.063 12.041,3.56 15.405,2.392 14.237,5.756 17.734,6.427 15.041,8.756 17.734,11.085 14.237,11.756 15.405,15.121 12.041,13.953 11.37,17.45 9.041,14.756 6.711,17.45 6.04,13.953 2.676,15.121 3.844,11.756 0.347,11.085 3.04,8.756 0.347,6.427 3.844,5.756 2.676,2.392 6.04,3.56 6.711,0.063" xmlns="http://www.w3.org/2000/svg"></polygon><rect x="8.347" y="4.756" width="2.001" height="6" xmlns="http://www.w3.org/2000/svg"></rect><rect x="8.347" y="11.756" width="2.001" height="2" xmlns="http://www.w3.org/2000/svg"></rect></g></a></g><g id="NPEvent144" cMenu="eventMenu" permissions="[&quot;readEvent&quot;,&quot;writeEvent&quot;,&quot;deleteEvent&quot;,&quot;readResourceMgmt&quot;,&quot;writeResourceMgmt&quot;,&quot;deleteResourceMgmt&quot;]" class="NPCompositeEvent173 SUIDdatetimenode1 NPResourceInstance85 SUIDnodelist6 SUIDresourcegroupnode2 SUIDresourcedetailnode3 SUIDresourcegroupnode4 z-index 1 SUIDresourcedetailnode5 NPEvent144 SUIDdatetimenode1 NPResourceInstance85 SUIDnodelist6 SUIDresourcegroupnode2 SUIDresourcedetailnode3 SUIDresourcegroupnode4 SUIDresourcedetailnode5 NPEvent164 NPEvent171 treenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M534,55c0,6.627-5.373,12-12,12H408c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V55z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(408,46.5)" xmlns="http://www.w3.org/2000/svg"><pre id="NPEvent144-text" xmlns="http://www.w3.org/1999/xhtml" title="Othello 1">Othello 1</pre></foreignObject></g><g id="SUIDdatetimenode1" permissions="[&quot;readEvent&quot;,&quot;writeEvent&quot;,&quot;deleteEvent&quot;,&quot;writeResourceMgmt&quot;,&quot;deleteResourceMgmt&quot;]" cMenu="resourceMenu" class="datetimenode treenode abstractresourcenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M784,55c0,6.627-5.373,12-12,12H658c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V55z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(658,46.5)" xmlns="http://www.w3.org/2000/svg"><pre id="SUIDdatetimenode1-text" xmlns="http://www.w3.org/1999/xhtml" title="12-9-2010">12-9-2010</pre></foreignObject></g><g id="NPResourceInstance85" permissions="[&quot;readEvent&quot;,&quot;writeEvent&quot;,&quot;deleteEvent&quot;,&quot;readResourceMgmt&quot;]" cMenu="resourceMenu" class="locationnode treenode abstractresourcenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M784,92c0,6.627-5.373,12-12,12H658c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V92z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(658,83.5)" xmlns="http://www.w3.org/2000/svg"><pre id="NPResourceInstance85-text" xmlns="http://www.w3.org/1999/xhtml" title="Theaterzaal">Theaterzaal</pre></foreignObject><g style="display:none" id="NPResourceInstance85-arrow" xmlns="http://www.w3.org/ 2000/svg"><g class="arrow" xmlns="http://www.w3.org/2000/svg"><path transform="translate(764,87)" d="M 10 0 L 5 8 L 0 0 Z" xmlns="http://www.w3.org/2000/svg"></path></g></g></g><g id="SUIDresourcegroupnode2" permissions="[]" cMenu="resourceMenu" class="resourcegroupnode treenode abstractresourcenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M784,129c0,6.627-5.373,12-12,12H658c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V129z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(658,120.5)" xmlns="http://www.w3.org/2000/svg"><pre id="SUIDresourcegroupnode2-text" xmlns="http://www.w3.org/1999/xhtml" title="Theatertechniek">Theatertechniek</pre></foreignObject></g><g id="SUIDresourcegroupnode4" permissions="[]" cMenu="resourceMenu" class="resourcegroupnode treenode abstractresourcenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M784,158c0,6.627-5.373,12-12,12H658c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V158z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(658,149.5)" xmlns="http://www.w3.org/2000/svg"><pre id="SUIDresourcegroupnode4-text" xmlns="http://www.w3.org/1999/xhtml" title="Facility">Facility</pre></foreignObject></g><g id="SUIDresourcedetailnode3" class="resourcedetailnode treenode abstractresourcenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M854,128c0,6.627-5.373,8-12,8H816c-6.627,0-12-1.373-12-8l0,0 ! ! ! c0-6.627,5.373-8,12-8h26C848.627,120,854,121.373,854,128L854,128z" xmlns="http://www.w3.org/2000/svg"></path><text style="font-family: 'HelveticaNeue-Bold','Helvetica Neue',Arial,sans-serif; font-size: 9px; font-weight: bold;" transform="translate(816,130.5)" xmlns="http://www.w3.org/2000/svg">details</text><a class="incomplete" onmouseover="var thisbb = getAbsoluteBoundingBox($ ('#SUIDresourcedetailnode3')[0]);$('.incomplete-summary').html(&quot;&lt;strong&gt;Incomplete:&lt;/strong&gt;&lt;span class='incomplete-item'&gt;placeholder Engineer&lt;/span&gt;&lt;span class='tip'&gt;&lt;/span&gt;&quot;).css('top',thisbb.y-40).css('left',thisbb.x+thisbb.width+20).show()" onmouseout="$('.incomplete-summary').hide()" xlink:href="javascript:void(0)"><g class="conflict-incomplete" transform="translate(844,109)" xmlns="http://www.w3.org/2000/svg"><polygon style="fill:#FFF000" points="8.999,2.787 11.41,0 12.104,3.621 15.589,2.411 14.38,5.893 18,6.59 15.211,8.999 18,11.41 14.38,12.104 15.589,15.589 12.104,14.38 11.41,18 8.999,15.211 6.588,18 5.893,14.38 2.411,15.589 3.621,12.104 0,11.41 2.787,8.999 0,6.59 3.621,5.893 2.411,2.411 5.893,3.621 6.588,0" xmlns="http://www.w3.org/2000/svg"></polygon><rect x="8.25" y="11.6" width="1.8" height="1.8" xmlns="http://www.w3.org/2000/svg"></rect><path d="M6.425,6.318c0.144-0.347,0.341-0.649,0.599-0.905C7.279,5.158,7.588,4.959,7.95,4.815C8.312,4.672,8.715,4.6,9.163,4.6c0.578,0,1.06,0.076,1.446,0.227c0.384,0.15,0.692,0.339,0.934,0.562c0.232,0.226,0.402,0.466,0.505,0.727C12.15,6.376,12.2,6.617,12.2,6.843c0,0.371-0.052,0.676-0.152,0.916c-0.103,0.24-0.229,0.445-0.379,0.617c-0.147,0.17-0.315,0.314-0.5,0.434c-0.185,0.121-0.354,0.24-0.519,0.361c-0.164,0.119-0.309,0.257-0.434,0.412c-0.127,0.153-0.208,0.347-0.238,0.578V10.6H8. 333v-0.521c0.025-0.332,0.092-0.611,0.202-0.837c0.109-0.224,0.238-0.415,0.383-0.573c0.148-0.158,0.301-0.295,0.465-0.412C9.545,8.142,9.693,8.025,9.834,7.91c0.139-0.117,0.25-0.245,0.334-0.386c0.086-0.139,0.124-0.312,0.116-0.521c0-0.355-0.093-0.619-0.274-0.789S9.573,5.958,9.249,5.958c-0.22,0-0.409,0.041-0.567,0.122c-0.158,0.082-0.29,0.19-0.391,0.326C8.189,6.541,8.114,6.699,8.066,6.881c-0.05,0.183-0.073,0.378-0.073,0.587H6.2C6.208,7.05,6.283,6.667,6.425,6.318z" xmlns="http://www.w3.org/2000/svg"></path></g></a></g><g id="SUIDresourcedetailnode5" class="resourcedetailnode treenode abstractresourcenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M854,157c0,6.627-5.373,8-12,8H816c-6.627,0-12-1.373-12-8l0,0 ! ! ! c0-6.627,5.373-8,12-8h26C848.627,149,854,150.373,854,157L854,157z" xmlns="http://www.w3.org/2000/svg"></path><text style="font-family: 'HelveticaNeue-Bold','Helvetica Neue',Arial,sans-serif; font-size: 9px; font-weight: bold;" transform="translate(816,159.5)" xmlns="http://www.w3.org/2000/svg">details</text></g><g id="NPEvent164" cMenu="eventMenu" permissions="[&quot;readEvent&quot;,&quot;writeEvent&quot;,&quot;deleteEvent&quot;,&quot;readResourceMgmt&quot;,&quot;writeResourceMgmt&quot;,&quot;deleteResourceMgmt&quot;]" class="NPCompositeEvent173 NPEvent144 SUIDdatetimenode1 NPResourceInstance85 SUIDnodelist6 SUIDresourcegroupnode2 SUIDresourcedetailnode3 SUIDresourcegroupnode4 SUIDresourcedetailnode5 NPEvent164 NPEvent171 treenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M534,214c0,6.627-5.373,12-12,12H408c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V214z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(408,205.5)" xmlns="http://www.w3.org/2000/svg"><pre id="NPEvent164-text" xmlns="http://www.w3.org/1999/xhtml" title="Othello2">Othello2</pre></foreignObject><a class="conflict" onmouseover="var thisbb = getAbsoluteBoundingBox($('#NPEvent164')[0]);$ ('.conflict-summary').html(&quot;&lt;strong&gt;Conflicts:&lt;/strong&gt;&lt;span class='conflict-item'&gt;The schedule of Othello2 exceeds the day boundaries&lt;/span&gt; &lt;span class='conflict-item'&gt;Stekkerdoos in event Othello2 is already used by event(s) Othello3.&lt;/span&gt; &lt;span class='conflict-item'&gt;2KW Fresnell in event Othello2 is already used by event(s) Othello3.&lt;/span&gt;&lt;span class='tip'&gt;&lt;/span&gt;&quot;).css('top',thisbb.y-40).css('left',thisbb.x+thisbb.width+20).show()" onmouseout="$('.conflict-summary').hide()" xlink:href="javascript:void(0)"><g class="conflict-alert" style="display:block" id="NPEvent164-alert" transform="translate(524,193)" xmlns="http://www.w3.org/2000/svg"><polygon style="fill:#FFF000" points="9.041,2.756 11.37,0.063 12.041,3.56 15.405,2.392 14.237,5.756 17.734,6.427 15.041,8.756 17.734,11.085 14.237,11.756 15.405,15.121 12.041,13.953 11.37,17.45 9.041,14.756 6.711,17.45 6.04,13.953 2.676,15.121 3.844,11.756 0.347,11.085 3.04,8.756 0.347,6.427 3.844,5.756 2.676,2.392 6.04,3.56 6.711,0.063" xmlns="http://www.w3.org/2000/svg"></polygon><rect x="8.347" y="4.756" width="2.001" height="6" xmlns="http://www.w3.org/2000/svg"></rect><rect x="8.347" y="11.756" width="2.001" height="2" xmlns="http://www.w3.org/2000/svg"></rect></g></a></g><g id="NPEvent171" cMenu="eventMenu" permissions="[&quot;readEvent&quot;,&quot;writeEvent&quot;,&quot;deleteEvent&quot;,&quot;readResourceMgmt&quot;,&quot;writeResourceMgmt&quot;,&quot;deleteResourceMgmt&quot;]" class="NPCompositeEvent173 NPEvent144 SUIDdatetimenode1 NPResourceInstance85 SUIDnodelist6 SUIDresourcegroupnode2 SUIDresourcedetailnode3 SUIDresourcegroupnode4 SUIDresourcedetailnode5 NPEvent164 NPEvent171 treenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M534,410c0,6.627-5.373,12-12,12H408c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V410z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(408,401.5)" xmlns="http://www.w3.org/2000/svg"><pre id="NPEvent171-text" xmlns="http://www.w3.org/1999/xhtml" title="Othello3">Othello3</pre></foreignObject><a class="conflict" onmouseover="var thisbb = getAbsoluteBoundingBox($('#NPEvent171')[0]);$ ('.conflict-summary').html(&quot;&lt;strong&gt;Conflicts:&lt;/strong&gt;&lt;span class='conflict-item'&gt;Stekkerdoos in event Othello3 is already used by event(s) Othello2.&lt;/span&gt; &lt;span class='conflict-item'&gt;2KW Fresnell in event Othello3 is already used by event(s) Othello2.&lt;/span&gt;&lt;span class='tip'&gt;&lt;/span&gt;&quot;).css('top',thisbb.y-40).css('left',thisbb.x+thisbb.width+20).show()" onmouseout="$('.conflict-summary').hide()" xlink:href="javascript:void(0)"><g class="conflict-alert" style="display:block" id="NPEvent171-alert" transform="translate(524,389)" xmlns="http://www.w3.org/2000/svg"><polygon style="fill:#FFF000" points="9.041,2.756 11.37,0.063 12.041,3.56 15.405,2.392 14.237,5.756 17.734,6.427 15.041,8.756 17.734,11.085 14.237,11.756 15.405,15.121 12.041,13.953 11.37,17.45 9.041,14.756 6.711,17.45 6.04,13.953 2.676,15.121 3.844,11.756 0.347,11.085 3.04,8.756 0.347,6.427 3.844,5.756 2.676,2.392 6.04,3.56 6.711,0.063" xmlns="http://www.w3.org/2000/svg"></polygon><rect x="8.347" y="4.756" width="2.001" height="6" xmlns="http://www.w3.org/2000/svg"></rect><rect x="8.347" y="11.756" width="2.001" height="2" xmlns="http://www.w3.org/2000/svg"></rect></g></a></g><g id="SUIDfetch7" xmlns="http://www.w3.org/2000/svg"><g class="fetch" transform="translate(416,0)" xmlns="http://www.w3.org/2000/svg"><path d="M86,7c0,3.866-2.484,7-5.551,7h-73.898c-3.066,0-5.551-3.134-5.551-7l0,0c0-3.866,2.484-7,5.551-7h73.898C83.516,0,86,4.834,86,7L86,7z" xmlns="http://www.w3.org/2000/svg"></path><text transform="translate(8,10)" xmlns="http://www.w3.org/2000/svg">FETCH MORE</text><path class="datepicker" d="M76,11h1v-1h1v-1h-2V29z M68,3v8h7v-3h3v-5H68z M71,10h-2v-2h2V28z M71,7h-2v-2h2V25zM74,10h-2v-2h2V28z M74,7h-2v-2h2V25z M77,7h-2v-2h2V25z" xmlns="http://www.w3.org/2000/svg"></path></g></g><g id="SUIDdatetimelinenode8" class="datetimelinenode" xmlns="http://www.w3.org/2000/svg"><rect width="300" height="14" transform="translate(266,17)" xmlns="http://www.w3.org/2000/svg"></rect><text transform="translate(277,28)" xmlns="http:// www.w3.org/2000/svg">sun 12-9-2010</text></g><g id="SUIDdatetimelinenode9" class="datetimelinenode" xmlns="http://www.w3.org/2000/svg"><rect width="300" height="14" transform="translate(266,78)" xmlns="http://www.w3.org/2000/svg"></rect><text transform="translate(277,89)" xmlns="http://www.w3.org/2000/svg">mo 13-9-2010</text></g><g id="NPEvent187" cMenu="eventMenu" permissions="[&quot;readEvent&quot;,&quot;writeEvent&quot;,&quot;deleteEvent&quot;,&quot;readResourceMgmt&quot;,&quot;writeResourceMgmt&quot;,&quot;deleteResourceMgmt&quot;]" class="timelinenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M534,116c0,6.627-5.373,12-12,12H408c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V116z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(408,107.5)" xmlns="http://www.w3.org/2000/svg"><pre id="NPEvent187-text" xmlns="http://www.w3.org/1999/xhtml" title="Macbeth 1">Macbeth 1</pre></foreignObject></g><g id="NPEvent217" cMenu="eventMenu" permissions="[&quot;readEvent&quot;,&quot;writeEvent&quot;,&quot;deleteEvent&quot;,&quot;readResourceMgmt&quot;,&quot;writeResourceMgmt&quot;,&quot;deleteResourceMgmt&quot;]" class="timelinenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M534,153c0,6.627-5.373,12-12,12H408c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V153z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(408,144.5)" xmlns="http://www.w3.org/2000/svg"><pre id="NPEvent217-text" xmlns="http://www.w3.org/1999/xhtml" title="The Room 1">The Room 1</pre></foreignObject></g><g id="SUIDdatetimelinenode10" class="datetimelinenode" xmlns="http://www.w3.org/2000/ svg"><rect width="300" height="14" transform="translate(266,176)" xmlns="http://www.w3.org/2000/svg"></rect><text transform="translate(277,187)" xmlns="http://www.w3.org/2000/svg">tue 14-9-2010</text></g><g id="NPEvent233" cMenu="eventMenu" permissions="[&quot;readEvent&quot;,&quot;writeEvent&quot;,&quot;deleteEvent&quot;,&quot;readResourceMgmt&quot;,&quot;writeResourceMgmt&quot;,&quot;deleteResourceMgmt&quot;]" class="timelinenode" xmlns="http://www.w3.org/2000/ svg"><path stroke="none" style="stroke-width:2;" d="M534,251c0,6.627-5.373,12-12,12H408c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V251z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(408,242.5)" xmlns="http://www.w3.org/2000/svg"><pre id="NPEvent233-text" xmlns="http://www.w3.org/1999/xhtml" title="The Room 2">The Room 2</pre></foreignObject></g><g id="SUIDdatetimelinenode11" class="datetimelinenode" xmlns="http://www.w3.org/2000/ svg"><rect width="300" height="14" transform="translate(266,274)" xmlns="http://www.w3.org/2000/svg"></rect><text transform="translate(277,285)" xmlns="http://www.w3.org/2000/svg">wed 15-9-2010</text></g><g id="NPEvent197" cMenu="eventMenu" permissions="[&quot;readEvent&quot;,&quot;writeEvent&quot;,&quot;deleteEvent&quot;,&quot;readResourceMgmt&quot;,&quot;writeResourceMgmt&quot;,&quot;deleteResourceMgmt&quot;]" class="timelinenode" xmlns="http://www.w3.org/2000/ svg"><path stroke="none" style="stroke-width:2;" d="M534,312c0,6.627-5.373,12-12,12H408c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V312z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(408,303.5)" xmlns="http://www.w3.org/2000/svg"><pre id="NPEvent197-text" xmlns="http://www.w3.org/1999/xhtml" title="Hamlet 1">Hamlet 1</pre></foreignObject></g><g id="SUIDdatetimelinenode12" class="datetimelinenode" xmlns="http://www.w3.org/2000/ svg"><rect width="300" height="14" transform="translate(266,335)" xmlns="http://www.w3.org/2000/svg"></rect><text transform="translate(277,346)" xmlns="http://www.w3.org/2000/svg">thu 16-9-2010</text></g><g id="NPEvent138" cMenu="eventMenu" permissions="[&quot;readEvent&quot;,&quot;writeEvent&quot;,&quot;deleteEvent&quot;,&quot;readResourceMgmt&quot;,&quot;writeResourceMgmt&quot;,&quot;deleteResourceMgmt&quot;]" class="timelinenode" xmlns="http://www.w3.org/2000/ svg"><path stroke="none" style="stroke-width:2;" d="M534,373c0,6.627-5.373,12-12,12H408c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V373z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(408,364.5)" xmlns="http://www.w3.org/2000/svg"><pre id="NPEvent138-text" xmlns="http://www.w3.org/1999/xhtml" title="Ongedecideerd">Ongedecideerd</pre></foreignObject></g><g id="NPEvent191" cMenu="eventMenu" permissions="[&quot;readEvent&quot;,&quot;writeEvent&quot;,&quot;deleteEvent&quot;,&quot;readResourceMgmt&quot;,&quot;writeResourceMgmt&quot;,&quot;deleteResourceMgmt&quot;]" class="timelinenode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M534,447c0,6.627-5.373,12-12,12H408c-6.627,0-12-5.373-12-12v-1 ! ! c0-6.627,5.373-12,12-12h114c6.627,0,12,5.373,12,12V447z" xmlns="http://www.w3.org/2000/svg"></path><foreignObject width="111" height="18" transform="translate(408,438.5)" xmlns="http://www.w3.org/2000/svg"><pre id="NPEvent191-text" xmlns="http://www.w3.org/1999/xhtml" title="Macbeth 2">Macbeth 2</pre></foreignObject></g><g id="SUIDdatetimelinenode13" class="datetimelinenode" xmlns="http://www.w3.org/2000/ svg"><rect width="300" height="14" transform="translate(266,470)" xmlns="http://www.w3.org/2000/svg"></rect><text transform="translate(277,481)" xmlns="http://www.w3.org/2000/svg">fri 17-9-2010</text></g><g id="SUIDdatetimelinenode14" class="datetimelinenode" xmlns="http://www.w3.org/2000/svg"><rect width="300" height="14" transform="translate(266,494)" xmlns="http://www.w3.org/2000/svg"></rect><text transform="translate(277,505)" xmlns="http://www.w3.org/2000/svg">sat 18-9-2010</text></g><g id="SUIDdatetimelinenode15" class="datetimelinenode" xmlns="http://www.w3.org/2000/svg"><rect width="300" height="14" transform="translate(266,518)" xmlns="http://www.w3.org/2000/svg"></rect><text transform="translate(277,529)" xmlns="http://www.w3.org/2000/svg">sun 19-9-2010</text></g><g id="SUIDfetch16" xmlns="http://www.w3.org/2000/svg"><g class="fetch" transform="translate(416,542)" xmlns="http://www.w3.org/2000/svg"><path d="M86,7c0,3.866-2.484,7-5.551,7h-73.898c-3.066,0-5.551-3.134-5.551-7l0,0c0-3.866,2.484-7,5.551-7h73.898C83.516,0,86,4.834,86,7L86,7z" xmlns="http://www.w3.org/2000/svg"></path><text transform="translate(8,10)" xmlns="http://www.w3.org/2000/svg">FETCH MORE</text><path class="datepicker" d="M76,11h1v-1h1v-1h-2V29z M68,3v8h7v-3h3v-5H68z M71,10h-2v-2h2V28z M71,7h-2v-2h2V25zM74,10h-2v-2h2V28z M74,7h-2v-2h2V25z M77,7h-2v-2h2V25z" xmlns="http://www.w3.org/2000/svg"></path></ g></g><g id="NPCompositeEvent201" class="node ancestornode" xmlns="http://www.w3.org/2000/svg"><path stroke="none" style="stroke-width:2;" d="M120,285c0,6.627-5.373,8-12,8H52c-6.627,0-12-1.373-12-8l0,0 ! ! ! c0-6.627,5.373-8,12-8h56C114.627,277,120,278.373,120,285L120,285z" xmlns="http://www.w3.org/2000/svg"></path><text style="font-family: 'HelveticaNeue-Bold','Helvetica Neue',Arial,sans-serif; font-size: 9px; font-weight: bold;" transform="translate(52,287.5)" xmlns="http://www.w3.org/2000/svg">Shakespeare</text></g></g></svg></div><ul id="canvasMenu" style="display:none"><li><a action="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;15&quot;].join(&quot;&amp;&quot;)})" permissions="addEvent">Add new event</a></li><li><a action="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;16&quot;].join (&quot;&amp;&quot;)})" permissions="addEvent">Add new group</a></li><li><a action="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;17&quot;].join(&quot;&amp;&quot;)})" id="addresourcemenuitem" permissions="addResource">Add new resource</a></li><li><a isDisable="true" class="disabled pastemenuitem" action="$.ajax ({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;18&quot;].join(&quot;&amp;&quot;)})">Paste</a></li></ul><ul id="eventMenu" style="display:none"><li><a action="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;19&quot;].join (&quot;&amp;&quot;)})" permissions="writeEvent">Rename</a></li><li><a action="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;20&quot;].join(&quot;&amp;&quot;)})" permissions="writeEvent">Ungroup</a></li><li><a menu="groupsmenu" onmouseover="setTimeout(function(){$(&quot;:input:visible&quot;).focus()},250)" permissions="writeEvent">Add to group</ a></li><li><a action="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;21&quot;].join(&quot;&amp;&quot;)})" permissions="deleteEvent">Delete</a></li><li><a action="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot; 22&quot;].join(&quot;&amp;&quot;)})" permissions="readEvent">Copy</a></li><li><a isDisable="true" class="disabled pastemenuitem" action="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;23&quot;].join(&quot;&amp;&quot;)})">Paste</a></li><li><a action="$('#resourceFinder').show().css('visibility','visible');$(&quot;#dropbox&quot;).add($ (&quot;#finderlock&quot;)).show();$(&quot;#title&quot;).hide();finders['resourceFinder'].finderMode = 'finder';finders['resourceFinder'].allowDragging = true;$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;24&quot;].join(&quot;&amp;&quot;)});$(&quot;#finderbasket&quot;).load(&quot;/NextPlan&quot;,[&quot;_s=CY_Wx_-A8j- Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;25&quot;].join(&quot;&amp;&quot;),function(){tickResourcesInBasket()});displayInitialTable();$(&quot;#timelineHeaderInFinder&quot;).hide();$(&quot;#availabilityButton&quot;).show()" permissions="writeResourceMgmt">Add resources</a></li><li><a action="$('#resourceFinder').show().css('visibility','visible');$(&quot;#dropbox&quot;).add($(&quot;#finderlock&quot;)).hide();finders['resourceFinder']['finderMode'] = 'manager';finders['resourceFinder'].allowDragging = false;$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;26&quot;].join(&quot;&amp;&quot;),&quot;complete&quot;:function(){$(&quot;#finderSearch&quot;).val(&quot;&quot;);finderQueryChanged('#finderSearch',finders['resourceFinder'],true);event.preventDefault();}})" permissions="readResourceMgmt">List resources</a></li></ul><ul id="resourceMenu" style="display:none"><li><a action="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;27&quot;].join(&quot;&amp;&quot;),&quot;complete&quot;:function(){$(&quot;#resourceInspector&quot;).load(&quot;/NextPlan&quot;,[&quot;_s=CY_Wx_-A8j- Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;28&quot;].join(&quot;&amp;&quot;),function(){$('#resourceInspector').css('top',$(window).scrollTop()+10).css('left',$(window).scrollLeft()+10).show().css('visibility','visible')})}})" permissions="readResourceMgmt">Info</a></li><li><a action="$('#resourceFinder').show().css('visibility','visible');$(&quot;#dropbox&quot;).add($(&quot;#finderlock&quot;)).show();$(&quot;#title&quot;).hide();finders ['resourceFinder'].finderMode = 'finder';finders['resourceFinder'].allowDragging = true;$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;29&quot;].join(&quot;&amp;&quot;)});$(&quot;#finderbasket&quot;).load(&quot;/NextPlan&quot;,[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;30&quot;].join(&quot;&amp;&quot;),function() {tickResourcesInBasket()});displayInitialTable();$(&quot;#timelineHeaderInFinder&quot;).hide();$(&quot;#availabilityButton&quot;).show()" permissions="writeResourceMgmt">Add resource</a></li><li><a menu="edit-submenu" permissions="writeResourceMgmt" id="edit-submenu">Edit</a></li><li><a action="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot; 31&quot;].join(&quot;&amp;&quot;)})" permissions="writeResourceMgmt">Copy</a></li><li><a class="pastemenuitem disabled" isDisable="true" permissions="writeResourceMgmt" action="$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;32&quot;].join(&quot;&amp;&quot;)})">Paste</a></li><li><a permissions="deleteResourceMgmt" action="$.getScript(&quot;/ NextPlan&quot;+&quot;?&quot;+[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;33&quot;].join(&quot;&amp;&quot;))">Delete</a></li><li><a menu="" permissions="writeResourceMgmt" id="promote-submenu">Promote to</a></li><li><a menu="" permissions="writeResourceMgmt" id="degrade-submenu">Degrade to</a></li></ul><ul id="groupsmenu" style="display:none"><a rel="text"><form accept-charset="utf-8" method="post" action="/NextPlan?_s=CY_Wx_-A8j- Q3hcq&amp;_k=RPZesCNB2JeNsKlE"><input name="34" type="hidden" class="hidden"/><input onkeypress="if((window.event ? window.event.keyCode : event.which) == 13){$.ajax({&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;35&quot;,$(this).closest(&quot;form&quot;).find(&quot;:input&quot;).serialize()].join(&quot;&amp;&quot;),&quot;complete&quot;:function(){$.ajax ({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;36&quot;].join(&quot;&amp;&quot;)});$(&quot;.menuDiv&quot;).remove()}}); return false}; return true" name="37" onfocus="$(this).autocomplete({&quot;select&quot;:function(event,ui){$(this).parent().find(&quot;:input:hidden&quot;).val(ui.item.id)},&quot;source&quot;:function(request,response){$.getJSON (&quot;/NextPlan&quot;+&quot;?&quot;+[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;38&quot;,&quot;39=&quot;+encodeURIComponent(request.term)].join(&quot;&amp;&quot;),function(){response(arguments[0])})}});$(this).parent().find(&quot;:input:hidden&quot;).val(&quot;&quot;)" type="text" class="text"/></form></a></ul><input id="datepicker" type="hidden" class="hidden"/><input id="fetchmoredatepicker" type="hidden" class="hidden"/><div id="renamedialog" style="display:none; position: absolute;"><form accept-charset="utf-8" method="post" action="/NextPlan?_s=CY_Wx_-A8j-Q3hcq&amp;_k=RPZesCNB2JeNsKlE"><fieldset><input onblur="setTimeout(function(){$(&quot;#renamedialog&quot;).hide()},300)" onkeypress="if((window.event ? window.event.keyCode : event.which) == 13){$.ajax({&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;46&quot;,$ (this).closest(&quot;form&quot;).find(&quot;:input&quot;).serialize()].join(&quot;&amp;&quot;),&quot;complete&quot;:function(){$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;47&quot;].join(&quot;&amp;&quot;)});$(&quot;#renamedialog&quot;).hide()}}); return false}; return true" name="48" type="text" class="text"/><button onclick="$.ajax ({&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;49&quot;,$(this).closest(&quot;form&quot;).find(&quot;:input&quot;).serialize()].join(&quot;&amp;&quot;),&quot;complete&quot;:function(){$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;50&quot;].join (&quot;&amp;&quot;)});$(&quot;#renamedialog&quot;).hide()}})" type="button" class="button">ok</button><button onclick="$(&quot;#renamedialog&quot;).hide()" type="button" class="button">cancel</button></fieldset></form></div><div id="changeplaceholdernumberdialog" style="display:none; position: absolute;"><form accept-charset="utf-8" method="post" action="/NextPlan?_s=CY_Wx_-A8j-Q3hcq&amp;_k=RPZesCNB2JeNsKlE"><fieldset><input onkeypress="if((window.event ? window.event.keyCode : event.which) == 13){$.ajax({&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;51&quot;,$(this).closest(&quot;form&quot;).find(&quot;:input&quot;).serialize()].join(&quot;&amp;&quot;),&quot;complete&quot;:function(){$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j- Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;52&quot;].join(&quot;&amp;&quot;)});$(&quot;#changeplaceholdernumberdialog&quot;).hide()}}); return false}; return true" name="53" type="text" class="text"/><button onclick="$.ajax({&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;54&quot;,$(this).closest(&quot;form&quot;).find(&quot;:input&quot;).serialize()].join (&quot;&amp;&quot;),&quot;complete&quot;:function(){$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;55&quot;].join(&quot;&amp;&quot;)});$(&quot;#changeplaceholdernumberdialog&quot;).hide()}})" type="button" class="button">ok</button><button onclick="$(&quot;#changeplaceholdernumberdialog&quot;).hide()" type="button" class="button">cancel</ button></fieldset></form></div><ul id="addtoset-submenu" style="display:none"><a rel="text"><form accept-charset="utf-8" method="post" action="/NextPlan?_s=CY_Wx_-A8j-Q3hcq&amp;_k=RPZesCNB2JeNsKlE"><input name="67" type="hidden" class="hidden"/><input onkeypress="if((window.event ? window.event.keyCode : event.which) == 13){$.ajax({&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;68&quot;,$ (this).closest(&quot;form&quot;).find(&quot;:input&quot;).serialize()].join(&quot;&amp;&quot;),&quot;complete&quot;:function(){$(&quot;body&quot;).append(&quot;&lt;div class=&quot;loading&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;/images/wait.gif&quot;/&gt;&lt;/div&gt;&quot;);$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;69&quot;].join z-index 2 (&quot;&amp;&quot;),&quot;complete&quot;:function(){archiveOpenSets(finders['resourceFinder']);finderQueryChanged('#finderSearch',finders['resourceFinder'],false);$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;70&quot;].join(&quot;&amp;&quot;)});$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/ NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;71&quot;].join(&quot;&amp;&quot;)});$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;72&quot;].join(&quot;&amp;&quot;)});$(&quot;#resourcefinderPrice&quot;).load(&quot;/NextPlan&quot;,[&quot;_s=CY_Wx_-A8j- Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;73&quot;].join(&quot;&amp;&quot;));$(&quot;#addtoset-submenu&quot;).load(&quot;/NextPlan&quot;,[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;74&quot;].join(&quot;&amp;&quot;));$(&quot;body&quot;).children(&quot;.loading&quot;).remove();$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j- Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;75&quot;].join(&quot;&amp;&quot;)})}});$(&quot;.menuDiv&quot;).remove()}}); return false}; return true" name="76" onfocus="$(this).autocomplete({&quot;select&quot;:function(event,ui){$(this).parent().find(&quot;:input:hidden&quot;).val(ui.item.id)},&quot;source&quot;:function(request,response){$.getJSON(&quot;/NextPlan&quot;+&quot;?&quot;+[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot; 77&quot;,&quot;78=&quot;+encodeURIComponent(request.term)].join(&quot;&amp;&quot;),function(){response(arguments[0])})}});$(this).parent().find(&quot;:input:hidden&quot;).val(&quot;&quot;)" type="text" class="text"/></form></a></ul><ul id="finderMenu" style="display:none"><li><a action="$.ajax({&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;99&quot;].join (&quot;&amp;&quot;),&quot;complete&quot;:function(){$(&quot;#resourceInspector&quot;).load(&quot;/NextPlan&quot;,[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;100&quot;].join(&quot;&amp;&quot;),function(){$('#resourceInspector').css('top',$(window).scrollTop()+10).css('left',$(window).scrollLeft()+10).show().css('visibility','visible')})}})" permissions="[&quot;readResource&quot;]">Info</a></li><li><a permissions="[&quot;unlocked&quot;,&quot;addResource&quot;]" action="$.ajax({&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;101&quot;].join(&quot;&amp;&quot;),&quot;complete&quot;:function(){$.ajax({&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;102&quot;].join(&quot;&amp;&quot;),&quot;complete&quot;:function(){$ (&quot;#resourceInspector&quot;).load(&quot;/NextPlan&quot;,[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;103&quot;].join(&quot;&amp;&quot;),function(){$('#resourceInspector').css('top',$(window).scrollTop()+10).css('left',$(window).scrollLeft()+10).show().css('visibility','visible')})}})}})">Add new resource</a></li><li><a permissions="[&quot;unlocked&quot;,&quot;addResource&quot;]" action="$.ajax({&quot;url&quot;:&quot;/ NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;104&quot;].join(&quot;&amp;&quot;),&quot;complete&quot;:function(){$.ajax({&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;105&quot;].join(&quot;&amp;&quot;),&quot;complete&quot;:function(){$(&quot;#resourceInspector&quot;).load(&quot;/NextPlan&quot;,[&quot;_s=CY_Wx_-A8j- Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;106&quot;].join(&quot;&amp;&quot;),function(){$('#resourceInspector').css('top',$(window).scrollTop()+10).css('left',$(window).scrollLeft()+10).show().css('visibility','visible')})}})}})">Add new financial resource</a></li><li><a permissions="[&quot;unlocked&quot;,&quot;addResource&quot;]" action="$.ajax({&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j- Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;107&quot;].join(&quot;&amp;&quot;),&quot;complete&quot;:function(){$(&quot;body&quot;).append(&quot;&lt;div class=&quot;loading&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;/images/wait.gif&quot;/&gt;&lt;/div&gt;&quot;);$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeNsKlE&quot;,&quot;108&quot;].join (&quot;&amp;&quot;),&quot;complete&quot;:function(){archiveOpenSets(finders['resourceFinder']);finderQueryChanged('#finderSearch',finders['resourceFinder'],false);$.ajax({&quot;dataType&quot;:&quot;script&quot;,&quot;url&quot;:&quot;/NextPlan&quot;,&quot;data&quot;:[&quot;_s=CY_Wx_-A8j-Q3hcq&quot;,&quot;_k=RPZesCNB2JeN z-index 3 ... Fr day 17 September 2010
  28. 28. JQuery-SVG • jQuery load for SVG content • Load new content in SVG canvas • Add content at end of SVG Canvas • + add content to existing SVG element • Control "z-index" by adding to SVG groups • Not yet present on squeaksource / jQuery plugin Friday 17 September 2010

×