Anveo Mobile App / Basis-App-Funktionen / Dynamische Kachelbeschriftungen im Hauptmenü
This is an automatic translation. The original post is available in Englisch.

Dynamische Kachelbeschriftungen im Hauptmenü

Die dynamische Änderung der Kachelbeschriftungen im Hauptmenü erfolgt innerhalb des OnOpenMenu-Triggers des entsprechenden Hauptmenüs. Auf diese Weise können Symbol, Farbe und Text der Kachel angepasst werden.

Symbole/Farben

Das Symbol und die Farbe der Kacheln des Hauptmenüs werden in der Tabelle ACF Anveo Page Element Menu gespeichert. Um diese Werte in der App zu ändern, muss zunächst der entsprechende Eintrag in der Tabelle identifiziert werden. Alle Menüeinträge, die nicht zu einer Anveo Page gehören, sind durch das leere Feld Anveo Page Code gekennzeichnet.

local anveoPageElementMenu = Record('ACF Anveo Page Element Menu');

-- [[get Main Menu Entry for My Messages]]
anveoPageElementMenu:SETRANGE('Anveo Page Code','');
anveoPageElementMenu:SETRANGE('Action Code','');
anveoPageElementMenu:SETRANGE('Linked Anveo Page','ASLS_NOTIFICATIONS');
anveoPageElementMenu:FINDFIRST();

In diesem Eintrag können Symbol und Hintergrundfarbe durch Ändern der Felder Background Color und Icon Description dynamisch geändert werden. Ein vollständiges Beispiel für die Benachrichtigungen könnte so aussehen:

local anveoPageElementMenu = Record('ACF Anveo Page Element Menu');
local ACFNotification = Record('ACF Notification');
local colorRed = '#bd3939';
local colorGreen = '#00b050';
local colorBlue = '#5b9bd5';
local colorGray = '#7c7c7c';

-- [[get Main Menu Entry for My Messages]]
anveoPageElementMenu:SETRANGE('Anveo Page Code','');
anveoPageElementMenu:SETRANGE('Action Code','');
anveoPageElementMenu:SETRANGE('Linked Anveo Page','ASLS_NOTIFICATIONS');
anveoPageElementMenu:FINDFIRST();
--[[check if there are unread Notifications]]
ACFNotification:SETRANGE('Status', 5);
if ACFNotification:ISEMPTY() then
--[[no unread messages]]
--[[set the background color to gray and set the symbol to "mail"]]
anveoPageElementMenu:SETVALUE('Background Color', colorGray);
anveoPageElementMenu:SETVALUE('Icon Description', 'mail');
anveoPageElementMenu:MODIFY(false);
else
--[[there are unread messages]]
--[[set the background color to red and set the symbol to "mail_open"]]
anveoPageElementMenu:SETVALUE('Background Color', colorRed);
anveoPageElementMenu:SETVALUE('Icon Description', 'mail_open');
anveoPageElementMenu:MODIFY(false);
end;

Text

Die Texte für die Hauptmenüpunkte sind in der Tabelle ACF Multilanguage definiert. Sie werden durch table number, PK-Felder und language identifiziert. Das Feld enthält den angezeigten Text. Für die Tabelle ACF Anveo Page Element Menu (in der die Hauptmenüpunkte gespeichert sind) können diese wie folgt gefunden und geändert werden:

local anveoPageElementMenu = Record('ACF Anveo Page Element Menu');
anveoPageElementMenu:SETRANGE('Anveo Page Code','');
anveoPageElementMenu:SETRANGE('Action Code','');
anveoPageElementMenu:SETRANGE('Linked Anveo Page','ASLS_NOTIFICATIONS');
anveoPageElementMenu:FINDFIRST();

--[[Get Multilanguage Entry for currently selected Language and Main Menu entry]]
local multilanguage = Record('ACF Multilanguage');
multilanguage:SETRANGE('PK Table No.', anveoPageElementMenu:GETTABLENO());
multilanguage:SETRANGE('Language', GLOBALLANGUAGECODE());
multilanguage:SETRANGE('PK No. 1', anveoPageElementMenu:GETVALUE('Anveo Page Element Line No.'));
multilanguage:SETRANGE('PK No. 2', anveoPageElementMenu:GETVALUE('Entry No.'));
multilanguage:FINDFIRST();
multilanguage:SETVALUE('Value','Hello World');
multilanguage:MODIFY(false);

Beispiel für das Ändern des Benachrichtigungsfeldes der Anveo Base Apps

Das Beispiel für die Benachrichtigungen sieht dann wie folgt aus, einschließlich der Änderung der Texte:

local function changeText(anveoPageElementMenu,text)
--[[Get Multilanguage Entry for currently selected Language and Main Menu entry]]
local multilanguage = Record('ACF Multilanguage');
multilanguage:SETRANGE('PK Table No.', anveoPageElementMenu:GETTABLENO());
multilanguage:SETRANGE('Language', GLOBALLANGUAGECODE());
multilanguage:SETRANGE('PK No. 1', anveoPageElementMenu:GETVALUE('Anveo Page Element Line No.'));
multilanguage:SETRANGE('PK No. 2', anveoPageElementMenu:GETVALUE('Entry No.'));
multilanguage:FINDFIRST();
multilanguage:SETVALUE('Value',text);
multilanguage:MODIFY(false);
end;

local anveoPageElementMenu = Record('ACF Anveo Page Element Menu');
local ACFNotification = Record('ACF Notification');
local colorRed = '#bd3939';
local colorGreen = '#00b050';
local colorBlue = '#5b9bd5';
local colorGray = '#7c7c7c';

-- [[get Main Menu Entry for My Messages]]
anveoPageElementMenu:SETRANGE('Anveo Page Code','');
anveoPageElementMenu:SETRANGE('Action Code','');
anveoPageElementMenu:SETRANGE('Linked Anveo Page','ASLS_NOTIFICATIONS');
anveoPageElementMenu:FINDFIRST();
--[[check if there are unread Notifications]]
local total = ACFNotification:COUNT();
ACFNotification:SETRANGE('Status', 5);
local unread = ACFNotification:COUNT();
if ACFNotification:ISEMPTY() then
--[[no unread messages]]
--[[set the background color to gray and set the symbol to "mail"]]
anveoPageElementMenu:SETVALUE('Background Color', colorGray);
anveoPageElementMenu:SETVALUE('Icon Description', 'mail');
anveoPageElementMenu:MODIFY(false);
--[[change Text accordingly]]
changeText(anveoPageElementMenu,GETTEXT('ASLS_NOTIFICATIONS',total));
else
--[[there are unread messages]]
--[[set the background color to red and set the symbol to "mail_open"]]
anveoPageElementMenu:SETVALUE('Background Color', colorRed);
anveoPageElementMenu:SETVALUE('Icon Description', 'mail_open');
anveoPageElementMenu:MODIFY(false);
--[[change Text accordingly]]
changeText(anveoPageElementMenu,GETTEXT('ASLS_NOTIFICATIONS_UNREAD',total,unread));
end;