Navigation Screen customization

Navigation Screen customization

The Main Menu in v4 has been renamed to Navigation Screen in v5, and you can customize it’s appearance.

Enable Custom Navigation

Manage > Settings > Local Settings > Display > Allow Custom Navigation


Nav buttons are Automation Commands

When Navigation Customization is Enabled, go to:

Manage > Settings > Program Settings > Maintenance

… and click the button for Create Default Navigation Buttons

Now the Navigation buttons have become Automation Commands mapped to the Navigation screen. You can change their appearance there, including their color and what text is displayed on them.


Tiles

The Automation Command buttons, as they appear on the Navigation Screen are referred to as Tiles. Within the Automation Command properties under Navigation you can define a Template to control the Tile content, choose a Symbol to display, and set an Auto-refresh rate in seconds.


Tile Placement & Sizing

Right-click on the Nav Screen to enable customization of the Tiles, such as Size, Location, and Text Alignment.


Automation Behavior

  • Mapping a rule is not needed if module button headers matches to module names.
  • If you want to execute rules you can give a different name for button so it will execute rule instead of displaying module.
  • Entering a content template also disables default command and executes automation command.
  • Automation Command > Navigation section has a few settings for button display.
  • Printer Template Tags and Custom Report Tags and @@SQL supported in the Template section.
  • Navigation screen layout (button sizes and locations) are stored locally. Other settings (symbol, template, color, etc) are stored in database. This lets users adjust their screens locally on their Terminal.

New Action: Navigate Module

A new Action is available to accompany the custom Navigation which allows for a simple method to switch to various Screens.

Module Name - specify the Screen to show

Management
Pos
Tickets
Accounts
Warehouses
Market
Reports
Navigation
Workperiods
Entity

Parameter - specify the Sub-Screen for the Module

Warehouses   > Warehouse Name
Tickets      > Filter Name
Reports      > Report Name
Entity       > Screen Name
Accounts     > Screen Name


4 Likes

Let’s look at customizing a few of the Tiles …


POS

<size 46><sym></sym></size> <size 48><bold>POS</bold></size>
[=('{SETTING:ISCURRENTWORKPERIODOPEN}'=='TRUE' ? 'Ready' : '<color red><italic>NOT</italic></color> ready')]

<size 26>Happy Hour [=('{SETTING:PriceList}'=='HH' ? 'ACTIVE' + '<linebreak/>' + '{SETTING:HHstartTime}'  + ' to ' + '{SETTING:HHendTime}': '<italic>InActive</italic>')]</size>


Tickets

<size 50><bold>Tickets</bold></size>
Total Tickets: [=TN('{REPORT TICKET COUNT}')]
Total Orders: [=TN('{REPORT ORDER COUNT: }')]
[=(TN('{REPORT TICKET COUNT:(TS.Status=Unpaid)}') > 0 ? '<linebreak/><italic>Open Tickets:</italic> ' + TN('{REPORT TICKET COUNT:(TS.Status=Unpaid)}') : '')]
[=(TN('{ACCOUNT TOTAL:Receivables}') > 0 ? '<italic>Unpaid:</italic> ' + F(TN('{ACCOUNT TOTAL:Receivables}'),'0.00') : '')]


Accounts

<size 36><bold>Accounts</bold></size>
Sales: [=F(-1*(TN('{ACCOUNT TOTAL:Sales}')+TN('{ACCOUNT TOTAL:Sales T1}')+TN('{ACCOUNT TOTAL:Sales T2}')),'0.00')] ([=F(-1*(TN('{ACCOUNT TOTAL:Sales}')+TN('{ACCOUNT TOTAL:Sales T1}')+TN('{ACCOUNT TOTAL:Sales T2}'))/20,'0.00')])

1 Like

… reserved for updates …

Is it possible to have complete navigation screen refresh when a button is pressed? ie. END WP
I set POS & Workperiod buttons to refresh every 2 seconds but it doesn’t look right.

Navigating to Navigation screen with Navigate Module action should refresh screen.

That works perfect, thanks

I’ve been fiddeling around and made a Dynamic Tile for Exchange rates and i thought i would share the progress.

It uses the free API of fixer.io. Fixer.io is a free JSON API for current and historical foreign exchange rates published by the European Central Bank.
The rates are updated daily around 3PM CET.

Script:


