B4J Tutorial [BANanoVuetifyAD3] Create Professional Looking Vuetify WebSites & WebApps with BANano

Ola

**************************************************
Feb 2024: BVAD3 RoadMap

*************************************************

Download Additional Libraries
Download BANanoVuetifyAD3Core Library OR Download BANanoVuetifyAD3 Library
Download Kitchen Sink WebApp (Optional - useful for Learning how this works)
Download BVAD3Builder (Optional - useful to trim your final package)

Full Install Instructions on Github

What's New

To use this free and open source B4J library, you need BANano.

IMPORTANT: BANano License

Join Us

Telegram: https://t.me/bananovuematerial
Twitter: https://twitter.com/mashymbanga
Discord: https://discord.gg/ys8stGgWCU
YouTube: Mashy Teaches Video Series
B4x Blog: Mashy Teaches BVAD3 - New Series
Full Demo: New Awesome Kitchen Sink

Notable Forum Members Contributions

@Erel : Obviously
@alwaysbusy : valuable advice etc, BANano (incl. adjustments that support BVAD3)
@LJG : BANanoServer jRDC2, best overall bug finder
@aeric: Recommendations & Enhancements etc
@Star-Dust : Small solutions to development hitches etc
More...


What's Next?

You will find the most up to date content from this post onwards

Testing DataBase Connectivity (PHP)

The kitchen sink now has connectity testing for the various backends. To ensure that your app will work, you can check if your back-end is accessible.

MySQL
SQLite
MSSQL

WebServers You Can Use

Laragon - publish to c:\laragon\www



USBWebServer
IIS - Publish to C:\inetpub\wwwroot
XAMPP - change your publish folder to use // instead of \

You can find more information here related to IDE Setup

Enjoy

PS: Log Warnings & Compilation Errors

1. Please check the pre-run logs. In most cases modules with warnings will have an underline. Warning, 9, 10, 11, 12 are normal, don't be scared.

1625825241311.png


2. manifext.txt file not found - Download the library source code and RUN to recompile on your PC. "Do not Compile to Library"
3. Do a HARD REFRESH of your browser.[/B]
 
Last edited:

Mashiane

Expert
Licensed User
Longtime User
I see Vuetify resources have been updated, I will rerun our code and re-upload again...

TIPS: Adding Gradients

You can add nice gradients to any element after BANanoLoadLayout.., for example, this is the SuperMan gradient.

1625245005415.png



B4X:
VSheet5.VElement.setLinearGradient(vuetify.ORIENTATION_RIGHT_LEFT, "#0099f7", "#f11712")

They have some beautiful combinations here, https://uigradients.com/
 

Mashiane

Expert
Licensed User
Longtime User
TIPS: Adding Tooltips

BVAD3Tooltips.gif


You can add any tooltip to any element after banano.loadlayout,

B4X:
VBtn2.VElement.MicroTipTop("I am a top tooltip!")
    VBtn3.VElement.MicroTipBottom("I am a bottom tooltip!")
    VBtn4.VElement.MicroTipRight("I am a right tooltip!")
    VBtn5.VElement.MicroTipLeft("I am a left tooltip!")

PS: I find Vuetify tooltips rather a very tedious (you have to create the tooltip first then inject HTML inside it), thus the use of an external library was inevitable. I like the flexibility that this brings.
 
Last edited:

Mashiane

Expert
Licensed User
Longtime User
TIPS: ReferenceError: XXXX is not defined

B4X:
vue.min.js:6 ReferenceError: loginformdisabled is not defined

If you happen to get an error like this, it means the element is not BindVueElement/BindState.

1. Open the layout
2. Generate Members
3. After BANAno.LoadLayout execute
4. BindVueElement/BindState on the element.

Ta!
 
  • Like
Reactions: LJG

Mashiane

Expert
Licensed User
Longtime User
TIPS: Using Keep-Alive to Cache your WebApp - this has an effect of increasing your app performance and work best for static pages.

NB: This works well for sites that will be static and not changing much.

1. Open the baselayout.
2. Find the approuterview component
3. Check KeepAlive.

1625246085594.png


You can read more about the Vue-Router here.

This option is available in the next release.

Ta!
 
  • Like
Reactions: LJG

Mashiane

Expert
Licensed User
Longtime User
TIPS: Adding a progress loader on the NavBar

NavBarLoader.gif


You do this in 2 parts.

Part 1

In the base-layout, find the appbar element.

1625250773527.png


1. Check the ProgressLoader
2. If you want to be loading when the app starts, check ProgressLoading.
3. You can choose a loader color and intensity.

Part 2: Tell Vuetify where to find the loader. The loader is on the appBar element.

In pgIndex.Init

B4X:
'tell view about the router view
    vuetify.RouterViewName = approuterview.id
    'set the progress loader
    vuetify.FindProgressLoaderOn(appbar)

Loading / Unloading the ProgressBar at runtime

Loadit - call vuetify.PagePause

Unloadit - call vuetify.PageResume

This has been included in the re-release above and on the B4xTemplate.

That's all folks!!!
 

Mashiane

Expert
Licensed User
Longtime User
Tip: BANanoDataSource - a custom view built internally in BVAD3 to access backend-databases. Currently working well with MySQ PHP.

In essence you dont write any SQL commands when you use this.

The component is dropped on a form and then you can specify the connection details. The properties you set on the designer, there is no need to set them manually. Usage of 1 of these is compulsory per table you need to access.

1625639516082.png


