IMPORTANT! Do NOT use v6.57 anymore if you are using it to make ABMBANanoLibraries!
1. [FIX] ABMBANano Libraries losing Websocket connection ——————————————————– I had to find this out myself the hard way, but there was a major flaw in the generation of the ‘glue’ code: It only worked for ONE instance of the page. So as soon as two or more users accessed the page, the previous ones broke the connection.
You will have to recompile your existing ABMBANanoLibraries with this new version and make the changes in the calling ABM app described below:
Consequences on this fix:
a. Step 3. (Call this method in ConnectPage() to set the WebSocket) has to be removed b. In each call to an ABMBANano library in ABM, you must pass the WebSocket (ws) in the method as the first parameter.
2. [NEW] TranspilerOptions.Author and .IDECmment ———————————————— Added to comply with the latest version of B4J
As some may know, ABMaterial (ABM) has some basic JavaScript functionality build-in called B4JS. It was the predecessor of BANano. However, because of the design of ABM, B4JS could never reach its full potential. But from that came the idea to write a full blown true B4J to JavaScript Transpiler and BANano was born: (Thinking in retrospect, B4JS in ABM may have been a poor choice of words, as BANano covers much more that term)
In my day job at OneTwo, we use ABM in most of our projects. But sometimes we just miss that extra BANano can do on the Browser side. For new projects, we mostly use a BANanoServer instead of an ABMServer, but we still have many ABM apps running and continue to write extra functionalities to those apps. What if we could use BANano generated code IN ABMaterial?
Hence this new idea came up: If BANano could generate .b4xlib libraries, writing the ‘glue’ between ABM and BANano, that would be a great asset to add features to ABM!
Check out point 7 for more info on how it is done!
Changes:
1. [NEW] BANano.SetTabNotification(number As String)
Adds a notification number to the browsers tab. e.g. ‘(2) My Website’
2. [NEW] BANano.DeepClone(Obj as Object)
Deep Clones an object (e.g. a map)
3. [NEW] BANano.CreateElement(Tag as String) As BANanoElement
Creates a BANanoElement, not attached to something
4. [NEW] Use you own favicon.ico
If a favicon.ico is found in the /Files folder, it is used instead of the default BANano one.
5. [NEW] Optimisations saved to file
As the log only shows the first x of optimizations, the full list is now saved in OPTIMISATIONS.txt
6. [FIX] Fixes in how the Service worker handles additional Javascript Files
In some rare cases, the Service worker did not included some needed Javascript files. This part of the engine has been rewritten.
7. [NEW] BANano.BuildAsB4XLibForABM(LibraryVersion As String)
New transpilation to create ABMBANano b4xlib libraries for ABMaterial.
8. [NEW] BANano.RaiseEventToABM(eventName As String, eventParamNames as List, eventParamValues as List, Description as String)
Method to raise an event to a ABM, maximum two params because B4J only supports this maximum. Use a Map is more are needed. The Description will be added to the generated .bas file for ABM as comment.
See 7 for usage.
9. [NEW] BANano.Spread(variable as Object) as Object
Adds the spread operator (three dots) before the variable. e.g. BANano.Spread(myVar)