Kinetic Dashboard Text Box has disappeared

Hi everyone, I’m building on what I learned here about how to build a dashboard that filters on a text box input.

I also want the dashboard to have two tabs that pull in results from two different queries (both filtering on the same text input).

I’m running into strange behavior where the Text Input object is disappearing from the UI, but not from the code behind the scenes. I can see the Text Input object in the json when I export the dashboard. Maybe there’s a better way to build the layout to dodge this bug?

Below is the step-by-step to reproduce this:

Building a dashboard with a single text box for filtering results, and then two tabbed pages

Create a new Dashboard (don’t use wizard)

Select the Dashboard Template page

Name = Main

Caption = Customers and Calls

Create a panel card on the Main page

Id = FiltersPanelCard

Title = Filters

On the Main page,

Add a Text Box inside the FiltersPanelCard

Select the text box

Id = CustomerTextBox

Label Text = Customer ID

(save, close and re-open the dashboard here due to lockup)

Create a new page

Name = CustomersTabPage

Caption = Customers

PageType = TabPage

Create a new page (from Main)

Name = CallsTabPage

Caption = Calls

PageType = TabPage

Add a tab on the Main page, below the FiltersPanelCard

Edit metafx-tabstrip-1

Metafx-tabstrip > Data

Click the (+) button to create a new tab

Id = CustomersTab

Title = Customers

Check Selected checkbox

Page = CustomersTabPage

Click the (+) button to create a new tab

Id = CallsTab

Title = Calls

Page = CallsTabPage

Delete the 1st tab called metafx-tabstrip-1

From the Application Map, edit the Customers TabPage

Add a Panel Card Grid

Id to CustomersPanelCardGrid

Title = blank

From the Application Map, edit the Calls TabPage

Add a Panel Card Grid

Id to CallsPanelCardGrid

Title = blank

Create a DataView for retrieving Customer data from a BAQ:

Click on the DataView (waffle icon) and then click (+)

Use “Data View Guided Setup”

Source Type = BAQ

BAQ = MM_CRM_Customers

DataViewName = Customers_BAQ_DV

Create a DataView for reading the Customer input textbox:

This time use the option for “Manual: add a new data view”

Data View ID = CustomerTextBoxView

DataSet ID = (blank)

Data Table = CustomerTextBoxView (matched with the Data View ID)

In the Columns section, click the (+) button

Under Column input “Search”

Under Data type, select “string”

From the Customers TabPage,

Navigate to: Grid Model > Provider Model

In the Ep Binding field – enter the BAQ data view (Customers_BAQ_DV)

In the BAQ ID field – enter the BAQ ID (MM_CRM_Customers)

Navigate to metafx_panel-card-grid > Grid Model > Provider Model > BAQ Options

Click the (+) button on the Where List.

Column = BAQ Column name to filter on Customer_CustID – have to use the Alias from the BAQ!

Condition: equals sign (=)

Value: ‘?{CustomerTextBoxView.Search}’

(checking Honor Null so it will pull data before entering a search customer ID)

***At this point, looking at the Customers and Calls Panel Card, the CustomerTextBox has disappeared!

Tried creating it again, but then I got an error for a duplicate ID.

Exporting the app – I can see that the CustomerTextBox still exists :frowning:

Bind the textbox on the main page to the dataview (CustomerTextBoxView)

With the text box selected, go to the Properties button on the right

Then expand Data

In the EpBinding field, enter “CustomerTextBoxView.Search” (this view will be created later)

With the text box selected, expand the Behavior menu on the right.

Click the (+) button on the “On Create” line. This creates the “CustomerTextBox_oninit” action

From the Toolbox section on the right, expand Row Actions.

Drag a “row-update” action next to the EpBinding. It should auto-connect with an arrow.

I think what you might want is a panel card stack instead, only one page is required. PCID Build / Split / Merge is a good example of what I’m talking about if you need a reference. It’s the first screen I could think of that has this pattern, there’s probably more that I can’t think of right now.

  1. Create a panel card then add your filters here.
  2. Create a panel card stack and a panel card grid for each data view you have.
  3. In the stack properties, you can add each grid into tabs on the stack.
  4. Setup each grid, tie it to the filter, profit?

FYI, I think your current setup is missing a page between ‘Customer and Calls’ and ‘Customers’ / ‘Calls’. The pattern Epicor uses is Landing Page → Main (PageType = ‘TabPage’) → Details, Activity (PageType = ‘Tab’). I also don’t think tab strips play nicely when placed next to other components, like panels. I’d reference something like Job Entry or Part for an example.

I walked through your steps and my textbox did not disappear. So, that remains a mystery.

(I used a different BAQ, obviously, since I don’t have yours… I just shows results from a ReasonsCode BAQ instead… but it all worked.)

I didn’t set up anything on the Calls tab, but you can see there are no results in that grid, where the first tab (which I did set up) did work.

Walking through your steps, I don’t see any reason why your textbox should disappear.

Using Tabs outside of a Panel Card Stack worked fine for me.

Thanks for the help and advice guys. I’ll try the PCID Build/Split/Merge pattern as genoah recommended. Hoping to see less bugs once I can upgrade to a newer version.

Ok, I’ve imitated the setup used in PCID Build/Split/Merge.
I’m running into some bugs where elements and settings are getting forgotten or deleted multiple times.

(1) One of my Data Views wasn’t retrieving any column info from the BAQ. Had to close and re-open app studio to get the columns to appear.

(2) My CustomerTextBoxView “forgot” that I had a Search column in there. I had to add it back in.

(3) My Calls tab kept on having the 1-column and the embedded Panel Card Grid self destruct. I rebuilt it twice and it just won’t stick.

I’m OCD about hitting the Save button, so I don’t think the problem is forgetting to save.

I think app studio, at least in 2024.1 is way too buggy to waste any more time trying to develop in it. anyone else feel like 2024.1 or a future release of app studio is stable enough to use?

Thanks!

The first two are indeed just application studio doing application studio things.

  1. This was probably fixed, it’s not an issue for me in 2025.2 but I think it might’ve been in 2024.2?
  2. Happens to me sometimes, I’ll check the layer’s JSON and see that a ghost deleted every column in a view without asking first.
  3. Not sure what you mean here. How does your screen look like now?

2025.2 is an improvement, but it still doesn’t feel stable to me. 2026+ would be cool to try, but I have to convert my classic screens and train users in 2025. :man_shrugging:

For (3) - Both tabs should have a 1-Panel in it, which has a Panel Card Grid in it:

Customers tab looks good:

Calls tab - everything in the tab gets deleted :dumpster_fire:

Now I’m trying to skip tabs completely and use just panel cards. Maybe this is the way.

Is it visible when previewing the app? Are you able to set up the calls grid outside of the stack, then move it in to the stack after?

I got this working.

To get around the Text Box disappearing, I had to add a 1-panel to the page and then embed the Text Box inside of the 1-panel element. Putting a Text Box directly in a panel card is not a good idea.

To get around the problem of tabs, I just used all panel cards instead. I’m going to avoid tabs for a while.

Thanks everyone.