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:

joulongleu

Active Member
Licensed User
Longtime User
Hi: :)@Mashiane: MySQLCRUD --> ViewMySQLUsers-->CreateDialog An error occurred
code:
Sub CreateDialog
    'create a container
    Dim dlgUser As VueElement = vuetify.AddDialogInput(Me, userc.Here, "dlgUser", True, "600", "User", "Save", "primary", "Cancel", "error")
    userc.BindVueElement(dlgUser)
    'get the container
    Dim UserCont As VueElement = userc.DialogContainer("dlgUser")
    UserCont.AddRows1.AddColumns12
    UserCont.BuildGrid
    Dim id As VueElement = vuetify.AddTextField1(Me, UserCont.MatrixID(1, 1), "id", "user.id", "id", Null)
    id.VShow = "idshow"
    userc.BindVueElement(id)
    Dim user2 As VueElement = vuetify.AddTextField1(Me, UserCont.MatrixID(2, 1), "user", "user.user", "user", Null)
    userc.BindVueElement(user2)
    Dim age As VueElement = vuetify.AddTextField1(Me, UserCont.MatrixID(3, 1), "age", "user.age", "age", Null)
    userc.BindVueElement(age)

    userc.BindVueElement(UserCont)
    userc.BindVueElement(dlgUser)
    'initialize the User
    Dim user1 As Map = CreateMap()
    user1.put("id","" )
    user1.put("user", "")
    user1.put("age", "")
    user1.put("age", "")

    userc.SetData("user", user1)
End Sub
 

Attachments

  • 222.png
    222.png
    70 KB · Views: 222

Mashiane

Expert
Licensed User
Longtime User
Below is a new question with the following picture and attachment, thanks
1. Log the map variable that you need to be adding / updating to the database.
2. Check that the map keys match the field names in the database table.
3. If one of the columns in the database table is auto-increment, remove its key from the map for Create???
4. Rather log(strError) so that you can see the complete error so that you are able to fix it.

In most cases this error is causes by a mismatch of field names and the auto-increment field issues.

Good luck!
 

Mashiane

Expert
Licensed User
Longtime User
Tip: Using locally hosted resources i.e. CSS and JS files

You might want to do this during the development of your project... In release mode, rather use the CDN versions of the resources (if available)

In case you are in a place with an erratic internet connection, and one would rather host the library resources themselves.

1. Open the BVAD3 library, go to main. You will see this...

B4X:
BANano.Header.AddCSSFile("https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900")
BANano.Header.AddCSSFile("https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css")
BANano.Header.AddCSSFile("https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css")
BANano.Header.AddJavascriptFile("https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.min.js")
BANano.Header.AddJavascriptFile("https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.js")
BANano.Header.AddJavascriptFile("https://cdn.jsdelivr.net/npm/vue-router@3.x/dist/vue-router.min.js")
BANano.Header.AddJavascriptFile("https://cdn.jsdelivr.net/npm/dayjs@1.9.6/dayjs.min.js")
BANano.Header.AddJavascriptFile("https://cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js")
BANano.Header.AddJavascriptFile("https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js")

2. Copy each CDN link and then download each file to your PC.
3. After you have downloaded the resources, copy and paste them to your BVAD3 library project, if the library is opened, ensure you refresh the "Files" tab.
4. For the font files, you will need to also download the relevant font files. For example, for roboto, you get a css.css file.

You will get the URL links inside the files... copy and then download each of the files referenced inside css.css. Then update your css.css file to reflect. Save this file as roboto.css

1610016966702.png


The file names provided here are "other" names, I have renamed them for brevity. You can then rename the files accordingly. Also ensure you change the URL to point to ../assets

Copy the font files to your BVAD3 project "Files" also and sync your "Files"

5. Head over to https://materialdesignicons.com/ to download the font files.
6. Copy the materialdesignicons.min.css to your "Files",
7. Copy the contents of the "fonts" folder from your download also to the "Files"
8. The next step is to update the URL inside the materialdesignicons.min.css. These have ../fonts, you needs to rename this to be ../assets

1610017295291.png


9. Save your file.
10. Update the Header.AddCSS and AddJavascripLinks. This should now reflect.

1610017514526.png


When in production mode, you can then switch between locally hosted resources and CDN based versions by toggling the comments below.

1610017584747.png


All the best.

#SharingTheGoodness
 

Mashiane

Expert
Licensed User
Longtime User
Last edited:

Mashiane

Expert
Licensed User
Longtime User

Mashiane

Expert
Licensed User
Longtime User
@Johan Hormaza I have not released any tutorial for the jrdc2 but only asked a question as I had issues with it also. Im sorry I cannot comment or help you on any jrdc2 related issues.

Until the question I asked is resolved I am not at liberty to talk about this particular issue.

So please don't use any jrdc related stuff on this library.

Update:

The same question was posted on Sunday and have not been resolved:

 
Last edited:

Johan Hormaza

Well-Known Member
Licensed User
Longtime User
@Johan Hormaza I have not released any tutorial for the jrdc2 but only asked a question as I had issues with it also. Im sorry I cannot comment or help you on any jrdc2 related issues.

Until the question I asked is resolved I am not at liberty to talk about this particular issue.

So please don't use any jrdc related stuff on this library.
Okay, hope it can be fixed soon. Thank you!
Reserve army !!
 

Mashiane

Expert
Licensed User
Longtime User
Tip: Using BANanoPromise with CallInlinePHPWait

NB: The promise.CallSub is LOWERCASE sensitive for methodname

We want to execute a database command and this should work via a promise call. So this returns True/False depending on whether the record exists or not.

B4X:
'user is registering
Sub btnSignUpDo_click(e As BANanoEvent)        'IgnoreDeadCode
    login.refs = vuetify.GetRefs
    Dim fValid As Boolean = login.FormValidate("createform")
    'If fValid = true Then Return
    '
    Dim userm As Map = login.GetData("signup")
    Dim stel1 As String = userm.Get("tel1")
    
    Dim res As Boolean
    Dim err As Object
    Dim uf As BANanoPromise        'ignore
    uf.CallSub(Me, "getuserbytel1", Array(stel1))
    uf.Then(res)
    Log(res)
    uf.Else(err)
    uf.End
End Sub


Sub GetUserByTel1(suserid As String) As Boolean
    Dim rsUsers As BANanoMySQLE
    rsUsers.Initialize("db", "user", "tel1", "")
    'add field types
    rsUsers.SchemaAddText(Array("tel1"))
    rsUsers.Read(suserid)
    rsUsers.JSON = banano.CallInlinePHPWait(rsUsers.MethodName, rsUsers.Build)
    rsUsers.FromJSON
    If rsUsers.result.Size > 0 Then
        banano.ReturnThen(True)
    Else
        banano.ReturnThen(False)
    End If
End Sub
 

alwaysbusy

Expert
Licensed User
Longtime User
Top