Column to show in deck view

I have create one small App using Appsheet where I want to select card view but like to show column name. In my layout , once I click on it , it shows me these names under detail view which I do not want.

Also, I like to add the option in the App that if user want to install , they first need to provide their details like email , phone etc before they actually can install it.

I would appreciate if someone can shed some light here.

Regards
Alok Beheria

1 37 1,011
37 REPLIES 37

You have two options here:

  1. To save you some time and effort, name the data columns what you really want to show
  2. If 1) is not practical, every column has a โ€œDisplayโ€ section where you can specify a different name to display.

    NOTE: โ€œDescriptionโ€ is shown on Forms IF supplied, otherwise โ€œDisplay Nameโ€ is shown.

How can a user first provide, in the App, their details IF they havenโ€™t installed the app yet?

There are a couple of ways to deal with this:

  1. Users provide their details through some other means, (maybe a signup on a web page), you then add them as a specific user to the app and send them the link. The user would be required to login to use the app as a tight security measure from unwanted access.

  2. You design the app such that any user can download and install it. Before they can gain ACCESS to any app functions, the user must supply their details (register). You would have no control over the users accessing the app. You can create the app to use Cloud authentication to protect the user to some degree OR have it such that the registration is the only security measure like in a public app.

Hi John,

Thanks for your valuable inputs. Yes, you are correct , without the App install , how can I create event on it. As you mentioned , one first need to allow App to be installed and then can put some type of events. I would appreciate if you could help me find the resource where I can learn implement this and add this feature to my App.

Regards
Alok Beheria

I am not aware of any resource that describes the capability of a user registration. This isnโ€™t an AppSheet built-in feature so you would have to build your own.

The way I would approach this to create your normal app views and then a registration view. Then apply an expression to the View_If property of ALL views that determines if a user is registered or not. What that expression might look like greatly depends on the app.

The idea is is if:

User not registered - hide ALL app views but show the registration view.
User IS registered - show ALL app views but hide the registration view.

I hope this is enough to get you started. I am sure you will have more questions so just post them in the Questions section as they come up!!

Good luck!

Hello John,

Thanks a million for your help here. I have 1 sheet with in that , I have Menu table and along with it 4 more tables. The Menu table sets up the App interface and all the views are Ref views. Not sure , if I nee to add another table and create as an registration table and then create a view for this table. I can create view , but not sure , how to set this up as mentioned by you. I would appreciate if you could further guide me here.

Regards

Yes, I would definitely create a dedicated table for the registrations.

Thanks again , so after creating a registration table and put email and phone numbers into it , then what property I need to for this view so that only registered users can see other views.

Regards
Alok Beheria

None. When a user enters the app, you would check for the existence of a registration row in the registration table.

If none exists, user is not registered and you would show the registration form.

If a row exists for that user, the user is registered and you would show the app views.

As stated above, you would place an expression in the Show_If of each app view. I would create that expression like this (registration row exists?):

COUNT(Registrations[Registration ID], [User Email] = USEREMAIL()) > 0

For the registration form, the expression would be like this (no registration row):

COUNT(Registrations[Registration ID], [User Email] = USEREMAIL()) = 0

All of this does beg the questionโ€ฆHow are you planning for users to access your app? Will it be a Public App such that any user can access it? Or will it be an app on a per-user-license plan that requires user authentication?

I have assumed with my answers that you will have your app on a per-user-license plan.

@Alok.Behria

Also, I like to add the option in the App that if user want to install , they first need to provide their details like email , phone etc before they actually can install it.

I have a similar feature in one of my apps that may work, and I can possibly shed some light on it for you.

Essentially, users have to complete a form before the other views are visible.
The form has some hidden fields that are pre-populated.

The SHOW_IF is based on the users entry for that form - when it reads that the user has submitted the form - views and functionality magically appears.

How it Works
  • When first installing and opening the app - All views are hidden other than the โ€œSign Up Formโ€ view.

  • The user is required to fill out their details and submit the form
    This form makes an entry to a specific table called โ€œCredentialsโ€.

  • They are required to complete: [NAME], [TITLE], [COMPANY], [PHONE NUMBER]

  • The following fields are then auto completed: [EMAIL ADDRESS]

  • A hidden field for [App Access Type] is automatically filled with a value of [FULL] (or whatever levels of access you wish to provide)

  • More views are made available based on a SHOW_IF formula that checks the โ€œCredentialsโ€ table.

It is not bulletproof by any means, but you can setup some automation to send you an email every time somebody registers if you wish to approve prior to allowing access.

PS: This is basically the same way that @WillowMobileSystems has described.

The way I would approach this to create your normal app views and then a registration view. Then apply an expression to the Show_If property of ALL views that determines if a user is registered or not. What that expression might look like greatly depends on the app.

