B4J Library [Web][BANano] Website/App/PWA library with Abstract Designer support

BANano7.jpg


BANano7architecture2.jpg



INTRO

BANano is a new B4J library to websites/webapps with (offline) Progressive Web App support. Unlike its big brother ABMaterial, BANano does not rely on any particular framework like Materialize CSS. You will have to write that part yourself, but on the other hand, you have the choice to pick which one.

Why a second framework? Well, from the start ABMaterial was build with a back server in mind. B4J has great support to setup a very powerful jServer to handle web requests. Which does mean all intelligence is at the server side and you have the full power of B4J to do whatever you want (secure database access, serial communication, cache control etc). With B4JS, some of this intelligence could be transferred to the browser side, but the app still needs internet/intranet access so this is as far as it could go.

INTRODUCTION PODCAST TO BANano (A.I. generated from the booklet)

http://sndup.net/hncr6

BANano is a different animal. It can use a Service Worker to 'install' the web app in the browser, so it can also work when the user is offline. While ABMaterial builds the page from the server side, BANano builds it from the browser side. This means EVERYTHING you write in B4J is transpiled to Javascript, HTML and CSS.

But with great power comes great responsibility! Unlike ABMaterial, some basic knowledge of HTML, CSS and to some extend Javascript is needed to build BANano apps. It makes excellent use of B4X's SmartStrings to create the HTML part of the app. BANano gives you a set of tools to write your own wrapper around any framework (MiniCSS, Skeleton, Spectre, Bootstrap, ...), which then can be easily used to quickly build webapps/websites.

DEMO/EXAMPLES BANanoSkeleton UI library (70+ components)

https://gorgeousapps.com/BANanoSkeleton/

OVERVIEW

A quick overview to show the different uses of both frameworks:

overview.png

So both frameworks have their specific target, both for the programmer and the app you want to make.

Abstract Designer support in v2.0+

BANano1.21.png


LICENSE

Freeware/Donationware License

B4J is Copyright (c) 2010 - 2018 by Anywhere Software All Rights Reserved.
LIBRARY (Library/library): B4J library files BANano.jar and BANano.xml (by Alain Bailleul)
SOFTWARE (Software/software): Computer Software
APPLICATION (Application/application): Any end product as the result of compiling with an Anywhere Software product
SOURCE CODE: human-readable program statements written by a programmer or developer in a high-level or assembly language that are not directly readable by a computer and that need to be compiled into object code before they can be executed by a computer

BY USING THIS LIBRARY, YOU AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE.

1. THIS LIBRARY IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL ANY COPYRIGHT HOLDER/AUTHOR/DEVELOPER BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,SPECIAL,INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY INCLUDING BUT NOT LIMITED TO LOSS OF DATA, FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER PROGRAMS OR LIBRARY, EVEN IF COPYRIGHT HOLDER/AUTHOR/DEVELOPER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

2. YOU MAY NOT COPY, SUB-LICENSE, REVERSE ENGINEER, DECOMPILE, DISASSEMBLE, OR MODIFY THIS LIBRARY IN ANY WAY.

3. YOU MAY NOT DISTRIBUTE THE LIBRARY ON ANY MEDIUM WITHOUT PRIOR NOTICE FROM ALAIN BAILLEUL (alain.bailleul@telenet.be). YOU HAVE TO ASK FOR PERMISSION IN ORDER TO MAKE THIS LIBRARY AVAILABLE FOR DISTRIBUTION OVER THE INTERNET OR ANY OTHER DISTRIBUTABLE MEDIUM.

4. YOU AGREE NOT TO DISTRIBUTE FOR A FEE AN APPLICATION USING THE LIBRARY THAT, AS ITS PRIMARY PURPOSE, IS DESIGNED TO BE AN AID IN THE DEVELOPMENT OF SOFTWARE FOR YOUR APPLICATION'S END USER. SUCH APPLICATION INCLUDES, BUT IS NOT LIMITED TO, A DEVELOPMENT IDE OR A B4J SOURCE CODE GENERATOR.

By possessing and/or using this library you are automatically agreeing to and show that you have read and understood the terms and conditions contained within this Freeware Software License Agreement. This Freeware Software License Agreement is then effective while you possess, use and continue to make use of these software products. If you do not agree with our Freeware Software License Agreement you must not possess or use our library products - this Freeware Software License Agreement will then not apply to you. This Freeware Software License Agreement is subject to change without notice.

Violators of this agreement will be prosecuted to the full extent of the law.

This library is free, however if you do enjoy it, please consider a donation to Alain Bailleul (alain.bailleul@telenet.be) for his time and efforts to make this library possible.

This license file (LICENSE.TXT) shall be included in all copies of the library or any distribution using the library in any form resulting from mechanical transformation or translation of the source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

