aboutsummaryrefslogtreecommitdiffstats
path: root/static/bigpipe.js
AgeCommit message (Collapse)AuthorFilesLines
2018-12-31Temporary branch: last-pagelet-event-optimizationlast-pagelet-event-optimizationThomas Lange1-8/+28
2018-02-03Rename payload object "dataJSON" to just "data"Thomas Lange1-11/+11
2018-01-21Change the mechanism how BigPipe detects the last pageletThomas Lange1-9/+18
This commit is a preparation for a few further commits and changes the mechanism how the BigPipe javascript library detects the last flushed pagelet from server. Previously, there was a "IS_LAST:true" property in the JSON encoded pagelet object. However, this meant that when the pagelet was sent to the client, the server already needed to know at this point that this is the last pagelet. This can no longer be reliably determined in the future due to smaller restructuring. Instead of sending "IS_LAST:true" within the JSON encoded pagelet object of the last pagelet, the BigPipe::render() method on the server will display a <script> element which calls "BigPipe.onLastPageletArrived()" after all pagelets have been flushed. This call informs the javascript library that the last pagelet has been flushed and arrived at the client. This is required because the BigPipe javascript library otherwise doesn't know that the last pagelet has been arrived (the javascript library waits for all pagelets to be flushed and displayed until it begins to execute the external javascript resources of every pagelet).
2018-01-20Fix inconsistent line separators across filesThomas Lange1-365/+365
The development of this project began several years ago on a Windows system until I switched to GNU\Linux. Therefore, some files contained CRLF as line separators, now replaced with LF.
2017-11-23The file permissions have been normalized.Thomas Lange1-0/+0
2017-08-27The javascript library is now running in strict mode.Thomas Lange1-0/+1
2017-08-27Optimization: The javascript library has been restructured and is now using ↵Thomas Lange1-198/+202
the "class" keyword which was introduced in ECMAScript 6 (2015) to build the prototypes. In addition, some variables and functions were renamed and declared with the shorthand syntax.
2017-08-26Optimization: Some anonymous callback functions has been simplified with ↵Thomas Lange1-9/+9
arrow functions which were introduced in ECMAScript 6 (2015).
2017-08-25Optimization: Some comments has been optimized and all occurrences of "var" ↵Thomas Lange1-17/+17
has been replaced by the new introduced keyword "let" from ECMAScript 6 (2015), which scopes the variable to the nearest enclosing block instead of the nearest function block.
2017-08-25A missing semicolon has been added and an unused property from the Resource ↵Thomas Lange1-5/+4
prototype was removed.
2017-08-25Optimization: The outsourced function "globalExecution" is no longer ↵Thomas Lange1-2/+2
necessary and has been replaced by a simpler variant inside the BigPipe library.
2017-08-25Bugfix: Javascript code for stopping the current request moved into a ↵Thomas Lange1-1/+5
try/catch block to prevent troubles with some creepy Microsoft browsers.
2016-07-10Each resource has now an ID; Code improvements and comment blocks added.Thomas Lange1-27/+23
2016-06-25Update with new features and code improvements.Thomas Lange1-96/+148
+ New classes have been added: "BigPipe\Resource", "BigPipe\Resource\CSS", "BigPipe\Resource\JS". If you wan't to add a resource to a Pagelet, you can now built a new resource object with the "CSS" or "JS" class (the "Resource" class is abstract and the parent class of "CSS" and "JS") and can add PhaseDoneJS callbacks for this resources with "Resource::addPhaseDoneJS()" similar to "Pagelet::addPhaseDoneJS()". To add the resource to your pagelet: "$Pagelet->addResource($Resource)". Of course, you can still use the two SHORT methods "Pagelet::addCSS()" and "Pagelet::addJS()" which needs only one parameter with the resource URL. + Each resource has now PhaseDoneJS callbacks for 3 phases (Object initializied [INIT], Loading started [LOAD], Loading complete [DONE]). + Check your usage of the PhaseDoneJS callback constants of the Pagelet class: These constants have been renamed. + Debugging mode: Just set BigPipe::debugging(TRUE) and each pagelet and resource will be pass through a function which adds PhaseDoneJS callbacks with debug informations (Look now at the Javascript console and enjoy the beautiful colors which makes the debug informations better readable for your eyes. \(o_o)/). + Several code improvements on almost all files.
2016-06-23Pagelets executed immediately; Dependency feature; Several improvementsThomas Lange1-86/+113
+ All pagelets are now executed immediately on arrive. + A "Display Dependency" feature was added. If you give a pagelet an dependency, it will first be executed if all pagelets, who registered as dependency, are displayed. + If BigPipe.reset() is called, the function loops through each Resource and executes Resource.abortLoading(). This removes the <link> or <script> element from DOM and removes the onload callbacks. This is to prevent that an onload callback from a previous page are executed while the user has already changes the page asynchronously and a resource from the previous page wasn't already loaded.
2016-05-13Multiple updatesThomas Lange1-5/+15
2016-04-22Multiple updates with async demo.Thomas Lange1-272/+272
2015-12-26Multiple updates; new feature PhaseDoneJSThomas Lange1-78/+77
2015-04-15Some changesThomas Lange1-1/+1
2015-04-15Initial commitThomas Lange1-0/+274