function exchangerates()
{
var nL = '<linebreak/>';
var base = 'EUR'
var symbol1 = 'RON'
var symbol2 = 'GBP'
var symbol3 = 'HUF'
var u = 'http://api.fixer.io/latest?base='+base+'&symbols='+symbol1+','+symbol2+','+symbol3+'';
var getrates = web.Download(u);
var allrates = JSON.parse(getrates);
var currentdate = allrates.date;
var rate1 = allrates.rates.RON;
var rate2 = allrates.rates.GBP;
var rate3 = allrates.rates.HUF;

return tag.Size(25,'<b><color Blue>Exchange Rates</color></b>') + nL + tag.Size(20,'<b><color Blue>Date:       </color></b>') + '<size 20>'+currentdate+'</size>'
+ nL + tag.Size(20,'<color White> '+base+' 1 = '+symbol1+' '+rate1+' </color>')
+ nL + tag.Size(20,'<color White> '+base+' 1 = '+symbol2+' '+rate2+' </color>')
+ nL + tag.Size(20,'<color White> '+base+' 1 = '+symbol3+' '+rate3+' </color>');
}

I know the Script could be better, but hey it’s my first attempt to write something in JScript… and it works :smile:
But if anybody would like to re-write the script, be my guest, but be so kind to share again.

The variable base is the currency to which the rates are displayed. The symbol1 to 3 are the currencies for wich the rates will be displayed. The annoying part is i couldn’t figure something out to make the variable rate1 to 3 dynamically dependent on the symbols… so if you want other currencies you will have to update the variables for symbols en those for allrates too (var rate1 = allrates.rates.RON). This definitely could be better.

4 Likes

This is amazing for the first JScript attempt. Thank you very much for sharing and explaining how it works.

PS: I’ll edit your post to enable syntax highlighting for your code.

1 Like

Hi there,
Thanks in advance for this type of post, i am learning a lot… Succesfully customized Navigation screen to my needs, but cannot refresh, accounts, tickets and Voids info inside the Tiles, after ending the workperiod, how can i achieve that?

Tiles have an Auto Refresh time that you can set …

Tiles also refresh when you Navigate to Main Menu (Navigation screen). So you can click Main Menu in the bottom-right of the screen to force a refresh.

You could also create an Automation Command button (Tile) that executes the Navigate Action, and place that button on your screen.

Hi, thanks for the quick response, i had already tried using refresh, but it seems the information is locked with the workperiod, or i thought that before i did closed it, now that i have ended the workperiod, the info is still there, closed sambapos and reopend it, but info appears on tiles.

Now that i start a new work period…INFO REFRESH… NO WORRIES THEN XD … THANKS FOR ALWAYS BE THERE FOR US GUYS!

The Cache is different than the Refresh.

Cache is used mostly for when you have a Tile that accesses an external API such as the Weather, and it is set in Minutes. This means it will not update the Tile with new information until the cache timer has expired. It will even ignore a Navigation screen refresh. When the timer expires, it clears the cached data from memory and fetches new/current data.

Refresh is set in seconds, and is mostly used locally, such as displaying the song playing on a local audio application, or refreshing the Clocked-in time of an Employee.

If you have Cache and Refresh set, it will be constrained to the value in Cache.

1 Like

@emre

how were you able to place the tiles so close to each other.

thanks

This probably relates with his screen resolution. We don’t have such setting.

btw you can adjust zoom level for navigation from Local Settings > Display > Navigation Screen Scale.

ok, thanks, i have tried playing around with screen zoom level but no luck.

is there any possibility of adding this setting as it makes it look much neater?

thanks emre

This is the part that I couldn’t get it to work (version 5.1.58). . . What did I do wrong? All that did to mine was just highlighting the tile, but no customization dialog appears. . . .

Make sure user has Custom Navigation enabled in Role Settings.

Matt

Mine should be enabled, Everything’s working except that I cannot figure out how to customise tile’s size & location.

here’s my screen shot:




Notice how I right clicked ‘POS’ and ‘Tickets’ but the customization tool below didn’t appear ( or should it appear?)

Don’t click on a Tile. Click on a blank area of the screen.

Hmm, nevermind that - you can right-click on a Tile to bring up the orange bar.

Can you customize if you login as Admin?

Manually create different Tile Layout files for your User Roles…

The tiles.txt file is found in:

C:\Users\USERNAME\Documents\SambaPOS5\Layout\
1 Like