SlideShare a Scribd company logo
NeXTPLAN*
                             Enterprise software that rocks!
                                      with Seaside & Smalltalk




                            Johan Brichau - johan@inceptive.be




Monday 13 September 2010
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.



Monday 13 September 2010
NeXTPLAN*




Monday 13 September 2010
NeXTPLAN*




Monday 13 September 2010
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


Monday 13 September 2010
Demo 1


                  • [demo to show component interactions in
                           calendar: grouped events & bubbles,
                           changing names, decoration]




Monday 13 September 2010
Component-based




Monday 13 September 2010
Component-based




Monday 13 September 2010
Component-based




Monday 13 September 2010
Ajax Updates Architecture

                  • Every operation eventually invokes the
                           update rendering

                  • Update rendering
                            • Component re-rendering
                            • Ajax-jQuery replace operation




Monday 13 September 2010
Global Ajax Update




Monday 13 September 2010
Global Ajax Update




Monday 13 September 2010
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

Monday 13 September 2010
Local updates




Monday 13 September 2010
Local updates




Monday 13 September 2010
Local updates




Monday 13 September 2010
Local updates




Monday 13 September 2010
Local updates




            Updates of other users (via database changes)!
Monday 13 September 2010
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




Monday 13 September 2010
Seaside Design Pattern?
                            UpdateableComponent
                           htmlId
                           renderContentOn:       Complete render
                           renderInternalOn:      Internal render
                           needsRefresh           Wants to render?
                           scriptToUpdateOn:      Script to render




Monday 13 September 2010
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]




Monday 13 September 2010
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]




Monday 13 September 2010
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:




Monday 13 September 2010
Local updates



                 • Own session changes
                           • True object-based change propagation

                 • Concurrent session changes
                           • Manual handling


Monday 13 September 2010
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


Monday 13 September 2010
Demo 2


                 • [show Tree view animations driven by Ajax
                           updates]




Monday 13 September 2010
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
                              ...




Monday 13 September 2010
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


Monday 13 September 2010
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!
NeXTPLAN: Enterprise software that rocks!

More Related Content

Viewers also liked

Lean Social How to Pick the Right Social Media for your Business - Forward ...
Lean Social   How to Pick the Right Social Media for your Business - Forward ...Lean Social   How to Pick the Right Social Media for your Business - Forward ...
Lean Social How to Pick the Right Social Media for your Business - Forward ...
Social Jack
 
iPhone Backup SMS
iPhone Backup SMS iPhone Backup SMS
iPhone Backup SMS
malfredalouise
 
KieferorthopädieZahnversicherung?
KieferorthopädieZahnversicherung?KieferorthopädieZahnversicherung?
KieferorthopädieZahnversicherung?
malfredalouise
 
Smalltalk Debug Lives in the Matrix
Smalltalk Debug Lives in the MatrixSmalltalk Debug Lives in the Matrix
Smalltalk Debug Lives in the Matrix
ESUG
 
FirstSecondDraft
FirstSecondDraftFirstSecondDraft
FirstSecondDraftLaraMedia
 
EXCEL Extraction
EXCEL ExtractionEXCEL Extraction
EXCEL Extraction
ESUG
 

Viewers also liked (7)

Lean Social How to Pick the Right Social Media for your Business - Forward ...
Lean Social   How to Pick the Right Social Media for your Business - Forward ...Lean Social   How to Pick the Right Social Media for your Business - Forward ...
Lean Social How to Pick the Right Social Media for your Business - Forward ...
 
A.FAHEEM SHEIKH_CV
A.FAHEEM SHEIKH_CVA.FAHEEM SHEIKH_CV
A.FAHEEM SHEIKH_CV
 
iPhone Backup SMS
iPhone Backup SMS iPhone Backup SMS
iPhone Backup SMS
 
KieferorthopädieZahnversicherung?
KieferorthopädieZahnversicherung?KieferorthopädieZahnversicherung?
KieferorthopädieZahnversicherung?
 
Smalltalk Debug Lives in the Matrix
Smalltalk Debug Lives in the MatrixSmalltalk Debug Lives in the Matrix
Smalltalk Debug Lives in the Matrix
 
FirstSecondDraft
FirstSecondDraftFirstSecondDraft
FirstSecondDraft
 
EXCEL Extraction
EXCEL ExtractionEXCEL Extraction
EXCEL Extraction
 

Similar to NeXTPLAN: Enterprise software that rocks!

JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureSimon Willison
 
React Native: Introduction
React Native: IntroductionReact Native: Introduction
React Native: Introduction
InnerFood
 
JS & NodeJS - An Introduction
JS & NodeJS - An IntroductionJS & NodeJS - An Introduction
JS & NodeJS - An Introduction
Nirvanic Labs
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
Simon Willison
 
Get Ahead with HTML5 on Moible
Get Ahead with HTML5 on MoibleGet Ahead with HTML5 on Moible
Get Ahead with HTML5 on Moible
markuskobler
 
Node.JS briefly introduced
Node.JS briefly introducedNode.JS briefly introduced
Node.JS briefly introduced
Alexandre Lachèze
 
Node azure
Node azureNode azure
Node azure
Emanuele DelBono
 