BananoDatasource
  • Initialize (CallBack As Object, Name As String, EventName As String)
    initialize the BANanoDS
  • BEToRelationships (be As BANanoElement)
    convert a banano element to a relationship
  • setUserName (p As String)
    set the user name
  • setDynamic (b As Boolean)
    set connection to be dynamic
  • setPrimaryKey (p As String)
    set the primary key
  • getPrimaryKey As String
    return the primary key field bame
  • setSingular (p As String)
    set singular
  • getSingular As String
    return the singular name of these records, this is used for deletes
  • setPlural (p As String)
    set plural
  • getPlural As String
    return the plural name of these records
  • getDisplayField As String
    return the display field, this is used for deleted
  • setDisplayField (p As String)
    set display field
  • getDisplayValue As String
    return the display value, this is used for deletes
  • setCustomQuery (p As String)
    set CustomQuery
  • setPassword (p As String)
    set password
  • setHostName (p As String)
    set hostname
  • setDatabaseName (p As String)
    set database name
  • setTableName (p As String)
    set table name
  • setRecordSource (p As String)
    set record source
  • SchemaReset As BananoDataSource
    reset the datasource to be able to use with another table
  • SchemaSetFields (flds As List)
    set schema fields
  • SchemaSetIntegers (flds As List)
    set integers
  • SchemaSetStrings (flds As List)
    set strings
  • SchemaSetDoubles (flds As List)
    set doubles
  • SchemaSetBlobs (flds As List)
    set blobs
  • SchemaSetOrderBy (flds As List)
    set order by
  • SchemaSetSelectFields (flds As List)
    set select fields
  • BindState (VC As VueComponent)
    bind to this DS to this component
  • DEFAULTS
    set the defaults for the form as specified in AD
  • CREATE_OR_UPDATE
    create or update based on the mode
  • CREATE_MODE
    set a Create mode
  • UPDATE_MODE
    set an update mode
  • READ_MODE
    set a read mode
  • DELETE_MODE
    set a delete mode
  • RESET
    clear the record source linked to a form
  • FORM As Map
    get the form contents
  • READ
    read a record from an existing one
  • READ1 (rec As Map)
    read a record using outside record map
  • CREATE1 (rec As Map)
    create a new record from an outside map
  • CREATE
    create a new record from existing recordsource, use setRecord first
  • DELETE
    delete the record internally, use setRecord first
  • DELETE1 (rec As Map)
    delete a record from outside map
  • UPDATE1 (rec As Map)
    update existing record from an outside map
  • UPDATE
    update existing record from existing recordsource, use setRecord first
  • CUSTOM (ActionName As String)
    run your own query
  • COUNT
    count total number of records
  • SELECTFORCOMBO
    select all based on fields and order by
  • SELECTALL
    select all based on fields and order by
  • SELECTWHERE
    select all based on fields and order by
  • EXISTS
    select all based on fields and order by
  • PDF
    select all based on fields and order by for PDF
  • CHART
    select all based on fields and order by for Chart
  • EXCEL
    select all based on fields and order by for Excel
  • REPORT
    select all based on fields and order by for Excel
  • ClearWhere As BananoDataSource
    clear where clause
  • AddWhere (fld As String, operator As String, value As Object) As BananoDataSource
    add a where clause for your select where
  • GetFirstRecord As Map
    get the first record
  • SetKey (keyValue As String)
    key for deletes and reads
  • SetRecord (rec As Map)
    set the record tp update
  • getHere As String
    the target for this document
 

moster67

Expert
Licensed User
Longtime User
? ?
Really impressive stuff. Must have taken you a long time to develop the Vue library.
Well done and hopefully someone who is interested in Web development will look into your library and benefit from your hard work.
Kudos also for all the tutorials!
 

westereng

Member
Licensed User
Hello!

When trying to run the BVAD3Server project in debug and release mode I get the following error in the chrome console, and
the index page stops loading.

Any hints?

1625736458609.png
 

Mashiane

Expert
Licensed User
Longtime User
Hello!

When trying to run the BVAD3Server project in debug and release mode I get the following error in the chrome console, and
the index page stops loading.

Any hints?

View attachment 116029
Will look into it. Because of the cache is the BANanoServer, at times it requires a little nudging. Can you try and hard browser refresh and see if you have the same issue?
 

Mashiane

Expert
Licensed User
Longtime User
A note on console warnings about ???.map files

Thanks to @LJG , in each of our javascript files we are removing the sourceMapURLs, they are usually at the end of each file and come with the files.

B4X:
//# sourceMappingURL=jspdf.umd.min.js.map

And will always show when one runs in debug mode. Map files by default are not included in BANanoVuetifyAD3. So this clean-up is inevitable.

Coming Soon!
 
  • Like
Reactions: LJG

westereng

Member
Licensed User
Will look into it. Because of the cache is the BANanoServer, at times it requires a little nudging. Can you try and hard browser refresh and see if you have the same issue?

Yes, the same issue. I also tried this at my home computer now, and the same happens there.

btw. when it complains about missing library encryption, it is the library jB4XEncryption one shall use?
 

Mashiane

Expert
Licensed User
Longtime User
Version 5.57 is out.

1. Please ensure you get your own Google Map Key if your app will use GMaps. Update that on the Abstract Designer

1625768666390.png


2. We have removed all the debug .map URLs related to such errors. If there is something we missed, please highligh.
3. Fixed a bug with the V-TreeView.
4. BANanoServer Kitchen Sink has the Google Maps now.
5. Phase 1 tests of the BANAnoServer jRDC2 implementation is complete.

