Dashboard

Profile level : Anon

0%
  • First name
  • Last name
  • Job title
  • Work experience
  • Tags
  • Avatar
  • Cover
  • Description

Filling out more of your profile gets you higher rankings in the directory and increases community trust.

Your points

Total Points

0

Contribution

0

Visit

0

Recent comments

almirgarcia public View almirgarcia's profile
Wed, 07/31/2024 - 19:45

there is any kind of advance videos for googlesheets?

Ron Northcutt Verified userVerified user staff View ron's profile
Mon, 07/29/2024 - 10:28

In reply to by dll

In the current version, the items will shrink on smaller screens, and if the container is set to "auto-height", then that will adjust as well. However, this sometimes doesn't scale well.

The NEW system (codename Anvil) is much "smarter" - it will also allow containers to flow and adapt to fit better. The results are much more impressive and produce more reliable results across all device sizes.

Ron Northcutt Verified userVerified user staff View ron's profile
Mon, 07/29/2024 - 10:23

In reply to by pchambless1

It looks like you can directly connect to a SQL database from Appwrite: https://github.com/appwrite/appwrite/discussions/4957

However, it does look like it is a bit of a pain and not encouraged. Appwrite wants to be the main DB all in one place. It would probably be best to either migrate the data into Appwrite, or just connect to it directly in Appsmith. Since you can connect to MySQL and Appwrite in the same app, it shouldn't be too tough.

Ron Northcutt Verified userVerified user staff View ron's profile
Mon, 07/29/2024 - 10:13

In reply to by sparrenberg

The community edition supports:

  • email/pass
  • Google Auth
  • Github Auth

SSO is available in the Enterprise edition.

Ron Northcutt Verified userVerified user staff View ron's profile
Mon, 07/29/2024 - 10:00

In reply to by drreech

Hi - I've not tested this, but I found some information that might help. Let me know if this works!

To set up Office 365 as an SMTP datasource in Appsmith, follow these steps to configure the SMTP settings accurately. This will allow you to send emails from your Appsmith application using your Office 365 account.

Step 1: Gather Office 365 SMTP Details

First, you need to have the correct SMTP server details for Office 365. Here are the general settings:

  • SMTP Server: smtp.office365.com
  • SMTP Port: 587
  • SMTP Username: Your Office 365 email address
  • SMTP Password: Your Office 365 password

Step 2: Enable SMTP Authentication in Office 365

Ensure that SMTP authentication is enabled in your Office 365 account. This might require you to set up and use an app password, especially if you have two-factor authentication enabled.

  1. Log in to your Office 365 account.
  2. Go to the Security & privacy section.
  3. Create an app password that you can use with Appsmith.

Step 3: Configure SMTP Datasource in Appsmith

Now, let's configure the SMTP datasource in Appsmith:

  1. Open your Appsmith dashboard.
  2. Go to the Datasources section and click on

    • New Datasource

    .

  3. Choose SMTP from the available options.

     

  4. Enter the SMTP configuration details:
    • SMTP Host: smtp.office365.com
    • SMTP Port: 587
    • Username: Your Office 365 email address
    • Password: Your Office 365 password or app password
    • From Address: The email address you want to use as the sender
    • Use SSL/TLS: Toggle this to Yes.
  5. Click Test to verify the connection. If everything is configured correctly, you should see a success message.
  6. Save the datasource.

Step 4: Send an Email Using SMTP

After setting up the datasource, you can send an email using a button or any other trigger in your Appsmith application.

  1. Drag a Button widget onto your canvas.
  2. Set the onClick action to Execute a Query.
  3. Create a new query associated with your SMTP datasource.
  4. Use the following template for the query:

    {
        "to": ["recipient@example.com"],
        "subject": "Test Email from Appsmith",
        "body": "Hello, this is a test email sent from Appsmith using Office 365 SMTP."
    }
  5. Save and run the query to send the email.

Troubleshooting

If you encounter issues:

  • Ensure that the email credentials and server details are correct.
  • Check if your Office 365 account requires an app password.
  • Verify that your Office 365 account has permissions to send emails via SMTP.
abdurrehman public View abdurrehman's profile
Mon, 07/29/2024 - 04:40

Great summary on variable declarations in JavaScript! Understanding when to use var, let, and const is essential for writing clean and maintainable code. I found the explanation about block scope and hoisting particularly helpful. 

Joseph Petty Verified userVerified user staff View joseph_appsmith's profile
Wed, 07/24/2024 - 08:05

Thanks Oscar! Glad you liked it. Let me know if there are any other topics you'd like us to cover. 

Oscar Santana Verified userVerified user author Open to work View ofsantana's profile
Wed, 07/24/2024 - 01:00

This post is simply great, and I'm pretty sure it will be useful for anyone starting with Appsmith, and even those who are more advanced, I'll save it to keep it as a reference. Thanks, Joseph

drreech public View drreech's profile
Tue, 07/23/2024 - 04:31

Hi,

Helpful tutorial but...  I'm wondering if you've looked into a similar solution for office 365?  My firm uses that, and I cannot seem to get Appsmith to authenticate as I keep getting "Authentication failure", and can't find the equivalent of a generate an App Password for your Gmail account for Microsoft. 

Thanks!

arjobansingh public View arjobansingh's profile
Mon, 07/22/2024 - 02:07

Great article, but there's one small issue. The behavior of map and reduce is the same as forEach for sparse arrays. All 3 higher order functions skip over empty items.

The result won't be the same as the one shared in the example of map