Testing frontends with nightwatch & saucelabs
Testing frontends with nightwatch & saucelabsTesting frontends with nightwatch & saucelabs
Testing frontends with nightwatch & saucelabs
Tudor Barbu
 
Real Time Web - What's that for?
Real Time Web - What's that for?Real Time Web - What's that for?
Real Time Web - What's that for?Martyn Loughran
 
Bruce Lawson, Web Development 2.0, SparkUp! Poznan Poland
Bruce Lawson, Web Development 2.0, SparkUp! Poznan PolandBruce Lawson, Web Development 2.0, SparkUp! Poznan Poland
Bruce Lawson, Web Development 2.0, SparkUp! Poznan Poland
brucelawson
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
Andrew Rota
 
openMIC barcamp 11.02.2010
openMIC barcamp 11.02.2010openMIC barcamp 11.02.2010
openMIC barcamp 11.02.2010Patrick Lauke
 
Scala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @CourseraScala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @Coursera
C4Media
 
Treinamento frontend
Treinamento frontendTreinamento frontend
Treinamento frontend
Adrian Caetano
 
Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Enginecatherinewall
 
Bruce lawson-over-the-air
Bruce lawson-over-the-airBruce lawson-over-the-air
Bruce lawson-over-the-air
brucelawson
 

Similar to NeXTPLAN: Enterprise software that rocks! (20)

JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
 
handout-05b
handout-05bhandout-05b
handout-05b
 
handout-05b
handout-05bhandout-05b
handout-05b
 
React Native: Introduction
React Native: IntroductionReact Native: Introduction
React Native: Introduction
 
JS & NodeJS - An Introduction
JS & NodeJS - An IntroductionJS & NodeJS - An Introduction
JS & NodeJS - An Introduction
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
 
Get Ahead with HTML5 on Moible
Get Ahead with HTML5 on MoibleGet Ahead with HTML5 on Moible
Get Ahead with HTML5 on Moible
 
Node.JS briefly introduced
Node.JS briefly introducedNode.JS briefly introduced
Node.JS briefly introduced
 
Node azure
Node azureNode azure
Node azure
 
Mlocjs buzdin
Mlocjs buzdinMlocjs buzdin
Mlocjs buzdin
 
Testing frontends with nightwatch & saucelabs
Testing frontends with nightwatch & saucelabsTesting frontends with nightwatch & saucelabs
Testing frontends with nightwatch & saucelabs
 
Real Time Web - What's that for?
Real Time Web - What's that for?Real Time Web - What's that for?
Real Time Web - What's that for?
 
Bruce Lawson, Web Development 2.0, SparkUp! Poznan Poland
Bruce Lawson, Web Development 2.0, SparkUp! Poznan PolandBruce Lawson, Web Development 2.0, SparkUp! Poznan Poland
Bruce Lawson, Web Development 2.0, SparkUp! Poznan Poland
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
 
openMIC barcamp 11.02.2010
openMIC barcamp 11.02.2010openMIC barcamp 11.02.2010
openMIC barcamp 11.02.2010
 
Scala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @CourseraScala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @Coursera
 
Treinamento frontend
Treinamento frontendTreinamento frontend
Treinamento frontend
 
Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Engine
 
Bruce lawson-over-the-air
Bruce lawson-over-the-airBruce lawson-over-the-air
Bruce lawson-over-the-air
 

More from ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
ESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
ESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

More from ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Recently uploaded

To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 

Recently uploaded (20)

To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 

NeXTPLAN: Enterprise software that rocks!

  • 1. NeXTPLAN* Enterprise software that rocks! with Seaside & Smalltalk Johan Brichau - johan@inceptive.be Monday 13 September 2010
  • 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. Monday 13 September 2010
  • 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 Monday 13 September 2010
  • 6. Demo 1 • [demo to show component interactions in calendar: grouped events & bubbles, changing names, decoration] Monday 13 September 2010
  • 10. Ajax Updates Architecture • Every operation eventually invokes the update rendering • Update rendering • Component re-rendering • Ajax-jQuery replace operation Monday 13 September 2010
  • 11. Global Ajax Update Monday 13 September 2010
  • 12. Global Ajax Update Monday 13 September 2010
  • 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 Monday 13 September 2010
  • 14. Local updates Monday 13 September 2010
  • 15. Local updates Monday 13 September 2010
  • 16. Local updates Monday 13 September 2010
  • 17. Local updates Monday 13 September 2010
  • 18. Local updates Updates of other users (via database changes)! Monday 13 September 2010
  • 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 Monday 13 September 2010
  • 20. Seaside Design Pattern? UpdateableComponent htmlId renderContentOn: Complete render renderInternalOn: Internal render needsRefresh Wants to render? scriptToUpdateOn: Script to render Monday 13 September 2010
  • 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] Monday 13 September 2010
  • 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] Monday 13 September 2010
  • 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: Monday 13 September 2010
  • 24. Local updates • Own session changes • True object-based change propagation • Concurrent session changes • Manual handling Monday 13 September 2010
  • 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 Monday 13 September 2010
  • 26. Demo 2 • [show Tree view animations driven by Ajax updates] Monday 13 September 2010
  • 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 ... Monday 13 September 2010
  • 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 Monday 13 September 2010