And it is Show_If on a view just like in columns - not View_If.

Good catch! Sorry, I rushed through that response.

LOL! I was agreeing with you about it being Show_If. I was in error in my post. I should have copied in the text from my original post instead of from your reply. It made it look like I was correcting you. Sorry for the confusion.

Youโ€™ll want to change your post back to Show If!!

All amended now!

I misunderstood and wasnโ€™t infront of appsheet to check it.

Hi John,

I tried to create registrations table with 5 columns like RegID, Name,email, phone,Loc and tried to use this in show if property for a view , but hit error related to email column does not exist , but in table, It does exist.

In terms of user registration , I am first trying to allow access to users which are filling in their details โ€ฆ Later on , I am planning to use Pro plan to have users login with their details.

Regards
Alok Beheria

Make sure you are adjusting the table and column names to match YOUR table. Also, USEREMAIL() is a functionโ€ฆ In your expression you have Email(). That is not a valid function name. Change it to USEREMAIL() explicitly.

Thanks very much john, but I also tried to use to correct column name , but still , itโ€™s hitting me an error.


Regards

Iโ€™m so sorry! As @Steve has politely pointed out, I forgot the SELECT function keyword in my sample expression. It should have been this:

COUNT(SELECT(Registrations[Registration ID], [User Email] = USEREMAIL())) > 0

Hello John,

No problem and without your help , I wouldnโ€™t have been possible for me to create App. I am very thankful here to you as the solution provided by you worked like a charm , but here when I tried to use the App with a user which does not have entry to Registration table , but still the user which does not have entry can access the view for which I created the expression.

Regards

As stated above, you have to implement this Show_If expression in EVERY view. Did you do that?

The Registration view will use a slightly different expression where the count = 0. All other views use the expression where Count > 0. Did you do that?

Sorry for delayed response and again many thanks for your inputs ,and as you suggested , I implemented Show_id expression to every view , and put the expression count>0 , for every view expect for registrations view for which I put count=0 as you pointed out in last reply

I also added Menu views and on that too, I set the expression count >0. after implementing this , I sync the view and tried to view as other user , but I am still able to see All views only the the home view which sits on bottom isnโ€™t showing up when I preview App using different email ID.

<>


<>

<>

I am not completely certain what you are doing BUT I think your expectations are probably not quite accurate in the way the emulator works. By switching users and simply Syncing the app, you are not really re-starting the app as when a new user accesses it. You are simply refreshing the app view with new user viewing properties and AppSheet will continue displaying the last know view - i.e. that view will not automatically disappear.

You might try refreshing the web page itself. That might help a little but there are still some known side effects where the App Creator properties/credentials are used within the app โ€ฆ even when viewing as another user.

AppSheet also tries to open the app to the last view in use when a user closes the app. So attempting to โ€œrestartโ€ as new app user with the App Creator account doesnโ€™t work. Maybe there is a way to โ€œresetโ€ the app to its new state for the App Creator but I am not aware of it if there is.

To truly experience what a new user will when they first access the app, I would recommend accessing the app on a mobile device as the desired NEW user. This will give you a more realistic experience of what that user will see. Once you have registered with that account, in order to start all over to test again, I believe you would need to delete the app and re-install.

Thanks for your inputs John. Here , I am just trying USERS which is already have entries in Registrations tables able to access all views and if user happen to be the first time user , he should be presented the FORM where in , he can input his details and after that , He is allow to access the App. Since , I update all the views with the COUNT >0 , and thinking this can help achieve what I intended to achieve. I will certainly try with using this on other Mobile and see , if that user allowed is restricted or not.

Regards
Alok Beheria

In continuation to my previous post, I did try installing the APP on other mobile , but it seems , it behaving similar to what I pointed out last time. When I tried using different user on different mobile , it still shows all the views to other mobile user , but the only difference I saw , the view presented in bottom of App did not had home view while working as other user and if the USER happens to be the one which has entry in registration table , then the home view is visible in bottom. Please let me know for any other details which is required.

Bottom view while logging as other USER
3X_5_9_5993980b618ace3705fb21da7c155d73cd9f9c1f.png
Bottom view while logged in as registered USER
3X_1_8_1896153c8c481f527f74d1d99b2f3b0eb5dd4776.png
Want all of the view highlighted as RED not to be shown while logged in as other USER.

Regards

Hello John,

Would you please help ? I performed everything , yet not able to make it work and still clueless here as what needs to be done in order to progress further.

Regards
Alok Beheria

Appologize. Have been a bit busy.

Can you show what your app looks like and what you have done so far to hide views?

One thing that is different in what you have shown is that the red highlighted โ€œviewsโ€ are rows in what appears to be a Deck View. I assume then you are creating a โ€œcustomโ€ menu using the Deck View and you want to hide these rows?

