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)
Would it be possible to write a full blown TeamViewer in B4X in just 30 days? That was the question posed about a week ago on the B4X forum. Not a small thing to ask, because how would one get started with something huge as this?
TeamViewer has a lot to offer:
Remote control a PC/Mobile
File Transfer
Clipboard copy between host and client
Advanced Remote functionalities like doing a Reboot
Reduce resolution/remove wallpaper on slow connections
Address book
Multiple connections
…
Could this be done?
Saif Sameer and his team of B4XCode.com say they can. And they even upped the ante by saying they would do it in just 30 days!
They have released the source code of some excellent Android/Desktop apps written in B4X the past few weeks so I have full confidence if they say they can, they will.
This small team of gifted programmers and UX designers have been selling the source code of some eye catching programs made in B4X:
Some of the projects B4XCode.com is selling
They have taken on this challenge in sort of a ‘crowdfunding’ way: if you sign in for just $50, you will receive the full source code of the project! (EDIT: extended to 2021-02-1, normal price $350)
I already did and many others and so should you. Even if you do not plan to use it, the learning experience on how they did it is probably the best money you will spend this year! I’m very excited about this project and am following its progress like a hawk.
We are only one week in, and the first results they’ve shown are very promising indeed.
Some young and interested African tech enthusiasts completed their first IoT course using the free B4X tools from Anywhere Software, congratulations!
In a hackathon event in celebration with International Arduino Day 2019, a deep overview as seminar on B4X products and specifically utilizing B4R with famous micro controllers and technologies was organized.
1. GetViewFromLayoutArray() and GetAllViewsFromLayoutArray() has now an extra first parameter to allow adding the B4J class where the layout was loaded.
2. New params to config the paths for a build:
SCRIPTS_FOLDER
ASSETS_FOLDER
STYLES_FOLDER
3. BANanoSkeletonCSS added some properties. You will need to copy the new Library to your Additional Libraries folder if you have already used it. The CSS file was also changed.
4. New example Website with multiple pages. I made two versions, one using a Router, one without a Router.
IMPORTANT: they need to run on a real server (or e.g. the Chrome Server plugin!)
It is a real world example I wrote for a friend of mine who owns a B&B.
Demonstrates:
multi-pages
multilingual supports
browsers Back/Forward buttons support.
floating navigation bar
It is ridiculous how little programming I had to do to make his site. Finished the whole thing in a morning. 🙂
Both examples are heavily commented.
5. The following JavaScript DOM objects have been wrapped:
ABMaterial public version 1.07 is now available from the B4J website!
What’s new:
ABMGenerator object: allows generating CRUD and messagebox modal sheets fast
Given a set of parameters in a couple of lines of code, ABMGenerator can generate several hundreds of lines of B4J code that only need to be tuned by the programmer to its specific wishes.
Version 1.08 is going to be all about speed! But I’ll post a seperate article on my experiences here later on this. A couple of new components off course and some new functionalities in the ABMNavigationBar. Donators should have received this version by now. (mail me if you didn’t).