On BrowserIndex.Init we have

B4X:
vuetify.SetMethod(Me, "JRDCOnBrowser", Null)

This registers a global method that we can run from any route page component.

On BrowserIndex we have 2 additional methods..

B4X:
'process records to the Database, receive from router
Sub JRDCOnBrowser(payload As Map)            'ignoreDeadCode
    Log("BROWSERIndex.JRDCOnBrowser...")
    'only send to the server what is needed
    Dim jsonPayload As String = BANano.ToJson(payload)
    'push the payload to the server and return the result to JRDCOnBrowser_Result
    ws.RunFunctionWithResult("JRDCOnServer", Array(jsonPayload))
End Sub

Public Sub JRDCOnBrowser_Result (payload As Map)
    Log("BROWSERIndex.JRDCOnBrowser_Result...")
    'get the command
    Dim bOK As Boolean = payload.Get("ok")
    Dim sError As String = payload.Get("error")
    Dim stag As String = payload.Get("tag")
    Dim result As List = payload.Get("result")
    '
    Select Case stag
    Case "insert_animal", "select_animals"
    End Select
    '
    Log(payload)
End Sub

The JRDCOnBrowser will be called from any page when ever you want to execute back-end crud functionality. As you see, this sends a payload to the server by calling, JRDCOnServer. When the server is finished processing your query, it sends back a payload which needs to be received by JRDCOnBrowser_Result.

There you read Ok, Error, Tag, and Result. The tag is the jrdc command you want to execute being returned back to you because we want to know what we were doing.

On the ServerIndex page, we have JRDCOnServer, which receives the payload from the BROWSERIndex page... This is receives as a JSON string.

B4X:
'receive the payload from BROWSERIndex and process it-p
Sub JRDCOnServer(jsonPayload As String)
    Log("SERVERIndex.JRDCOnServer...")
    Dim returnList As List
    returnList.Initialize
   
    Dim payload As Map = MapFromJSON(jsonPayload)
    'get the command for rdc
    Dim rdcCommand As String = payload.Get("jrdccommand")
    'get the arguements
    Dim args As List = payload.Get("args")
    'get the command
    Dim scommand As String = payload.Get("command")
    'add to commands
    'convert to object array
    Dim parameters() As Object = jRDC2Utils.List2ObjectArray(args)
    'we create the command to execute
    Dim cmd As DBCommand
    cmd = jRDC2Utils.CreateCommand(rdcCommand, parameters)
    Select Case scommand
    Case "insert", "update", "delete"
        'wait for the command to execute
        wait for (jRDC2Utils.ExecuteBatch(cmd)) Complete (res As DBResult)
    Case Else
        'wait for the command to execute
        wait for (jRDC2Utils.ExecuteQuery(cmd)) Complete (res As DBResult)
        If res <> Null And res.IsInitialized Then
            returnList = DBResultToList(res)
        End If
    End Select
    '
    Dim payload2browser As Map = CreateMap()
    payload2browser.Put("error", res.Error)
    payload2browser.Put("ok", res.Ok)
    payload2browser.Put("tag", res.Tag)
    payload2browser.Put("result", returnList)   
    'run an event back at the browser, return the name and result
    ws.RunFunction("JRDCOnBrowser_Result", Array(payload2browser))
    ws.Flush   
End Sub

On the page that will have our table and will need CRUD functionality, we need to have a BANanoDataSource. This helps in building our queries (should one need dynamic queries) etc. For example, we will access localhost, the test database etc. We are just using the same content from the config.properties file here. For jrdc the important part is the DatabaseType* and TableName * downwards.

1625769692736.png


As an example, to add an animal and get animals, we have defined these queries in the config.properties file.

We then call them..

B4X:
Sub getanimals            'ignoreDeadCode
    animalsJRDC.JRDCCommand = "select_animals"
    animalsJRDC.SELECTALL
    animalsJRDC.SchemaSetOrderBy(Array("name"))
    Dim payload As Map = animalsJRDC.GetJRDCPayload
    vuetify.RunMethod("JRDCOnBrowser", payload)
End Sub

'save on database
Private Sub btnAddAnimal_Click (e As BANanoEvent)
    'we will build
    animalsJRDC.JRDCCommand = "insert_animal"
    animalsJRDC.CREATE_OR_UPDATE
    Dim payload As Map = animalsJRDC.GetJRDCPayload
    vuetify.RunMethod("JRDCOnBrowser", payload)
End Sub

The animalsJRDC is the custom view for the BANanoDataSource.

More tests to follow. Will keep you posted.

Ta!

PS: Please DO a HARD REFRESH of your browser each time you run the kitchen sinks.
 
Last edited:
  • Love
Reactions: LJG

Mashiane

Expert
Licensed User
Longtime User
Yes, the same issue. I also tried this at my home computer now, and the same happens there.
Can you please get the latest version and see if the same issue happens, I was not able to reproduce your error at all. See the above posts.

External Libraries
BANanoServer Kitchen Sink

when it complains about missing library encryption, it is the library jB4XEncryption one shall use?
The encryption library is used by BANano and not directly by BVAD3.

These are the libraries that are referenced by BANanoVuetifyAD3 BANanoServer

1625771653722.png


ByteConvertor Library - https://www.b4x.com/android/forum/threads/byteconverter-library.6787/