If the above is correct, I would recommend to hide the entire โ€œHomeโ€ view until the user is registered. So, if it is an unregistered user, hide EVERYTHINGโ€ฆexcept the new user registration form.

Have you applied โ€œhideโ€ expression to the Home view itself?

Sorry for the delayed reply John. I now managed to hide views which were created as deck view view by going to DATA โ†’ Security filter and applied the formula as suggested by you. โ€œCOUNT(SELECT(Registrations[Registration ID], [Email] = USEREMAIL())) > 0โ€. Here , I am unable to understand that why , it didnโ€™t work on VIEW.

Now, I want the user to get some message like โ€œYou need to register yourselfโ€ before you may actually use the APP. Also , the form should be visible by default as user installs the App.

Again , thanks a million for your help !! With your help , I think I should able to achieve my target

Regards
Alok Beheria

Security Filters affect the rows that are downloaded to the app from the server. By applying the formula to the Security Filter you are effectively not allowing any of the rows of data to be loaded for an unregistered user - which is not a bad thing. But this should not / would not control the showing or hiding of the views. Views will display even if there are not rows to be displayed.

I donโ€™t have enough details to know why the views were not hiding with your previous attempts. But if it appears to be working then roll with it. Any problems will likely shake out as you move forward in the implementation.

As for the message, I would recommend including a SHOW type text column at the top of your registration Form that contains your message. You can use Format Rules to make it stand out.

To make the registration form the default upon install of the app, look at the Start View property under the UX->Options tab.

Good luck!!

Thanks John for your help here , but I am afraid , I am still not able to get to the option where I can set default message and make form as a default one. I tried to use Registration columns , but did not find column โ€œshow typeโ€. I would appreciate , if you could help me showing up which section to navigate while enabling or setting up such options.

Regards
Alok Behria

Hi John,

In continuation to my previous post, I tries to use formula for which if user is not registered then the start VIEW should be as form. But , when I refresh the App , the registered users also seeing the registration form and I think , it should only be visible
to unregistered USERS. The other thing for which you mentioned as how to display message to unregistered USER , I am still struggling to find option for the same.

It would be more helpful if we could see how you have implemented the expressions - Starting View as well as those to show/hide the views.


Starting View is only ever applied once after app install. AppSheet has another feature to โ€œrememberโ€ what view a user left off at when closing the app and will return to that view when app is opened again. Deleting the app and re-installing will re-activate the Starting View expression again. You may need to delete and re-install the app to properly test the Starting View expression.

โ€œShowโ€ is a column data type. For your message I would recommend adding a virtual column. Then change the column data type to โ€œShowโ€. Inside of the column editor, in Type Details section, change the Category to โ€œTextโ€, then insert you message. Next, in the view, add this new virtual column as a field to the top of your registration view. See images.

Add new Virtual Column

Change type to "Show"

In column editor, change Category to "Text"

Insert your message to appear on the registration form

Add this message field to the Registration Form


To get a little more info on Show Types, scroll to that section in this article:

I implemented the start view as โ€œuser registrationโ€. Since I want non listed users should able to see registration form with some message. Here, I was able to show message to the user while registering and itโ€™s showing in the bottom , but I was looking to create message which should say something similar to โ€œFirst Registerโ€ and then show the registration form to userโ€ฆ

These are my primary views.

3X_5_6_56f246aeba4ecb17b0fd97bf72b2479e293e0329.png

Following is the image for the user which is not registered and here , the Registration icon is visible in the bottom pan of the App , but I was looking to display the form screen attached and showing it as a default one.

After clicking the User Icon , I get the registration form , and I wanted it to display by default rather then USER clicking it and filling in details there .

Thanks a ton to you once again for your detailed post.

Regards
Alok Beheria

This may just be how you are interacting with the Editor.

Test this by installing the app on a device after removing any registration rows for yourself. After the install, the Starting View, indicated as User Registration, should display by default.

Thanks a ton , it seemed to work after a fresh install . I am now adding more features to it and will ask here , if I require any help.

Regards
Alok Behere

Hello John,

It seems , I am still not out of woods โ€ฆ Here , What I did was to add one more REF view similar to other views . But, now I am not able to see data once I click any of the view. All the settings remains to be same. Not sure, what is causing data not to be visible. All the views has same action LINKTOVIEW(โ€œRespective tablesโ€).

Regards
Alok Beheria

Hello John,

I managed to fix the problem by correcting the Applink target to right view. Thanks so much !! I have few more questions and not sure if asking in same thread will be a better idea or should I create a new thread ?

Thanks
Alok Beheria

I would always suggest that each unrelated question be posted in a separate threadโ€ฆfor sake of the community learning from your experience.

Yes, I also had the same thing in my mind. Thanks , I will initiate the new thread.

Regards

Top Labels in this Space