If you have any questions regarding this license, please contact alain.bailleul@telenet.be

Cheers,

Alain
 
Last edited:

alwaysbusy

Expert
Licensed User
Longtime User

alwaysbusy

Expert
Licensed User
Longtime User
Please do not post in this topic and start a new one with [BANano] in the subject and some small example that demonstrates the problem. Big parts of the core have been rewritten from scratch so some specific transpiler cases like this may have to be reviewed. We have not encountered this problem in our Unit testing however, so a sample is essential.
 

Mashiane

Expert
Licensed User
Longtime User
Please do not post in this topic and start a new one with [BANano] in the subject and some small example that demonstrates the problem. Big parts of the core have been rewritten from scratch so some specific transpiler cases like this may have to be reviewed. We have not encountered this problem in our Unit testing however, so a sample is essential.
Im sorry I thought I was responding to the post you made in the question I asked.
 

angel_

Well-Known Member
Licensed User
Longtime User
When including the latest version of BANanoSkeleton, the old version appears

Capture.png
 

alwaysbusy

Expert
Licensed User
Longtime User
@angel_ I'll try to upload a new version on Monday where this is corrected as this weekend we are trying to find the specific case reported in the new transpiler where the setter/getter appears to go wrong somehow but without an small runnable example of the error it is like searching for a needle in a haystack. We'd love to add it to our unit testing as we want BANano to be used as close as possible to how B4J operates but something must be done differently than we do in our WebApps. We are rather clueless for the moment as our getter/setter's just work fine as does it probably for anyone not using this specific library.
 

alwaysbusy

Expert
Licensed User
Longtime User
BANano 9.02 Released. See: https://www.b4x.com/android/forum/t...h-abstract-designer-support.99740/post-627764

IMPORTANT TAKE A BACKUP!

Ability to be able to make Web Components. (creating your own HTML Tags)

Web components are a set of web platform APIs that allow you to create new custom, reusable, encapsulated HTML tags to use in web pages and web apps. Custom components and widgets build on the Web Component standards, will work across modern browsers, and can be used with any JavaScript library or framework that works with HTML.

See Chapter 17 in the booklet for more information

Several bug fixes where done with one important one you should be aware of:

BANano.Split(). After spending quite some time looking why some code did work in B4J but not in BANano, we found out that the split functionality is very different between Java and JavaScript, especially when it comes to empty values before and after the delimiter. As we strive to have as much compatibility between B4J and BANano code, we have now made the JavaScript behavior identical to how it works in Java. So if you have used this method, you should check your code. It may or may not have impact on your code.

Note: You can now also use Regex.Split() in your BANano code (not the other RegEx methods. You can use BANanoRegEx for that).

BANanoSkeleton has also some bug fixes and 3 new components:

SKSVGSurface
SKTimeStartStop
SKTreeView

Alwaysbusy
 

alwaysbusy

Expert
Licensed User
Longtime User
BANano 9.03 Released. See: https://www.b4x.com/android/forum/t...h-abstract-designer-support.99740/post-627764

IMPORTANT TAKE A BACKUP!

[FIX]: The BANanoSkeleton.b4xlib seemed to be corrupt in the 9.02 version. Since the last update of Windows 7 when I do "compress to" in Windows to a zip file, I end up with a corrupt .zip file that B4J can't read (something with the header). With 7-zip it seems ok.

[FIX]: Regex.Split() additional compatibility with Java if the string to split does not contain the delimiter, it now also returns an array with that string in it.

Alwaysbusy
 

Cableguy

Expert
Licensed User
Longtime User

pixet

Member
Licensed User
Longtime User
A demo to download and test locally could be effective for a more in-depth evaluation.
I did not find a link to download the demo.
 

tango

Active Member
Licensed User
Longtime User
BANano.Build(File.DirApp)

banano 9.03 PWA give error and all my try is failed
but minimal is not
why?
is there any problem about şnternal designer?
 

Attachments

  • banano9-h1.PNG
    banano9-h1.PNG
    127.7 KB · Views: 39
Last edited:

alwaysbusy

Expert
Licensed User
Longtime User
Upcoming new update of the SKDataTable component in the BANanoSkeleton library (released somewhere next week).

1. Column click event
2. Column visibility
3. Custom column rendering (using other SK components)

1733043638412.png


See also the live demo for more info: https://gorgeousapps.com/BANanoSkeleton/

Alwaysbusy
 

alwaysbusy

Expert
Licensed User
Longtime User
New component coming SKYearCalendar. It is a component we need for a project so that the user can set a day schedule for his employees.

The release of the new version has been delayed somewhat because we need some new components for a project, but I try do do one before the end of the year.

See also the live demo for more info: https://gorgeousapps.com/BANanoSkeleton/

1734084780284.png



Alwaysbusy
 
Top