Encryption Library - https://www.b4x.com/android/forum/threads/base64-and-encryption-library.6839/#content

Hope you find this in order.
 

westereng

Member
Licensed User
I still get the same, here is my library list:
1625811184608.png


And here is the logs:

Logs:
Waiting for debugger to connect...
Program started.
Reading B4J INI in C:\Users\JUSpwe\AppData\Roaming\Anywhere Software\B4J to find Additional Libraries folder...
Found Additional Libraries folder: D:\Develop\B4JAdditionalLibraries
Starting to transpile...
Loading layout mypdf...
Loading layout mypdfpage1...
Loading layout mypdfpage10...
Loading layout mypdfpage11...
Loading layout mypdfpage2...
Loading layout mypdfpage4...
Loading layout mypdfpage5...
Loading layout mypdfpage6...
Loading layout mypdfpage7...
Loading layout mypdfpage8...
Loading layout mypdfpage9...
Loading layout mypickers...
Loading layout myprism...
Loading layout myprofile...
Loading layout myprogress...
Loading layout myradio...
Loading layout myselects...
Loading layout mysheets...
Loading layout myskeletons...
Loading layout mysliders...
Loading layout mysnackbars...
Loading layout myspark...
Loading layout myspeeds...
Loading layout mystep1...
Loading layout mystep2...
Loading layout mystepper...
Loading layout myswitch...
Loading layout mytable...
Loading layout mytabs...
Loading layout mytextfields...
Loading layout mytime...
Loading layout mytimeline...
Loading layout mytimelineitem...
Loading layout mytimelineitem2...
Loading layout mytimelineitem3...
Loading layout mytooltips...
Loading layout mytreeview...
Loading layout myvchartkick...
Loading layout baselayout...
Loading layout tab1...
Loading layout tiitem...
Loading layout booleanfixer...
Loading layout leafview...
Loading layout myalerts...
Loading layout myanimals...
Loading layout myappbars...
Loading layout myautocomplete...
Loading layout myavatars...
Loading layout mybadges...
Loading layout mybindbuilder...
Loading layout mybottomnav...
Loading layout mybottomsheet...
Loading layout mybreadcrumbs...
Loading layout mybuttons...
Loading layout mycalendar...
Loading layout mycards...
Loading layout mycards1...
Loading layout mycards2...
Loading layout mycarousel...
Loading layout mychartkick...
Loading layout mycheckboxes...
Loading layout mychips...
Loading layout mycolorpicker...
Loading layout mycombo...
Loading layout mydatepicker...
Loading layout mydialog2...
Loading layout mydialog2input...
Loading layout mydialoginput...
Loading layout mydialogs...
Loading layout mydrawer...
Loading layout myelevation...
Loading layout myexpansionpanels...
Loading layout myfabs...
Loading layout myfiles...
Loading layout myfooter...
Loading layout myfootercard...
Loading layout myform...
Loading layout mygmap...
Loading layout mygrid...
Loading layout myhome...
Loading layout myicons...
Loading layout myimages...
Loading layout myinputs...
Loading layout mylogin...
Loading layout mylogindetails...
Loading layout mymenus...
Loading layout myoverlay...
Loading layout mypagination...
Loading layout mypanel1...
Processing b4xlib: jsql
Processing b4xlib: jstringutils
Processing b4xlib: bananofaker
java.io.FileNotFoundException: D:\Develop\B4XTesting\BVAD3BANanoServerKitchenSink\Objects\b4xlibs_BANano\bananofaker\B4J\manifest.txt (Systemet finner ikke angitt bane)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:112)
    at java.base/java.io.FileReader.<init>(FileReader.java:60)
    at com.ab.banano.BANano.ProcessB4XLib(Unknown Source)
    at com.ab.banano.BANano.a(Unknown Source)
    at com.ab.banano.BANano.a(Unknown Source)
    at com.ab.banano.BANano.b(Unknown Source)
    at com.ab.banano.BANano.BuildForServer(Unknown Source)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at anywheresoftware.b4a.shell.Shell.runVoidMethod(Shell.java:676)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:240)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:108)
    at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:98)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:95)
    at b4j.bvad3bananoserver.main.main(main.java:29)
Processing b4xlib: bananovuetifyad3
java.io.FileNotFoundException: D:\Develop\B4XTesting\BVAD3BANanoServerKitchenSink\Objects\b4xlibs_BANano\bananovuetifyad3\B4J\manifest.txt (Systemet finner ikke angitt bane)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:112)
    at java.base/java.io.FileReader.<init>(FileReader.java:60)
    at com.ab.banano.BANano.ProcessB4XLib(Unknown Source)
    at com.ab.banano.BANano.a(Unknown Source)
    at com.ab.banano.BANano.a(Unknown Source)
    at com.ab.banano.BANano.b(Unknown Source)
    at com.ab.banano.BANano.BuildForServer(Unknown Source)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at anywheresoftware.b4a.shell.Shell.runVoidMethod(Shell.java:676)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:240)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:108)
    at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:98)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:95)
    at b4j.bvad3bananoserver.main.main(main.java:29)
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method CallInlinePHPWait will not work in old browsers!
[WARNING]: The method CallInlinePHPWait will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method ThenWait will not work in old browsers!
[WARNING]: The method ElseWait will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method CallAjaxWait will not work in old browsers!
[WARNING]: The method AddEventlistenerOpenAsync will not work in old browsers!
[WARNING]: The method ThenWait will not work in old browsers!
[WARNING]: The method ElseWait will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[ERROR 22]: [VImg,designercreateview, around line: 161] bananoanimejs(GLOBALMYCLASSVAR) is not supported in BANano!
-->  Animate.Initialize(mCallBack, {5} )
--> Current index: 1
--> Var :    B4JName: animate, EventName: animate, JSName: _animate ,ISPRIVATE: false,B4JTYPE: bananoanimejs, IsArray: false, InitValue: /* bananoanimejs NOT SUPPORTED */
--> Method : ---- METHOD: designercreateview (MODULE: VImg, ISPRIVATE: false) ----
B4J DECLARE:
   LINE NUMBER: 88
   ORIGINAL LINE: Sub DesignerCreateView (Target As BANanoElement, Props As Map)
   CLEANED LINE: sub designercreateview (target as bananoelement, props as map)
   WORDS: sub|designercreateview|(|target|as|bananoelement|,|props|as|map|)|
