Langage de modèle
- Construction de pages
- Langage de template Logicor
- Classification des fonctions Logicor
- Références des fonctions Logicor
- Address
- AddressToId
- AddToolButton
- And
- AppParam
- ArrayToSource
- Binary
- Button
- Calculate
- Chart
- CmpTime
- Code
- CodeAsIs
- Data
- Custom
- DateTime
- DBFind
- Div
- EcosysParam
- Em
- ForList
- Form
- GetColumnType
- GetHistory
- GetVar
- Hint
- If
- Image
- ImageInput
- Include
- Input
- InputErr
- InputMap
- JsonToSource
- Label
- LangRes
- LinkPage
- Map
- MenuGroup
- MenuItem
- Money
- Or
- P
- QRcode
- RadioGroup
- Range
- Select
- SetTitle
- SetVar
- Span
- Strong
- SysParam
- Table
- TransactionInfo
- VarAsIs
- Styles d'application pour les appareils mobiles
Construction de la page
L'environnement de développement intégré (IDE) de Weaver est créé en utilisant React, une bibliothèque JavaScript. Il dispose d'un éditeur de pages et d'un concepteur de pages visuel. Les pages sont des parties essentielles d'une application, utilisées pour récupérer et afficher des données à partir de tables, créer des formulaires pour recevoir des données d'entrée utilisateur, transmettre des données à des contrats et naviguer entre les pages de l'application. Comme les contrats, les pages sont stockées dans la blockchain, ce qui garantit leur intégrité lorsqu'elles sont chargées dans le client logiciel.
Moteur de templates
Les éléments de page (pages et menus) sont créés par les développeurs dans le moteur de templates d'un nœud de vérification en utilisant le langage de template de l'éditeur de pages de Weaver. Toutes les pages sont construites en utilisant le langage Logicor développé par l'équipe de développement d'IBAX. Utilisez les commandes API content/... pour demander des pages aux nœuds du réseau. Ce que le moteur de templates renvoie en réponse à ce type de requête n'est pas une page HTML, mais un code JSON composé de balises HTML qui forment un arbre selon la structure du template. Si vous souhaitez tester le moteur de templates, vous pouvez vous référer à la commande API content.
Créer des pages
Vous pouvez utiliser l'éditeur de pages pour créer et modifier des pages, qui se trouvent dans la section Pages de l'outil de gestion de Weaver. L'éditeur peut être utilisé pour :
- Écrire le code de la page, mettre en évidence les mots-clés du langage de template Logicor ;
- Sélectionner et afficher des menus sur les pages ;
- Modifier la page du menu ;
- Configurer l'autorisation de modification des pages, en spécifiant le nom du contrat avec l'autorisation dans la fonction ContractConditions, ou en spécifiant directement l'autorisation d'accès dans les conditions de modification ;
- Démarrer le concepteur de pages visuel ;
- Prévisualiser les pages.
Concepteur de pages visuel
Le concepteur de pages visuel peut être utilisé pour créer des mises en page de pages sans utiliser de codes d'interface dans le langage Logicor. Avec lui, vous pouvez définir la position des éléments de formulaire et du texte sur les pages en les faisant glisser et en les déposant, et configurer la taille des blocs de page. Il fournit un ensemble de blocs prêts à l'emploi pour présenter des modèles de données standard : avec des titres, des formulaires et des panneaux d'information. Après avoir créé une page dans le concepteur de pages visuel, vous pouvez écrire la logique du programme pour recevoir des données et une structure conditionnelle dans l'éditeur de pages. À l'avenir, nous prévoyons de créer un concepteur de pages visuel avec des fonctions supplémentaires.
Styles applicables
Par défaut, les pages sont présentées avec le style Bootstrap Angle d'Angular. Les utilisateurs peuvent créer leurs propres styles selon leurs besoins. Le style est stocké dans le paramètre de feuille de style du paramètre d'écosystème.
Module de page
Pour utiliser un bloc de code dans plusieurs pages, vous pouvez créer un module de page pour le contenir et l'intégrer dans le code de la page. Les modules de page peuvent être créés et modifiés dans les blocs de module de Weaver. Comme pour les pages, les autorisations de modification peuvent être définies.
Éditeur de ressources linguistiques
Weaver inclut un mécanisme de localisation des pages en utilisant une fonction LangRes du langage de modèle Logicor. Il peut remplacer les balises de ressources linguistiques sur la page par des lignes de texte correspondant à la langue sélectionnée par l'utilisateur dans le client logiciel ou le navigateur. Vous pouvez utiliser la syntaxe abrégée au lieu de la fonction LangRes. La traduction des messages dans les fenêtres contextuelles initiées par le contrat est effectuée par la fonction LangRes de Needle.
Vous pouvez créer et modifier des ressources linguistiques dans la section Ressources linguistiques de Weaver. Une ressource linguistique est composée de noms d'étiquettes et de la traduction correspondante de ces noms dans différentes langues, ainsi que de l'identifiant de langue à deux lettres correspondant (EN, ZH, JP, etc.).
Les autorisations d'ajout et de modification des ressources linguistiques peuvent être définies de la même manière que pour les autres tables.
Langage de modèle Logicor
Les fonctions Logicor fournissent les opérations suivantes :
- Récupérer des valeurs de la base de données :
DBFind
, afficher les données récupérées de la base de données sous forme de tableaux et de graphiques ; - Opérations sur les données pour attribuer et afficher des valeurs de variables
:
SetVar, GetVar, Data
; - Afficher et comparer des valeurs de date/heure :
DateTime, Now, CmpTime
; - Utiliser différents champs de saisie de données utilisateur pour construire
des formulaires :
Form, ImageInput, Input, RadioGroup, Select
; - Vérifier les données dans le champ du formulaire en affichant des messages
d'erreur :
Validate, InputErr
; - Afficher les éléments de navigation :
AddToolButton, LinkPage, Button
; - Appeler des contrats :
Button
; - Créer des éléments de mise en page HTML, y compris diverses balises et choisir
des classes CSS spécifiques :
Div, P, Span, etc
; - Intégrer et décharger des images sur les pages :
Image, ImageInput
; - Afficher les conditions d'un fragment de mise en page de la page :
If, ElseIf, Else
; - Créer des menus multi-niveaux ;
- Localisation de la page.
Aperçu de Logicor
Le langage de modèle de page Logicor est un langage fonctionnel qui permet à une
fonction d'appeler une autre fonction NomFonction(paramètres)
et de les
imbriquer les unes dans les autres. Vous pouvez spécifier des paramètres sans
guillemets et supprimer les paramètres inutiles.
Si le paramètre contient une virgule, il doit être encadré de guillemets (guillemets inversés ou guillemets doubles). Si une fonction ne peut avoir qu'un seul paramètre, vous pouvez utiliser une virgule sans guillemets. De plus, si le paramètre comporte une parenthèse fermante non appariée, des guillemets doivent être utilisés.
Si vous mettez un paramètre entre guillemets, mais que le paramètre lui-même contient des guillemets, vous pouvez utiliser différents types de guillemets ou plusieurs guillemets dans le texte.
Dans la définition de la fonction, chaque paramètre a un nom spécifique. Vous
pouvez appeler la fonction et spécifier les paramètres dans l'ordre de
déclaration, ou tout ensemble de paramètres dans n'importe quel ordre de nom :
Nom_paramètre: Valeur_paramètre
. En utilisant cette méthode, vous pouvez
ajouter en toute sécurité de nouveaux paramètres de fonction sans rompre la
compatibilité avec le modèle actuel :
Les fonctions peuvent renvoyer du texte, générer des éléments HTML (par exemple,
Input
), ou créer des éléments HTML avec des éléments HTML imbriqués
(Div, P, Span
). Dans ce dernier cas, un paramètre avec le nom prédéfini Body
est utilisé pour définir l'élément imbriqué. Par exemple, l'imbrication de deux
divs dans un autre div ressemble à ceci :
Pour définir les éléments imbriqués décrits dans le paramètre Body, la notation
suivante peut être utilisée : NomFonction(...){...}
. Les éléments imbriqués
doivent être spécifiés entre accolades :
Si vous avez besoin de spécifier la même fonction plusieurs fois de suite, vous
pouvez utiliser le point .
au lieu d'écrire son nom à chaque fois. Par
exemple, les exemples suivants sont identiques :
Avec ce langage, vous pouvez attribuer une variable avec la fonction SetVar et
faire référence à sa valeur avec #nom#
.
Pour faire référence aux ressources linguistiques de l'écosystème, vous pouvez
utiliser $langres$
, où langres est le nom de la langue.
Les variables suivantes sont prédéfinies :
#key_id#
- Adresse du compte de l'utilisateur actuel;#ecosystem_id#
- ID de l'écosystème actuel;#guest_key#
- Adresse du compte invité;#isMobile#
- 1, si Weaver s'exécute sur un appareil mobile.
Utilisez PageParams pour transmettre des paramètres aux pages
De nombreuses fonctions prennent en charge le paramètre PageParams
, qui est
utilisé pour transmettre des paramètres lors de la redirection vers une nouvelle
page. Par exemple : PageParams:"param1=valeur1,param2=valeur2"
. La valeur du
paramètre peut être une chaîne simple ou une variable avec une valeur de
référence. Lors de la transmission de paramètres aux pages, une variable avec le
nom du paramètre est créée, par exemple #param1#
et #param2#
.
PageParams:"hello=monde"
- La nouvelle page reçoit le paramètrehello
avecmonde
comme valeur ;PageParams:"hello=#monde#"
- La nouvelle page reçoit le paramètrehello
avec la valeur de la variablemonde
.
De plus, la fonction Val
permet d'obtenir des données à partir de formulaires,
qui sont spécifiées dans la redirection.
PageParams:"hello=Val(monde)"
- La nouvelle page reçoit le paramètrehello
avec la valeur de l'élément de formulairemonde
.
Appels de contrats
Logicor implémente les appels de contrat en cliquant sur la fonction Button dans un formulaire. Une fois qu'un événement est déclenché, les données saisies par l'utilisateur dans un champ de formulaire sur la page seront transmises au contrat. Si le nom du champ de formulaire correspond au nom de la variable dans la section des données du contrat appelé, les données seront automatiquement transférées. La fonction Button permet d'ouvrir une fenêtre modale pour que l'utilisateur puisse vérifier l'exécution du contrat, et d'initier la redirection vers la page spécifiée lorsque le contrat est exécuté avec succès, et de transmettre certains paramètres à la page.
Classification des fonctions Logicor
Opérations sur les variables:
GetVar | SetVar | VarAsIs |
Opérations de navigation:
AddToolButton | Button | LinkPage |
Manipulation des données:
Calculate | DateTime | Money |
CmpTime |
Présentation des données:
Code | Hint | MenuItem |
CodeAsIs | Image | QRcode |
Chart | MenuGroup | Table |
ForList |
Acceptation des données:
Address | EcosysParam | LangRes |
AddressToId | GetHistory | Range |
AppParam | GetColumnType | SysParam |
Data | JsonToSource | Binary |
DBFind | ArrayToSource | TransactionInfo |
Éléments de formatage des données:
Div | SetTitle | Span |
Em | Label | Strong |
P |
Éléments de formulaire:
Form | InputErr | InputMap |
ImageInput | RadioGroup | Map |
Input | Select |
Opérations sur les blocs de code:
If | Or | Include |
And |
Références de fonctions Logicor
Address
Cette fonction renvoie l'adresse du portefeuille xxxx-xxxx-...-xxxx
d'une
adresse de compte spécifique ; si aucune adresse n'est spécifiée, l'adresse du
compte de l'utilisateur actuel sera utilisée comme paramètre.
Syntaxe
Address(account)
Address
-
account
Adresse du compte.
Exemple
Span(Your wallet: Address(#account#))
AddressToId
Il renvoie l'adresse du compte d'une adresse de portefeuille spécifique xxxx-xxxx-...-xxxx.
Syntaxe
AddressToId(Wallet)
AddressToId
-
Wallet
L'adresse du portefeuille au format XXXX-...-XXXX.
Exemple
AddressToId(#wallet#)
AddToolButton
Créez un panneau de boutons avec un élément addtoolbutton.
Syntaxe
AddToolButton(Title, Icon, Page, PageParams)
[.Popup(Width, Header)]
AddToolButton
-
Title
Titre du bouton.
-
Icon
Style d'icône du bouton.
-
Page
Nom de la page de redirection.
-
PageParams
Les paramètres transmis à la page.
Popup
La fenêtre modale apparaît.
-
Header
Titre de la fenêtre.
-
Width
Pourcentage de la largeur de la fenêtre. Sa plage va de 1 à 100.
Exemple
AddToolButton(Title: $@1broadcast$, Page: @1notifications_broadcast, Icon: icon-plus).Popup(Header: $@1notifications_broadcast$, Width: "50")
And
Il renvoie le résultat d'une opération logique "et". Tous les paramètres
énumérés entre parenthèses sont séparés par des virgules. Si l'un des paramètres
est une chaîne vide, zéro ou false
, la valeur du paramètre est false
, sinon
la valeur du paramètre est true
. Si la valeur du paramètre est true
, la
fonction renvoie 1
, sinon elle renvoie 0
.
Syntaxe
And(parameters)
Exemple
If(And(#myval1#,#myval2#), Span(OK))
AppParam
Affichez la valeur du paramètre d'application, qui est extraite de la table app_params de l'écosystème actuel. Si une ressource linguistique avec le nom spécifié existe, sa valeur sera automatiquement remplacée.
Syntaxe
AppParam(App, Name, Index, Source)
AppParam
-
App
Identifiant de l'application.
-
Name
Nom du paramètre.
-
Index
Il peut être utilisé lorsque la valeur du paramètre est une liste séparée par des virgules. Les éléments du paramètre sont indexés à partir de 1. Par exemple, si
type = full,light
, alorsAppParam(1, type, 2)
renvoielight
. Il ne peut pas être utilisé en conjonction avec le paramètre Source. -
Source
Il peut être utilisé lorsque la valeur du paramètre est une liste séparée par des virgules. Créez un objet de données dont les éléments sont les valeurs de paramètres spécifiques. Cet objet peut être utilisé comme source de données pour les fonctions Table et Select. Il ne peut pas être utilisé en conjonction avec le paramètre Index.
Exemple
AppParam(1, type, Source: mytype)
ArrayToSource
Créez un élément arraytosource et remplissez-le avec les paires clé-valeur d'un tableau JSON. Les données obtenues sont placées dans l'élément Source, qui peut être utilisé ultérieurement dans la fonction d'entrée source (par exemple, Table).
Syntaxe
ArrayToSource(Source, Data)
ArrayToSource
-
Source
Nom de la source de données.
-
Data
Un tableau JSON ou un nom de variable contenant un tableau JSON (
#name#
).
Exemple
ArrayToSource(src, #myjsonarr#)
ArrayToSource(dat, [1, 2, 3])
Binary
Renvoie les liens vers les fichiers statiques stockés dans la table binaire "binaries".
Syntaxe
Binary(Name, AppID, MemberID)[.ById(ID)][.Ecosystem(ecosystem)]
Binary
-
Name
Nom du fichier.
-
AppID
ID de l'application.
-
MemberID
Adresse du compte, 0 par défaut.
-
ID
ID du fichier statique.
-
Ecosystem
ID de l'écosystème. S'il n'est pas spécifié, le fichier binaire est demandé à l'écosystème actuel.
Exemple
Image(Src: Binary("my_image", 1))
Image(Src: Binary().ById(2))
Image(Src: Binary().ById(#id#).Ecosystem(#eco#))
Button
Créez un élément HTML de type bouton qui permettra d'appeler un contrat ou d'ouvrir une page.
Syntaxe
Button(Body, Page, Class, Contract, Params, PageParams)
[.CompositeContract(Contract, Data)]
[.Alert(Text, ConfirmButton, CancelButton, Icon)]
[.Popup(Width, Header)]
[.Style(Style)]
[.ErrorRedirect(ErrorID,PageName,PageParams)]
Button
-
Body
Texte ou élément enfant.
-
Page
Nom de la page vers laquelle la redirection est effectuée.
-
Class
Classe du bouton.
-
Contract
Nom du contrat appelé.
-
Params
Liste de valeurs passées au contrat. Normalement, la valeur du paramètre du contrat (section des données) est obtenue à partir d'un élément HTML (tel qu'un champ de saisie) d'identifiant portant un nom similaire. Si l'identifiant de l'élément est différent du nom du paramètre du contrat, alors la valeur doit être assignée dans le format suivant : contractField1=idname1, contractField2=idname2. Ce paramètre est renvoyé à attr sous la forme de l'objet
{contractField1: idname1, contractField2: idname2}
. -
PageParams
Format des paramètres passés à la page de redirection : pageField1=idname1, pageField2=idname2. Des variables portant les noms de paramètres de la page cible, tels que #pageField1 et #pageField2, sont créées sur la page cible et se voient attribuer les valeurs spécifiées. Voir plus de spécifications pour le passage de paramètres Utiliser PageParams pour passer des paramètres aux pages.
CompositeContract
Utilisé pour ajouter des contrats supplémentaires au bouton. CompositeContract peut être utilisé plusieurs fois.
Name
Nom du contrat.
-
Data
Les paramètres du contrat sont des tableaux JSON.
Alert
Display the message.
-
Text
Texte du message.
-
ConfirmButton
Titre du bouton de confirmation.
-
CancelButton
Titre du bouton Annuler.
-
Icon
Icône du bouton.
Popup
Fenêtre modale de sortie.
-
Header
Titre de la fenêtre.
-
Width
Pourcentage de la largeur de la fenêtre. Sa plage va de 1 à 100.
Style
Le style CSS spécifié.
-
Style
Style CSS.
ErrorRedirect
Spécifiez et redirigez vers une page lorsque la fonction :ref:contractfundef-Throw génère une erreur lors de l'exécution du contrat. Il peut y avoir plusieurs appels ErrorRedirect. Par conséquent, lors du retour de l'attribut errredirect, la clé de l'attribut est ErrorID et la valeur est la liste des paramètres.
-
ErrorID
Erreur ID.
-
PageName
Nom de la page de redirection.
-
PageParams
Paramètres transmis à la page.
Exemple
Button(Submit, default_page, mybtn_class).Alert(Alert message)
Button(Contract: MyContract, Body:My Contract, Class: myclass, Params:"Name=myid,Id=i10,Value")
Calculate
Il renvoie le résultat de l'expression arithmétique passée en paramètre Exp. Les opérations suivantes sont applicables : +, -, *, / et les parenthèses ().
Syntaxe
Calculate(Exp, Type, Prec)
Calculate
-
Exp
Une expression arithmétique, contenant des nombres et la variable #name#.
-
Type
Type de données du résultat : int, float, argent. Si non spécifié, il s'agit d'un float s'il y a un nombre avec un point décimal, sinon c'est un int.
-
Prec
données de type float et argent, avec deux chiffres significatifs après la virgule.
Exemple
Calculate( Exp: (342278783438+5000)\*(#val#-932780000), Type: money, Prec:18 )
Calculate(10000-(34+5)\*#val#)
Calculate("((10+#val#-45)\*3.0-10)/4.5 + #val#", Prec: 4)
Chart
Créez des graphiques HTML.
Syntaxe
Chart(Type, Source, FieldLabel, FieldValue, Colors)
Chart
-
Type
Type de graphique.
-
Source
Nom de la source de données, par exemple, obtenu à partir de la fonction DBFind.
-
FieldLabel
Nom du champ d'en-tête.
-
FieldValue
Nom du champ de valeur.
-
Colors
Liste de couleurs.
Exemple
Data(mysrc,"name,count"){
John Silver,10
"Mark, Smith",20
"Unknown ""Person""",30
}
Chart(Type: "bar", Source: mysrc, FieldLabel: "name", FieldValue: "count", Colors: "red, green")
CmpTime
Il compare deux valeurs de temps dans le même format. Il prend en charge
unixtime, YYYY-MM-DD HH:MM:SS
et tout autre format de temps, tel que
YYYYMMDD
.
Syntaxe
CmpTime(Time1, Time2)
Valeur de retour
-1
- Time1 < Time2;0
- Time1 = Time2;1
- Time1> Time2.
Exemple
If(CmpTime(#time1#, #time2#)<0){...}
Code
Créez un élément de code pour afficher le code spécifié.
Il substitue une variable par la valeur de la variable (par exemple, #name#
).
Syntaxe
Code(Text)
Code
-
Text
Code source.
Exemple
Code( P(This is the first line.
Span(This is the second line.))
)
CodeAsIs
Créez un élément de code pour afficher le code spécifié. Il ne remplace pas une
variable par sa valeur. Par exemple, #name#
sera affiché tel quel.
Syntaxe
CodeAsIs(Text)
CodeAsIs
-
Text
Source code.
Exemple
CodeAsIs( P(This is the #test1#.
Span(This is the #test2#.))
)
Data
Créez un élément de données, remplissez-le avec les données spécifiées et placez-le dans Source. Ensuite, vous pouvez recevoir Source en tant qu'entrée de données dans Tableau et d'autres fonctions. La séquence des noms de colonnes correspond à la séquence des valeurs de saisie des données.
Syntaxe
Data(Source,Columns,Data)
[.Custom(Column){Body}]
Data
-
Source
Nom de la source de données. Vous pouvez spécifier n'importe quel nom qui sera utilisé ultérieurement dans d'autres fonctions en tant que source de données.
-
Columns
Une liste de noms de colonnes, séparés par des virgules.
-
Data
Ensemble de données.
Un enregistrement par ligne. Les valeurs des colonnes doivent être séparées par des virgules. Les données et les colonnes doivent être définies dans le même ordre.
Les valeurs contenant des virgules doivent être placées entre guillemets doubles (
"exemple1, exemple2", 1, 2
). Les valeurs entre guillemets doivent être mises entre deux guillemets doubles ("""exemple", "exemple2""", 1, 2
).
Custom
Vous pouvez attribuer des colonnes calculées aux données. Par exemple, vous pouvez spécifier des modèles de champ pour les boutons et autres éléments de mise en page de la page. Ces modèles de champ sont généralement attribués à Table et à d'autres fonctions pour recevoir des données. Utilisez plusieurs fonctions personnalisées si vous souhaitez attribuer plusieurs colonnes calculées.
-
Column
Nom de colonne, qui est unique et obligatoire.
-
Body
Bloc de code. Vous pouvez utiliser
#nomcolonne#
pour obtenir les valeurs des autres colonnes de l'entrée, puis utiliser ces valeurs dans des blocs de code.
Exemple
Data(mysrc,"id,name"){
"1",John Silver
2,"Mark, Smith"
3,"Unknown ""Person"""
}.Custom(link){Button(Body: View, Class: btn btn-link, Page: user, PageParams: "id=#id#"}
DateTime
Afficher l'heure et la date dans le format spécifié.
Syntaxe
DateTime(DateTime, Format)
DateTime
-
DateTime
Heure et date exprimées en unixtime ou au format standard
2006-01-02T15:04:05
. -
Format
Modèle de format : année au format à 2 chiffres
YY
, au format à 4 chiffresYYYY
, mois enMM
, jour enDD
, heure enHH
, minute enMM
, seconde enSS
, par exemple :YY/MM/DD HH:MM
. S'il n'est pas spécifié ou manquant,YYYY-MM-DD HH:MI:SS
sera utilisé.
Exemple
DateTime(2017-11-07T17:51:08)
DateTime(#mytime#,HH:MI DD.MM.YYYY)
DBFind
Créez un élément dbfind, remplissez-le avec les données de la table table et placez-le dans la structure Source, qui peut ensuite être utilisée pour les données d'entrée de Table et d'autres fonctions Source.
Syntaxe
DBFind(table, Source)
[.Columns(columns)]
[.Where(conditions)]
[.WhereId(id)]
[.Order(name)]
[.Limit(limit)]
[.Offset(offset)]
[.Count(countvar)]
[.Ecosystem(id)]
[.Cutoff(columns)]
[.Custom(Column){Body}]
[.Vars(Prefix)]
DBFind
-
table
Nom de la table.
-
Source
Nom de la source de données.
Colonnes
-
columns
Si non spécifié, une liste de tous les champs sera renvoyée. Si un champ de type JSON est présent, vous pouvez utiliser la syntaxe suivante pour traiter le champ de l'enregistrement :
columnname->fieldname
. Dans ce cas, le nom de champ généré estcolumnname.fieldname
.
Where
conditions
Conditions de requête de données. Voir DBFind. Si un champ est de type JSON,
vous pouvez utiliser la syntaxe suivante pour traiter le champ de
l'enregistrement : nomcolonne->nomchamp
.
WhereId
Requête par ID, par exemple .WhereId(1)
.
-
Id
Identifiant d'entrée.
Order
Trier par champ. Pour plus d'informations sur la syntaxe de tri, voir DBFind.
-
name
Nom du champ
Limit
-
limit
Le nombre d'entrées retournées est de 25 par défaut. Le nombre maximum est de 10 000.
Offset
-
Offset
Décalage.
Count
Spécifiez le nombre total de lignes de la condition Where. En plus de le stocker dans une variable, le compte total est retourné dans le paramètre count de l'élément dbfind.
Si Where et WhereID ne sont pas spécifiés, le compte total des lignes dans la table sera retourné.
-
countvar
Nom de la variable qui contient le nombre de lignes.
Ecosystem
Id
Identifiant de l'écosystème. Par défaut, les données proviennent de la table spécifiée dans l'écosystème actuel.
Cutoff
Utilisé pour découper et afficher de grandes quantités de données textuelles.
-
columns
Une liste de champs séparés par des virgules qui doivent être traités par la fonction Cutoff. La valeur du champ sera remplacée par un objet JSON qui contient deux champs : link et title. Si la valeur du champ contient plus de 32 caractères, le lien pointant vers les 32 premiers caractères du texte complet est renvoyé. Si la valeur du champ contient 32 caractères ou moins, le lien est défini comme vide et le titre contient la valeur complète du champ.
Custom
Vous pouvez attribuer des colonnes calculées aux données. Par exemple, vous pouvez spécifier des modèles de champ pour les boutons et autres éléments de mise en page de la page. Ces modèles de champ sont généralement attribués à Table et d'autres fonctions pour recevoir des données. Si vous souhaitez attribuer plusieurs colonnes calculées, utilisez plusieurs fonctions personnalisées.
-
Column
Nom de colonne, qui est unique et obligatoire.
-
Body
Bloc de code. Vous pouvez utiliser
#nomcolonne#
pour obtenir les valeurs des autres colonnes de l'entrée, puis utiliser ces valeurs dans des blocs de code.
Vars
La première ligne obtenue par la requête générera un ensemble de variables avec des valeurs. Lorsqu'il est spécifié, le paramètre Limit devient automatiquement 1, et seul un (1) enregistrement est renvoyé.
-
Prefix
Le préfixe ajouté au nom de la variable. Son format est
#prefixe_nomcolonne#
, où le nom de la colonne suit immédiatement le symbole du trait de soulignement. Si une colonne contient un champ JSON, la variable générée sera dans le format suivant :#prefixe_nomcolonne_champ#
.
Exemple
DBFind(parameters,myparam)
DBFind(parameters,myparam).Columns(name,value).Where({name:"money"})
DBFind(parameters,myparam).Custom(myid){Strong(#id#)}.Custom(myname){
Strong(Em(#name#))Div(myclass, #company#)
}
Div
Créez un élément div HTML.
Syntaxe
Div(Class, Body)
[.Style(Style)]
[.Show(Condition)]
[.Hide(Condition)]
Div
-
Class
Nom de la classe de la div.
-
Body
Élément enfant.
Style
Le style CSS spécifié.
Style
Style CSS.
Show
Définissez les conditions d'affichage de la Div.
Condition
Voir ci-dessous.
Hide
Définissez les conditions pour masquer une Div.
Condition
Le format de l'expression est NomEntrée=Valeur
, lorsque toutes les expressions
sont vraies, Condition est vraie, et lorsque la valeur de NomEntrée
est
égale à Valeur
, Condition est vraie. Si plusieurs Afficher ou Masquer
sont appelés, il doit y avoir au moins un paramètre Condition qui est vrai.
Exemple
Form(){
Div(text-left){
Input(Name: "broadcast", Type: "checkbox", Value: "false")
}
Div(text-left){
hello
}.Show("broadcast=false")
Div(text-left){
world
}.Hide("broadcast=false")
}
EcosysParam
Cette fonction obtient les valeurs des paramètres à partir du tableau des paramètres de l'écosystème actuel. Si le nom du résultat retourné contient des ressources linguistiques, il sera traduit en conséquence.
Syntaxe
EcosysParam(Name, Index, Source)
EcosysParam
-
Name
Nom du paramètre.
-
Index
Si le paramètre demandé est une liste d'éléments séparés par des virgules, vous pouvez spécifier un index à partir de 1. Par exemple, si
gender = male,female
, alorsgender = male,female
renvoiefemale
. Il ne peut pas être utilisé en conjonction avec le paramètre Source. -
Source
Il peut être utilisé lorsque la valeur du paramètre est une liste séparée par des virgules. Créez un objet de données dont les éléments sont les valeurs des paramètres spécifiés. Cet objet peut être utilisé comme source de données pour les fonctions Table et Select. Il ne peut pas être utilisé en conjonction avec le paramètre Index.
Address(EcosysParam(founder_account))
EcosysParam(gender, Source: mygender)
EcosysParam(Name: gender_list, Source: src_gender)
Select(Name: gender, Source: src_gender, NameColumn: name, ValueColumn: id)
Em
Créez un élément HTML "em".
Syntaxe
Em(Body, Class)
Em
-
Body
Enfant texte ou élément.
-
Class
Le nom de la classe em.
Exemple
This is an Em(important news).
ForList
Afficher la liste des éléments dans la source de données Source dans le format de modèle défini dans le corps et créer un élément forlist.
Syntaxe
ForList(Source, Index){Body}
ForList
-
Source
Source de données obtenue à partir de la fonction DBFind ou Data.
-
Index
La variable du compteur d'itération, commençant à partir de 1. Un paramètre facultatif. Si non spécifié, la valeur du compteur d'itération sera écrite dans la variable [Source] _index.
-
Body
Modèle pour insérer des éléments.
ForList(mysrc){Span(#mysrc_index#. #name#)}
Form
Créez un élément de formulaire HTML.
Syntaxe
Form(Class, Body) [.Style(Style)]
Form
-
Body
Enfant texte ou élément.
-
Class
Nom de la classe du formulaire.
Style
Le style CSS spécifié.
Style
Style CSS.
Exemple
Form(class1 class2, Input(myid))
GetColumnType
Renvoie le type de données du champ d'une table spécifique.
Les types renvoyés comprennent :
texte, varchar, nombre, argent, double, octets, json, datetime, double
.
Syntaxe
GetColumnType(Table, Column)
GetColumnType
-
Table
Nom de la table.
-
Column
Nom du champ.
Exemple
SetVar(coltype,GetColumnType(members, member_name))Div(){#coltype#}
GetHistory
Créez un élément gethistory et remplissez-le avec les enregistrements de modification de l'historique des entrées dans la table spécifiée. Les données générées seront placées dans l'élément Source, qui pourra être utilisé ultérieurement dans la fonction d'entrée source (par exemple, Table).
Le tableau est trié dans l'ordre des dernières modifications. Le champ id dans le tableau pointe vers l'id de la table rollback_tx. block_id représente l'ID du bloc, block_time représente l'horodatage de génération du bloc.
Syntaxe
GetHistory(Source, Name, Id, RollbackId)
GetHistory
-
Source
Nom de la source de données.
-
Name
Nom de la table.
-
Id
Identifiant d'entrée.
-
RollbackId
Un paramètre facultatif. S'il est sp écifié, seul un enregistrement avec l'ID spécifié sera renvoyé de la table rollback_tx.
Exemple
GetHistory(blocks, BlockHistory, 1)
GetVar
Il renvoie la valeur de la variable spécifiée si elle existe déjà, ou une chaîne vide si elle n'existe pas.
L'élément getvar est créé uniquement lorsqu'un arbre modifiable est demandé. La
différence entre GetVar(varname)
et #varname
est que si varname n'existe
pas, GetVar renverra une chaîne vide, tandis que #varname# sera interprété comme
une valeur de chaîne.
Syntaxe
GetVar(Name)
GetVar
-
Name
Nom de variable.
Exemple
If(GetVar(name)){#name#}.Else{Name is unknown}
Hint
Créez un élément d'indice pour les indices.
Syntaxe
Hint(Icon,Title,Text)
Astuce
-
Icon
Nom de l'icône.
-
Title
Titre de l'astuce.
-
Text
Texte de l'astuce.
Exemple
Hint(Icon: "icon-wrench",Title:$@1pa_settings$,Text: This is a hint text)
If
Déclaration conditionnelle.
Renvoie le premier élément enfant If ou ElseIf qui satisfait la condition. Sinon, renvoie l'élément enfant Else.
Syntaxe
If(Condition){ Body}
[.ElseIf(Condition){ Body }]
[.Else{ Body }]
If
-
Condition
Si la condition est égale à une chaîne vide, 0 ou false, on considère que la condition n'est pas remplie. Dans tous les autres cas, on considère que cette condition est satisfaite.
-
Body
Élément enfant.
Exemple
If(#value#){
Span(Value)
}.ElseIf(#value2#){Span(Value 2)
}.ElseIf(#value3#){Span(Value 3)}.Else{
Span(Nothing)
}
Image
Créez un élément HTML d'image.
Syntaxe
Image(Src, Alt, Class)
[.Style(Style)]
Image
-
Src
Source de l'image, fichier ou
data:...
-
Alt
Texte alternatif lorsque l'image ne peut pas être affichée.
-
Сlass
Nom de la classe de l'image.
Exemple
Image(Src: Binary().ById(#id#), Class: preview).Style(height: 40px; widht 40px;)
ImageInput
Créez un élément imageinput pour télécharger une image.
Syntaxe
ImageInput(Name, Width, Ratio, Format)
ImageInput
-
Name
Nom de l'élément.
-
Width
Largeur de l'image recadrée.
-
Ratio
Ratio d'aspect ou hauteur de l'image.
-
Format
Format de l'image téléchargée.
Exemple
ImageInput(avatar, 100, 2/1)
Include
Insérez le modèle avec un nom spécifié dans le code de la page.
Syntaxe
Include(Name)
Include
-
Name
Nom du modèle.
Exemple
Div(myclass, Include(mywidget))
Input
Créez un élément HTML d'entrée.
Syntaxe
Input(Name, Class, Placeholder, Type, Value, Disabled)
[.Validate(validation parameters)]
[.Style(Style)]
Input
-
Name
Nom de l'élément.
-
Class
Nom de classe.
-
Placeholder
Invite pour la valeur attendue du champ de saisie.
-
Type
Type de saisie.
-
Value
Valeur de l'élément.
-
Disabled
Désactiver l'élément de saisie.
Validate
Valider le paramètre.
Style
Style CSS spécifié.
-
Style
Style CSS.
Exemple
Input(Name: name, Type: text, Placeholder: Enter your name)
Input(Name: num, Type: text).Validate(minLength: 6, maxLength: 20)
InputErr
Créez un élément inputerr pour valider le texte d'erreur.
Syntaxe
InputErr(Name,validation errors)]
InputErr
-
Name
Correspond au nom de l'élément Input.
-
Erreurs de validation
Message d'erreur de validation pour un ou plusieurs paramètres.
Exemple
InputErr(Name: name,
minLength: Value is too short,
maxLength: The length of the value must be less than 20 characters)
InputMap
Créez un champ de saisie de texte pour l'adresse, capable de sélectionner des coordonnées sur la carte.
Syntaxe
InputMap(Name, Type, MapType, Value)
InputMap
-
Name
Nom de l'élément.
-
Value
Valeur par défaut. La valeur est un objet au format de chaîne de caractères. Par exemple,
{"coords":[{"lat":nombre,"lng":nombre},]}
ou{"zoom":entier, "center":{"lat":nombre,"lng": nombre}}
. Lorsque InputMap est créé avec la valeur prédéfinie, le champ d'adresse peut être utilisé pour enregistrer la valeur de l'adresse, de sorte qu'elle ne soit pas vide. -
Type
Type de mappage des spots sur la carte :
polygon
- indique la zone d'une boucle fermée à plusieurs spots ;Line
- représente une polyligne avec plusieurs points sans boucle fermée ;Point
- indique les coordonnées d'un seul point.
-
MapType
Type de carte. Il peut prendre les valeurs suivantes :
hybrid, roadmap, satellite, terrain
.
Exemple
InputMap(Name: Coords,Type: polygon, MapType: hybrid, Value: `{"zoom":8, "center":{"lat":55.749942860682545,"lng":37.6207172870636}}`)
JsonToSource
Créez un élément jsontosource et remplissez-le avec les paires clé-valeur d'un tableau JSON. Les données obtenues sont placées dans l'élément Source, qui peut être utilisé ultérieurement dans la fonction d'entrée source (par exemple, Tableau).
Les enregistrements dans les données résultantes sont triés alphabétiquement par clé JSON.
Syntaxe
JsonToSource(Source, Data)
JsonToSource
-
Source
Nom de la source de données.
-
Data
Un objet JSON ou un nom de variable contenant un objet JSON (
#name#
).
Exemple
JsonToSource(src, #myjson#)
JsonToSource(dat, {"param":"value", "param2": "value 2"})
Label
Créez un élément d'étiquette HTML.
Syntaxe
Label(Body, Class, For)
[.Style(Style)]
Label
-
Body
Enfant texte ou élément.
-
Class
Nom de la classe.
-
For
Lier à un élément de formulaire.
StyleThe
: Style CSS spécifié.
-
Style
Style CSS.
Exemple
Label(The first item).
LangRes
Renvoie une ressource linguistique spécifique. Si vous demandez à modifier l'arbre, l'élément langres est renvoyé et vous pouvez utiliser le symbole de format court .
Syntaxe
LangRes(Name)
LangRes
-
Name
Nom de la ressource linguistique.
Exemple
LangRes(name)
LangRes(myres)
LinkPage
Créez un élément de lien vers la page.
Syntaxe
LinkPage(Body, Page, Class, PageParams)
[.Style(Style)]
LinkPage
-
Body
Texte ou élément enfant.
-
Page
Nom de la page de redirection.
-
Class
Nom de la classe du bouton.
-
PageParams
Paramètres de la page de redirection.
Style
Style CSS spécifié.
-
Style
Styles CSS
Exemple
LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: "v_role_id=#recipient.role_id#")
Map
Créez une carte visuelle et affichez les coordonnées dans n'importe quel format.
Syntaxe
Map(Hmap, MapType, Value)
Map
-
Hmap
Hauteur d'un élément HTML sur la page.
La valeur par défaut est 100.
-
Value
Valeur de la carte, un objet au format string. Par exemple,
{"coords":[{"lat":number,"lng":number},]}
ou{"zoom":int, "center":{"lat":number,"lng": number}}
. Sicenter
n'est pas spécifié, la fenêtre de la carte s'ajustera automatiquement en fonction des coordonnées spécifiées. -
MapType
Type de carte.
Il a les valeurs suivantes:
hybrid, roadmap, satellite, terrain
.
Exemple
Map(MapType:hybrid, Hmap:400, Value:{"coords":[{"lat":55.58774531752405,"lng":36.97260184619233},{"lat":55.58396161622043,"lng":36.973803475831005},{"lat":55.585222890513975,"lng":36.979811624024364},{"lat":55.58803635636347,"lng":36.978781655762646}],"area":146846.65783403456,"address":"Unnamed Road, Moscow, Russia, 143041"})
MenuGroup
Créez un sous-menu imbriqué dans le menu et renvoyez l'élément menugroup. Avant de le remplacer par la ressource linguistique, le paramètre name renverra la valeur de Title.
Syntaxe
MenuGroup(Title, Body, Icon)
MenuGroup
-
Title
Nom de l'élément de menu.
-
Body
Éléments enfants dans un sous-menu.
-
Icon
Icône.
Exemple
MenuGroup(My Menu){
MenuItem(Interface, sys-interface)
MenuItem(Dahsboard, dashboard_default)
}
MenuItem
Créez un élément de menu et renvoyez l'élément de menu.
Syntaxe
MenuItem(Title, Page, Params, Icon)
MenuItem
-
Title
Nom de l'élément de menu.
-
Page
Nom de la page de redirection.
-
Params
Paramètres de redirection de la page.
-
Icon
Icône.
Exemple
MenuItem(Title:$@1roles$, Page:@1roles_list, Icon:"icon-pie-chart")
Money
Retourne la valeur de chaîne de exp / 10 ^ digit.
Syntaxe
Money(Exp, Digit)
Money
-
Exp
Un nombre au format chaîne de caractères.
-
Digit
L'exposant de 10 dans l'expression
Exp/10^digit
. La valeur peut être positive ou négative, et une valeur positive détermine le nombre de chiffres après la virgule.
Exemple
Money(Exp, Digit)
Or
Il renvoie le résultat d'une opération logique if. Tous les paramètres énumérés
entre parenthèses sont séparés par des virgules. Si un paramètre a une valeur
différente d'une chaîne vide, zéro ou false
, la valeur du paramètre est
true
, sinon la valeur du paramètre est false
. Si la valeur du paramètre est
true
, la fonction renvoie 1
, sinon elle renvoie 0
.
Syntaxe
Or(parameters)
Exemple
If(Or(#myval1#,#myval2#), Span(OK))
P
Créez un élément p HTML.
Syntaxe
P(Body, Class)
[.Style(Style)]
P
-
Body
Enfant texte ou élément.
-
Class
Nom de la classe.
Style
Le style CSS spécifié.
-
Style
Style CSS.
Exemple
P(This is the first line.
This is the second line.)
QRcode
Retourne le code QR avec le texte spécifié et crée un élément qrcode.
Syntaxe
QRcode(Text)
QRcode
-
Text
Texte du code QR.
Exemple
QRcode(#name#)
RadioGroup
Créez un élément radiogroup.
Syntaxe
RadioGroup(Name, Source, NameColumn, ValueColumn, Value, Class)
[.Validate(validation parameters)]
[.Style(Style)]
RadioGroup
-
Name
Nom de l'élément.
-
Source
Source de données obtenue à partir de la fonction DBFind ou Data.
-
NameColumn
Nom du champ de la source de données.
-
ValueColumn
Nom de la valeur de la source de données. Les champs créés avec Custom ne peuvent pas être utilisés dans ce paramètre.
-
Value
Valeur par défaut.
-
Class
Nom de classe.
Validate
Valider le paramètre.
Style
Le style CSS spécifié.
-
Style
Style CSS.
Exemple
RadioGroup(Name: type_decision, Source: numbers_type_decisions, NameColumn: name, ValueColumn: value)
Range
Créez un élément de plage, utilisez une taille de pas Step de De à À (sans inclure À) pour remplir les éléments entiers. Les données générées seront placées dans Source et pourront être utilisées ultérieurement dans la fonction de l'entrée source (par exemple, Tableau). Si un paramètre invalide est spécifié, une Source vide est renvoyée.
Syntaxe
Range(Source,From,To,Step)
Range
-
Source
Nom de la source de données.
-
From
Valeur de départ (i = De).
-
To
Valeur de fin (i < À).
-
Step
Étape de changement de valeur. Si elle n'est pas spécifiée, la valeur par défaut est 1.
Exemple
Range(my,0,5)
SetVar(from, 5).(to, -4).(step,-2)
Range(Source: neg, From: #from#, To: #to#, Step: #step#)
Select
Créez un élément HTML de sélection.
Syntaxe
Select(Name, Source, NameColumn, ValueColumn, Value, Class)
[.Validate(validation parameters)]
[.Style(Style)]
Select
-
Name
Nom de l'élément.
-
Source
Nom de la source de données obtenue à partir de la fonction DBFind ou Data.
-
NameColumn
Nom du champ de la source de données.
-
ValueColumn
Nom de la valeur de la source de données. Les champs créés avec Custom ne peuvent pas être utilisés dans ce paramètre.
-
Value
Valeur par défaut.
-
Class
Nom de la classe.
Validate
Valider le paramètre.
Style
Le style CSS spécifié.
-
Style
Style CSS.
Exemple
DBFind(mytable, mysrc)
Select(mysrc, name)
SetTitle
Pour définir le titre de la page et créer un élément settitle.
Syntaxe
SetTitle(Title)
SetTitle
-
Title
Titre de la page.
Exemple
SetTitle(My page)
SetVar
Attribuer la valeur Value à la variable spécifiée Name.
Syntaxe
SetVar(Name, Value)
SetVar
-
Name
Nom de variable.
-
Value
La valeur de la variable peut contenir une référence à une autre variable.
Exemple
SetVar(name, John Smith).(out, I am #name#)
Span(#out#)
Span
Créez un élément HTML span.
Syntaxe
Span(Body, Class)
[.Style(Style)]
Span
-
Body
Enfant texte ou élément.
-
Class
Nom de la classe.
Style
Le style CCS spécifié.
-
Style
Style CSS.
Exemple
This is Span(the first item, myclass1).
Strong
Créez un élément HTML fort.
Syntaxe
Strong(Body, Class)
Strong
-
Body
Enfant texte ou élément.
-
Class
Nom de la classe.
Exemple
This is Strong(the first item, myclass1).
SysParam
Obtenez la valeur d'un paramètre spécifique dans la table des paramètres de la plateforme system_parameters.
Syntaxe
SysParam(Name)
SysParam
-
Name
Nom du paramètre de la plateforme.
Exemple
SysParam(max_columns)
Table
Créez un élément de tableau HTML.
Syntaxe
Table(Source, Columns)
[.Style(Style)]
Table
-
Source
Nom d'une source de données spécifique.
-
Columns
Titre et nom de colonne correspondant, par exemple : Titre1=colonne1, Titre2=colonne2.
Style
Le style CSS spécifié.
-
Style
Style CSS.
Exemple
DBFind(mytable, mysrc)
Table(mysrc,"ID=id,Name=name")
TransactionInfo
It queries transactions by specified hash and returns information about the executed contracts and their parameters.
Syntaxe
TransactionInfo(Hash)
TransactionInfo
-
Hash
Hachages de transaction au format de chaîne hexadécimale.
Return value
Il renvoie une chaîne au format JSON.
{"contract":"ContractName", "params":{"key": "val"}, "block": "N"}
Where:
contract
- Nom du contrat;params
- Données transmises aux paramètres du contrat;block
- ID du bloc qui a traité la transaction.
Exemple
P(TransactionInfo(#hash#))
VarAsIs
Attribue la valeur Value à une variable spécifique Name, qui est le nom d'une variable spécifique au lieu de sa valeur.
Pour les versions avec substitution de variable, voir SetVar.
Syntaxe
VarAsIs(Name, Value)
VarAsIs
-
Name
Nom de variable.
-
Value
Une valeur de variable. Le nom de la variable dans la valeur ne sera pas substitué. Par exemple, si la valeur est exemple #nomvariable#, alors la valeur de la variable sera également exemple #nomvariable#.
Exemple
SetVar(Name,"John")
VarAsIs(name, I am #Name#)
Span(#name#) // I am #Name#
Styles d'application pour les appareils mobiles
Layout
Title
h1
…h6
Strong-class names
.text-muted
.text-primary
.text-success
.text-info
.text-warning
.text-danger
Color
.bg-danger-dark
.bg-danger
.bg-danger-light
.bg-info-dark
.bg-info
.bg-info-light
.bg-primary-dark
.bg-primary
.bg-primary-light
.bg-success-dark
.bg-success
.bg-success-light
.bg-warning-dark
.bg-warning
.bg-warning-light
.bg-gray-darker
.bg-gray-dark
.bg-gray
.bg-gray-light
.bg-gray-lighter
Grid
.row
.row.row-table
.col-xs-1
….col-xs-12
, uniquement utilisé dans.row.row-table
.
Panel
.panel
.panel.panel-heading
.panel.panel-body
.panel.panel-footer
Form
.form-control
Button
.btn.btn-default
.btn.btn-link
.btn.btn-primary
.btn.btn-success
.btn.btn-info
.btn.btn-warning
.btn.btn-danger
Icon
- Tous les icônes de classe fa sont de FontAwesome:
fa fa-<icon-name></icon-name>
. - Tous les icônes de classe icon sont de SimpleLineIcons:
icon-<icon-name>
.