let sparseArray = [1, , 3, , 5];


// map also skips over empty elements, so it would never call the function for empty item at index 1

// and item at index 3.
let filledArray = sparseArray.map((num, index) => num === undefined ? null : num);


// answer won't be this
console.log(filledArray); // [1, null, 3, null, 5]

// Rather answer would be
// console.log(filledArray); // [1, empty, 3, empty, 5]

Similarly for reduce, it also skips over empty items in an array. So the code shared in it's example can be  changed and it would give us the same result. Please refer the following:

let sparseArray = [1, , 3, , 5];


// function won't be called for empty items.
let sum = sparseArray.reduce((acc, num) => acc + (num || 0), 0);

// So the above function can be changed to this and it will still give same result(9)
// No need to check if num is present or not, as it won't even call the function for empty value.

let sum = sparseArray.reduce((acc, num) => acc + num, 0);

console.log(sum); // 9
marcinlis public View marcinlis's profile
Sun, 07/14/2024 - 10:18

I tried this on myself... Below is my results.

Sometimes for of is slower than forEach, Map is definitely slowest. I tested it in a few order for more accurate, but map is always a slowest and results is similar like below.
Tested on Mac Studio M1 Max.

First results:
map: 31.096923828125 ms
forEach: 14.196044921875 ms
forof: 16.885986328125 ms
 for: 6.1611328125 ms
forsepconst: 6.281982421875 ms

Second results:
map: 27.2080078125 ms
forEach: 17.361083984375 ms
forof: 14.570068359375 ms
for: 6.177001953125 ms
forsepconst: 6.3369140625 ms

Third results, with uncommented querySelectorAll:
map: 2184.64697265625 ms
forEach: 2154.363037109375 ms
forof: 2177.132080078125 ms
for: 2176.41015625 ms
forsepconst: 2166.047119140625 ms

{
    console.time('map');
    // eslint-disable-next-line no-unused-vars
    const results = largeArray.map((num) => {
      //document.querySelectorAll('.b-example');
      return (((num * 2 - 5 / 0.5 + 1) * 2) / 3) * num;
    });
    console.timeEnd('map');
  }
  {
    const results = [];

    console.time('forEach');
    largeArray.forEach((num) => {
      //document.querySelectorAll('.b-example');
      results.push((((num * 2 - 5 / 0.5 + 1) * 2) / 3) * num);
    });
    console.timeEnd('forEach');
  }
  {
    const results = [];

    console.time('forof');
    for (const num of largeArray) {
      //document.querySelectorAll('.b-example');
      results.push((((num * 2 - 5 / 0.5 + 1) * 2) / 3) * num);
    }
    console.timeEnd('forof');
  }
  {
    const results = [];

    console.time('for');
    for (let i = 0; i < largeArray.length; i++) {
      //document.querySelectorAll('.b-example');
      results.push((((largeArray[i] * 2 - 5 / 0.5 + 1) * 2) / 3) * largeArray[i]);
    }
    console.timeEnd('for');
  }
  {
    const results = [];

    console.time('forsepconst');
    for (let i = 0; i < largeArray.length; i++) {
      const num = largeArray[i];
      //document.querySelectorAll('.b-example');
      results.push((((num * 2 - 5 / 0.5 + 1) * 2) / 3) * num);
    }
    console.timeEnd('forsepconst');
  }
sparrenberg public View sparrenberg's profile
Sat, 07/13/2024 - 04:42

Does this work in self-hosted community edition?

pchambless1 public View pchambless1's profile
Wed, 07/10/2024 - 12:54

I'm not seeing an easy way to connect Appwrite to an existing MySQL database.  I see it is discouraged in some of my Googling.  Is this the case?  Should I not use Appwrite as a way to connect to existing data?  

patrickkenlock public View patrickkenlock's profile
Tue, 07/09/2024 - 04:47

In reply to by joseph_appsmith

Hi Joseph, Brilliant:) got this working but struggling with the click event. Just need it to run a script but the example they show on the docs page is about printing. Do you have a demo of running a script from a click?

Thanks

Patrick

pchambless1 public View pchambless1's profile
Mon, 07/08/2024 - 17:14

One of these days I gotta jump on to the JSPDF library.  I'm making most of my reports, and it's quite a few, in Custom Widgets.    Thanks, Joseph!

dll public View dll's profile
Thu, 07/04/2024 - 02:16

hi!what's the difference between auto-layout before?

Oscar Santana Verified userVerified user author Open to work View ofsantana's profile
Fri, 06/28/2024 - 03:14

Thank you for this amazing post. I normally work with APIs as a data source, but is good to have this document as a reference whenever I will need to work with SQL databases.

Oscar Santana Verified userVerified user author Open to work View ofsantana's profile
Fri, 06/28/2024 - 01:47

Thanks, Joseph, I wanted to share the Custom widget in a way anyone can take it as it is and implement it quickly, that is why I took the time to build it like a "complete" solution. 

Joseph Petty Verified userVerified user staff View joseph_appsmith's profile
Tue, 06/25/2024 - 20:12

This is awesome! I like that you included the other widgets to build new events, instead of just publishing the custom widget by itself. That would have been enough, but this is even better! 

ryansmith public View ryansmith's profile
Thu, 06/20/2024 - 13:34

Do map and reduce have the same performance overhead relative to a basic for loop?

The difference in behavior for undefined elements in the array is a deal killer, however. 98% of the time, developers will fail to remember this issue, even if they read about it before.