INTERNAL VARS:
   B4JName: target, EventName: , JSName: _target ,ISPRIVATE: true,B4JTYPE: bananoelement, IsArray: false, InitValue: null
   B4JName: props, EventName: , JSName: _props ,ISPRIVATE: true,B4JTYPE: map, IsArray: false, InitValue: {}
RETURNS:    B4JTYPE: string, IsArray: false, InitValue: ""
------------------------------
[ERROR 22]: [VImg,designercreateview, around line: 162] bananoanimejs(GLOBALMYCLASSVAR) is not supported in BANano!
-->  Animate.anime.translateX(sAnimeTranslateX)
--> Current index: 1
--> Var :    B4JName: animate, EventName: animate, JSName: _animate ,ISPRIVATE: false,B4JTYPE: bananoanimejs, IsArray: false, InitValue: /* bananoanimejs NOT SUPPORTED */
--> Method : ---- METHOD: designercreateview (MODULE: VImg, ISPRIVATE: false) ----
B4J DECLARE:
   LINE NUMBER: 88
   ORIGINAL LINE: Sub DesignerCreateView (Target As BANanoElement, Props As Map)
   CLEANED LINE: sub designercreateview (target as bananoelement, props as map)
   WORDS: sub|designercreateview|(|target|as|bananoelement|,|props|as|map|)|
INTERNAL VARS:
   B4JName: target, EventName: , JSName: _target ,ISPRIVATE: true,B4JTYPE: bananoelement, IsArray: false, InitValue: null
   B4JName: props, EventName: , JSName: _props ,ISPRIVATE: true,B4JTYPE: map, IsArray: false, InitValue: {}
RETURNS:    B4JTYPE: string, IsArray: false, InitValue: ""
------------------------------
[ERROR 22]: [VImg,designercreateview, around line: 163] bananoanimejs(GLOBALMYCLASSVAR) is not supported in BANano!
-->  Animate.anime.translateY(sAnimeTranslateY)
--> Current index: 1
--> Var :    B4JName: animate, EventName: animate, JSName: _animate ,ISPRIVATE: false,B4JTYPE: bananoanimejs, IsArray: false, InitValue: /* bananoanimejs NOT SUPPORTED */
--> Method : ---- METHOD: designercreateview (MODULE: VImg, ISPRIVATE: false) ----
B4J DECLARE:
   LINE NUMBER: 88
   ORIGINAL LINE: Sub DesignerCreateView (Target As BANanoElement, Props As Map)
   CLEANED LINE: sub designercreateview (target as bananoelement, props as map)
   WORDS: sub|designercreateview|(|target|as|bananoelement|,|props|as|map|)|
INTERNAL VARS:
   B4JName: target, EventName: , JSName: _target ,ISPRIVATE: true,B4JTYPE: bananoelement, IsArray: false, InitValue: null
   B4JName: props, EventName: , JSName: _props ,ISPRIVATE: true,B4JTYPE: map, IsArray: false, InitValue: {}
RETURNS:    B4JTYPE: string, IsArray: false, InitValue: ""
------------------------------
[ERROR 22]: [VImg,designercreateview, around line: 165] bananoanimejs(GLOBALMYCLASSVAR) is not supported in BANano!
-->  Animate.anime.alternate(bAnimeAlternate)
--> Current index: 1
--> Var :    B4JName: animate, EventName: animate, JSName: _animate ,ISPRIVATE: false,B4JTYPE: bananoanimejs, IsArray: false, InitValue: /* bananoanimejs NOT SUPPORTED */
--> Method : ---- METHOD: designercreateview (MODULE: VImg, ISPRIVATE: false) ----
B4J DECLARE:
   LINE NUMBER: 88
   ORIGINAL LINE: Sub DesignerCreateView (Target As BANanoElement, Props As Map)
   CLEANED LINE: sub designercreateview (target as bananoelement, props as map)
   WORDS: sub|designercreateview|(|target|as|bananoelement|,|props|as|map|)|
INTERNAL VARS:
   B4JName: target, EventName: , JSName: _target ,ISPRIVATE: true,B4JTYPE: bananoelement, IsArray: false, InitValue: null
   B4JName: props, EventName: , JSName: _props ,ISPRIVATE: true,B4JTYPE: map, IsArray: false, InitValue: {}
RETURNS:    B4JTYPE: string, IsArray: false, InitValue: ""
------------------------------
[ERROR 22]: [VImg,designercreateview, around line: 167] bananoanimejs(GLOBALMYCLASSVAR) is not supported in BANano!
-->  Animate.anime.direction(sAnimeDirection)
--> Current index: 1
--> Var :    B4JName: animate, EventName: animate, JSName: _animate ,ISPRIVATE: false,B4JTYPE: bananoanimejs, IsArray: false, InitValue: /* bananoanimejs NOT SUPPORTED */
--> Method : ---- METHOD: designercreateview (MODULE: VImg, ISPRIVATE: false) ----
B4J DECLARE:
   LINE NUMBER: 88
   ORIGINAL LINE: Sub DesignerCreateView (Target As BANanoElement, Props As Map)
   CLEANED LINE: sub designercreateview (target as bananoelement, props as map)
   WORDS: sub|designercreateview|(|target|as|bananoelement|,|props|as|map|)|
INTERNAL VARS:
   B4JName: target, EventName: , JSName: _target ,ISPRIVATE: true,B4JTYPE: bananoelement, IsArray: false, InitValue: null
   B4JName: props, EventName: , JSName: _props ,ISPRIVATE: true,B4JTYPE: map, IsArray: false, InitValue: {}
RETURNS:    B4JTYPE: string, IsArray: false, InitValue: ""
------------------------------
[ERROR 22]: [VImg,designercreateview, around line: 169] bananoanimejs(GLOBALMYCLASSVAR) is not supported in BANano!
[ERROR 22]: [VImg,designercreateview, around line: 170] bananoanimejs(GLOBALMYCLASSVAR) is not supported in BANano!
[ERROR 22]: [VImg,designercreateview, around line: 171] bananoanimejs(GLOBALMYCLASSVAR) is not supported in BANano!
-->  Animate.anime.loopIT(bAnimeLoop)
--> Current index: 1
--> Var :    B4JName: animate, EventName: animate, JSName: _animate ,ISPRIVATE: false,B4JTYPE: bananoanimejs, IsArray: false, InitValue: /* bananoanimejs NOT SUPPORTED */
--> Method : ---- METHOD: designercreateview (MODULE: VImg, ISPRIVATE: false) ----
B4J DECLARE:
   LINE NUMBER: 88
   ORIGINAL LINE: Sub DesignerCreateView (Target As BANanoElement, Props As Map)
   CLEANED LINE: sub designercreateview (target as bananoelement, props as map)
   WORDS: sub|designercreateview|(|target|as|bananoelement|,|props|as|map|)|
INTERNAL VARS:
   B4JName: target, EventName: , JSName: _target ,ISPRIVATE: true,B4JTYPE: bananoelement, IsArray: false, InitValue: null
   B4JName: props, EventName: , JSName: _props ,ISPRIVATE: true,B4JTYPE: map, IsArray: false, InitValue: {}
RETURNS:    B4JTYPE: string, IsArray: false, InitValue: ""
------------------------------
-->  Animate.anime.duration(sAnimeDuration)
--> Current index: 1
--> Var :    B4JName: animate, EventName: animate, JSName: _animate ,ISPRIVATE: false,B4JTYPE: bananoanimejs, IsArray: false, InitValue: /* bananoanimejs NOT SUPPORTED */
--> Method : ---- METHOD: designercreateview (MODULE: VImg, ISPRIVATE: false) ----
B4J DECLARE:
   LINE NUMBER: 88
   ORIGINAL LINE: Sub DesignerCreateView (Target As BANanoElement, Props As Map)
   CLEANED LINE: sub designercreateview (target as bananoelement, props as map)
   WORDS: sub|designercreateview|(|target|as|bananoelement|,|props|as|map|)|
INTERNAL VARS:
   B4JName: target, EventName: , JSName: _target ,ISPRIVATE: true,B4JTYPE: bananoelement, IsArray: false, InitValue: null
   B4JName: props, EventName: , JSName: _props ,ISPRIVATE: true,B4JTYPE: map, IsArray: false, InitValue: {}
RETURNS:    B4JTYPE: string, IsArray: false, InitValue: ""
------------------------------
-->  Animate.anime.easing(sAnimeEasing)
--> Current index: 1
--> Var :    B4JName: animate, EventName: animate, JSName: _animate ,ISPRIVATE: false,B4JTYPE: bananoanimejs, IsArray: false, InitValue: /* bananoanimejs NOT SUPPORTED */
--> Method : ---- METHOD: designercreateview (MODULE: VImg, ISPRIVATE: false) ----
B4J DECLARE:
   LINE NUMBER: 88
   ORIGINAL LINE: Sub DesignerCreateView (Target As BANanoElement, Props As Map)
   CLEANED LINE: sub designercreateview (target as bananoelement, props as map)
   WORDS: sub|designercreateview|(|target|as|bananoelement|,|props|as|map|)|
INTERNAL VARS:
   B4JName: target, EventName: , JSName: _target ,ISPRIVATE: true,B4JTYPE: bananoelement, IsArray: false, InitValue: null
   B4JName: props, EventName: , JSName: _props ,ISPRIVATE: true,B4JTYPE: map, IsArray: false, InitValue: {}
RETURNS:    B4JTYPE: string, IsArray: false, InitValue: ""
------------------------------
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method ThenWait will not work in old browsers!
[WARNING]: The method ElseWait will not work in old browsers!
[WARNING]: The method ThenWait will not work in old browsers!
[WARNING]: The method ElseWait will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
[WARNING]: The method Await will not work in old browsers!
Adding Layout baselayout used by browserindex
Adding Layout myfootercard used by browserindex
[WARNING]: The method RunFunctionWithResult will not work in old browsers!
Adding Layout myalerts used by viewadalerts
Adding Layout myanimals used by viewadanimals
Adding Layout myappbars used by viewadappbar
Adding Layout myautocomplete used by viewadautocomplete
Adding Layout myavatars used by viewadavatars
Adding Layout mybadges used by viewadbadges
Adding Layout mybottomnav used by viewadbottomnav
Adding Layout mybottomsheet used by viewadbottomsheet
Adding Layout mybreadcrumbs used by viewadbreadcrumbs
Adding Layout mybuttons used by viewadbtn
Adding Layout mycalendar used by viewadcalendar
Adding Layout mycards1 used by viewadcard1
Adding Layout mycards2 used by viewadcard2
Adding Layout mycards used by viewadcards
Adding Layout myprofile used by viewadcards
Adding Layout mycarousel used by viewadcarousel
Adding Layout mychartkick used by viewadchartkick
Adding Layout mycheckboxes used by viewadcheckboxes
Adding Layout mychips used by viewadchips
Adding Layout mycolorpicker used by viewadcolorpicker
Adding Layout mycombo used by viewadcombo
Adding Layout mytable used by viewaddatatable
Adding Layout mydatepicker used by viewaddatepicker
Adding Layout mydialogs used by viewaddialog
Adding Layout mydialoginput used by viewaddialog1
Adding Layout mydialog2 used by viewaddialog2
Adding Layout mydialog2input used by viewaddialog2
Adding Layout mydrawer used by viewaddrawer
Adding Layout myelevation used by viewadelevation
Adding Layout myexpansionpanels used by viewadexpansionpanels
Adding Layout mypanel1 used by viewadexpansionpanels
Adding Layout myfabs used by viewadfab
Adding Layout myfiles used by viewadfileinput
Adding Layout myfooter used by viewadfooters
Adding Layout myform used by viewadform
Adding Layout mygmap used by viewadgooglemap
Adding Layout mygrid used by viewadgrid
Adding Layout myhome used by viewadhome
Adding Layout myicons used by viewadicons
Adding Layout myimages used by viewadimages
Adding Layout myinputs used by viewadinputs
Adding Layout leafview used by viewadleaflet
Adding Layout mylogin used by viewadlogin
Adding Layout mylogindetails used by viewadlogin
Adding Layout mymenus used by viewadmenus
Adding Layout mydrawer used by viewadnavigationdrawer
Adding Layout myoverlay used by viewadoverlay
Adding Layout mypagination used by viewadpagination
Adding Layout mypickers used by viewadpickers
Adding Layout myprism used by viewadprism
Adding Layout myprogress used by viewadprogress
Adding Layout myradio used by viewadradio
Adding Layout myinputs used by viewadrating
Adding Layout myselects used by viewadselects
Adding Layout mysheets used by viewadsheet
Adding Layout myskeletons used by viewadskeletons
Adding Layout mysliders used by viewadsliders
Adding Layout mysnackbars used by viewadsnackbars
Adding Layout myspark used by viewadsparkline
Adding Layout myspeeds used by viewadspeed
Adding Layout mystepper used by viewadstepper
Adding Layout mystep1 used by viewadstepper
Adding Layout mystep2 used by viewadstepper
Adding Layout myswitch used by viewadswitch
Adding Layout mytabs used by viewadtabs
Adding Layout tab1 used by viewadtabs
Adding Layout mytextfields used by viewadtextfield
Adding Layout mytimeline used by viewadtimeline
Adding Layout mytimelineitem used by viewadtimeline
Adding Layout mytimelineitem2 used by viewadtimeline
Adding Layout mytimelineitem3 used by viewadtimeline
Adding Layout mytime used by viewadtimepicker
Adding Layout mytooltips used by viewadtooltips
Adding Layout mytreeview used by viewadtreeview
Adding Layout mybindbuilder used by viewbindbuilder
Adding Layout booleanfixer used by viewbooleanfix
Adding Layout mypdf used by viewjspdf
Adding Layout mypdfpage1 used by viewjspdf
Adding Layout mypdfpage2 used by viewjspdf
Adding Layout mypdfpage4 used by viewjspdf
Adding Layout mypdfpage5 used by viewjspdf
Adding Layout mypdfpage6 used by viewjspdf
Adding Layout mypdfpage7 used by viewjspdf
Adding Layout mypdfpage8 used by viewjspdf
Adding Layout mypdfpage9 used by viewjspdf
Adding Layout mypdfpage10 used by viewjspdf
Adding Layout mypdfpage11 used by viewjspdf
Building D:\Develop\B4XTesting\BVAD3BANanoServerKitchenSink\Objects\www\scripts\browserindex.js
[WARNING]: The method showswalinputwait will not work in old browsers!
[WARNING]: The method showswalconfirmwait will not work in old browsers!
[WARNING]: The method uploadfilewait will not work in old browsers!
[WARNING]: The method buildgeojson will not work in old browsers!
[WARNING]: The method execute will not work in old browsers!
[WARNING]: The method mysqlexecute will not work in old browsers!
[WARNING]: The method callinlinephpwait will not work in old browsers!
[WARNING]: The method getwait will not work in old browsers!
[WARNING]: The method postwait will not work in old browsers!
[WARNING]: The method putwait will not work in old browsers!
[WARNING]: The method deletewait will not work in old browsers!
[WARNING]: The method patchwait will not work in old browsers!
[WARNING]: The method showswalinputwait will not work in old browsers!
[WARNING]: The method showswalconfirmwait will not work in old browsers!
[WARNING]: The method uploadfilewait will not work in old browsers!
[WARNING]: The method buildgeojson will not work in old browsers!
[WARNING]: The method execute will not work in old browsers!
[WARNING]: The method mysqlexecute will not work in old browsers!
[WARNING]: The method callinlinephpwait will not work in old browsers!
[WARNING]: The method getwait will not work in old browsers!
[WARNING]: The method postwait will not work in old browsers!
[WARNING]: The method putwait will not work in old browsers!
[WARNING]: The method deletewait will not work in old browsers!
[WARNING]: The method patchwait will not work in old browsers!
Copying CSS files to WebApp assets...
Copying Javascript files to WebApp assets...
Done!
2021-07-09 08:08:40.878:INFO::main: Logging initialized @24885ms to org.eclipse.jetty.util.log.StdErrLog
2021-07-09 08:08:40.988:INFO:oejs.Server:main: jetty-9.4.z-SNAPSHOT; built: 2018-05-03T15:56:21.710Z; git: daa59876e6f384329b122929e70a80934569428c; jvm 11.0.1+13
2021-07-09 08:08:41.025:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0
2021-07-09 08:08:41.026:INFO:oejs.session:main: No SessionScavenger set, using defaults
2021-07-09 08:08:41.027:INFO:oejs.session:main: node0 Scavenging every 660000ms
2021-07-09 08:08:41.047:INFO:oejsh.ContextHandler:main: Started o.e.j.s.ServletContextHandler@5340477f{/,file:///D:/Develop/B4XTesting/BVAD3BANanoServerKitchenSink/Objects/www/,AVAILABLE}
2021-07-09 08:08:41.049:INFO:oejs.AbstractNCSARequestLog:main: Opened D:\Develop\B4XTesting\BVAD3BANanoServerKitchenSink\Objects\logs\b4j-2021_07_09.request.log
2021-07-09 08:08:41.260:INFO:oejs.AbstractConnector:main: Started ServerConnector@7d9f158f{HTTP/1.1,[http/1.1]}{0.0.0.0:55056}
2021-07-09 08:08:41.261:INFO:oejs.Server:main: Started @25270ms
Emulated network latency: 100ms
2021-07-09 08:08:41.271:INFO:oejs.AbstractConnector:main: Stopped ServerConnector@7d9f158f{HTTP/1.1,[http/1.1]}{0.0.0.0:55056}
2021-07-09 08:08:41.272:INFO:oejs.session:main: node0 Stopped scavenging
2021-07-09 08:08:41.274:INFO:oejsh.ContextHandler:main: Stopped o.e.j.s.ServletContextHandler@5340477f{/,file:///D:/Develop/B4XTesting/BVAD3BANanoServerKitchenSink/Objects/www/,UNAVAILABLE}
2021-07-09 08:08:41.278:INFO:oejs.Server:main: jetty-9.4.z-SNAPSHOT; built: 2018-05-03T15:56:21.710Z; git: daa59876e6f384329b122929e70a80934569428c; jvm 11.0.1+13
2021-07-09 08:08:41.280:INFO:oejsh.ContextHandler:main: Started o.e.j.s.ServletContextHandler@5340477f{/,file:///D:/Develop/B4XTesting/BVAD3BANanoServerKitchenSink/Objects/www/,AVAILABLE}
2021-07-09 08:08:41.281:INFO:oejs.AbstractNCSARequestLog:main: Opened D:\Develop\B4XTesting\BVAD3BANanoServerKitchenSink\Objects\logs\b4j-2021_07_09.request.log
2021-07-09 08:08:41.282:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0
2021-07-09 08:08:41.282:INFO:oejs.session:main: No SessionScavenger set, using defaults
2021-07-09 08:08:41.282:INFO:oejs.session:main: node0 Scavenging every 660000ms
2021-07-09 08:08:41.285:INFO:oejs.AbstractConnector:main: Started ServerConnector@7d9f158f{HTTP/1.1,[http/1.1]}{0.0.0.0:55056}
2021-07-09 08:08:41.285:INFO:oejs.Server:main: Started @25295ms
2021-07-09 08:08:41.286:INFO:oejs.session:main: node0 Scavenging every 33000ms
Port: 55056
jul. 09, 2021 8:08:41 A.M. com.mchange.v2.log.MLog
INFO: MLog clients using java 1.4+ standard logging.
jul. 09, 2021 8:08:41 A.M. com.mchange.v2.c3p0.C3P0Registry
INFO: Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
jRDC is running (version = 2.22)
Scavenger running... (0 page(s) cached)
Scavenger running... (0 page(s) cached)

Hope it helps.

PS!

The hello handler works:
1625811544399.png


Do the Index handler need the database to be running?
 

Mashiane

Expert
Licensed User
Longtime User
java.io.FileNotFoundException: D:\Develop\B4XTesting\BVAD3BANanoServerKitchenSink\Objects\b4xlibs_BANano\bananofaker\B4J\manifest.txt
This is an exception created by BANAno, sadly I dont know how and why? There have been instances of these "manifest.xt" files popping up. BVAD3 does not have such files, perhaps its an internal thing that BANano does.

Can I then please ask you to please check your pre-run logs, i.e. before you run the code example, check the warnings on the log tab, right click on these, copy all to clipboard, save to a file, zip them and attach here. I will check what they are reporting.
 
Top