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ètrehelloavecmondecomme valeur ;PageParams:"hello=#monde#"- La nouvelle page reçoit le paramètrehelloavec 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ètrehelloavec 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
-
accountAdresse 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
-
WalletL'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
-
TitleTitre du bouton.
-
IconStyle d'icône du bouton.
-
PageNom de la page de redirection.
-
PageParamsLes paramètres transmis à la page.
Popup
La fenêtre modale apparaît.
-
HeaderTitre de la fenêtre.
-
WidthPourcentage 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
-
AppIdentifiant de l'application.
-
NameNom du paramètre.
-
IndexIl 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. -
SourceIl 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
-
SourceNom de la source de données.
-
DataUn 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
-
NameNom du fichier.
-
AppIDID de l'application.
-
MemberIDAdresse du compte, 0 par défaut.
-
IDID du fichier statique.
-
EcosystemID 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
-
BodyTexte ou élément enfant.
-
PageNom de la page vers laquelle la redirection est effectuée.
-
ClassClasse du bouton.
-
ContractNom du contrat appelé.
-
ParamsListe 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}. -
PageParamsFormat 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.
-
DataLes paramètres du contrat sont des tableaux JSON.
Alert
Display the message.
-
TextTexte du message.
-
ConfirmButtonTitre du bouton de confirmation.
-
CancelButtonTitre du bouton Annuler.
-
IconIcône du bouton.
Popup
Fenêtre modale de sortie.
-
HeaderTitre de la fenêtre.
-
WidthPourcentage de la largeur de la fenêtre. Sa plage va de 1 à 100.
Style
Le style CSS spécifié.
-
StyleStyle 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.
-
ErrorIDErreur ID.
-
PageName
Nom de la page de redirection.
-
PageParamsParamè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
-
ExpUne expression arithmétique, contenant des nombres et la variable #name#.
-
TypeType 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.
-
Precdonné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
-
TypeType de graphique.
-
SourceNom de la source de données, par exemple, obtenu à partir de la fonction DBFind.
-
FieldLabelNom du champ d'en-tête.
-
FieldValueNom du champ de valeur.
-
ColorsListe 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
-
TextCode 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
-
TextSource 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
-
SourceNom 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.
-
ColumnsUne liste de noms de colonnes, séparés par des virgules.
-
DataEnsemble 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.
-
ColumnNom de colonne, qui est unique et obligatoire.
-
BodyBloc 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
-
DateTimeHeure et date exprimées en unixtime ou au format standard
2006-01-02T15:04:05. -
FormatModè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:SSsera 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
-
tableNom de la table.
-
SourceNom de la source de données.
Colonnes
-
columnsSi 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).
-
IdIdentifiant d'entrée.
Order
Trier par champ. Pour plus d'informations sur la syntaxe de tri, voir DBFind.
-
nameNom du champ
Limit
-
limitLe nombre d'entrées retournées est de 25 par défaut. Le nombre maximum est de 10 000.
Offset
-
OffsetDé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é.
-
countvarNom 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.
-
columnsUne 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.
-
ColumnNom de colonne, qui est unique et obligatoire.
-
BodyBloc 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é.
-
PrefixLe 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
-
ClassNom 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
-
NameNom du paramètre.
-
IndexSi 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,femalerenvoiefemale. Il ne peut pas être utilisé en conjonction avec le paramètre Source. -
SourceIl 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
-
BodyEnfant texte ou élément.
-
ClassLe 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
-
SourceSource de données obtenue à partir de la fonction DBFind ou Data.
-
IndexLa 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.
-
BodyModè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
-
BodyEnfant texte ou élément.
-
ClassNom 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
-
TableNom de la table.
-
ColumnNom 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
-
SourceNom de la source de données.
-
NameNom de la table.
-
IdIdentifiant d'entrée.
-
RollbackIdUn 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
-
NameNom 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
-
IconNom de l'icône.
-
TitleTitre de l'astuce.
-
TextTexte 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
-
ConditionSi 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
-
SrcSource de l'image, fichier ou
data:... -
AltTexte alternatif lorsque l'image ne peut pas être affichée.
-
СlassNom 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
-
NameNom de l'élément.
-
WidthLargeur de l'image recadrée.
-
RatioRatio d'aspect ou hauteur de l'image.
-
FormatFormat 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
-
NameNom 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
-
NameNom de l'élément.
-
ClassNom de classe.
-
PlaceholderInvite pour la valeur attendue du champ de saisie.
-
TypeType de saisie.
-
ValueValeur de l'élément.
-
DisabledDésactiver l'élément de saisie.
Validate
Valider le paramètre.
Style
Style CSS spécifié.
-
StyleStyle 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
-
NameCorrespond au nom de l'élément Input.
-
Erreurs de validationMessage 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
-
NameNom de l'élément.
-
ValueValeur 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. -
TypeType 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.
-
MapTypeType 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
-
SourceNom de la source de données.
-
DataUn 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
-
BodyEnfant texte ou élément.
-
ClassNom de la classe.
-
ForLier à un élément de formulaire.
StyleThe: Style CSS spécifié.
-
StyleStyle 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
-
NameNom 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
-
BodyTexte ou élément enfant.
-
PageNom de la page de redirection.
-
ClassNom de la classe du bouton.
-
PageParamsParamètres de la page de redirection.
Style
Style CSS spécifié.
-
StyleStyles 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
-
HmapHauteur d'un élément HTML sur la page.
La valeur par défaut est 100.
-
ValueValeur de la carte, un objet au format string. Par exemple,
{"coords":[{"lat":number,"lng":number},]}ou{"zoom":int, "center":{"lat":number,"lng": number}}. Sicentern'est pas spécifié, la fenêtre de la carte s'ajustera automatiquement en fonction des coordonnées spécifiées. -
MapTypeType 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
-
TitleNom de l'élément de menu.
-
BodyÉléments enfants dans un sous-menu.
-
IconIcô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
-
TitleNom de l'élément de menu.
-
PageNom de la page de redirection.
-
ParamsParamètres de redirection de la page.
-
IconIcô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
-
ExpUn nombre au format chaîne de caractères.
-
DigitL'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
-
BodyEnfant texte ou élément.
-
ClassNom de la classe.
Style
Le style CSS spécifié.
-
StyleStyle 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
-
TextTexte 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
-
NameNom de l'élément.
-
SourceSource de données obtenue à partir de la fonction DBFind ou Data.
-
NameColumnNom du champ de la source de données.
-
ValueColumnNom 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.
-
ValueValeur par défaut.
-
ClassNom de classe.
Validate
Valider le paramètre.
Style
Le style CSS spécifié.
-
StyleStyle 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
-
SourceNom de la source de données.
-
FromValeur de départ (i = De).
-
ToValeur 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
-
NameNom de l'élément.
-
SourceNom de la source de données obtenue à partir de la fonction DBFind ou Data.
-
NameColumnNom du champ de la source de données.
-
ValueColumnNom 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.
-
ValueValeur par défaut.
-
ClassNom de la classe.
Validate
Valider le paramètre.
Style
Le style CSS spécifié.
-
StyleStyle 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
-
TitleTitre de la page.
Exemple
SetTitle(My page)
SetVar
Attribuer la valeur Value à la variable spécifiée Name.
Syntaxe
SetVar(Name, Value)
SetVar
-
NameNom de variable.
-
ValueLa 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
-
BodyEnfant texte ou élément.
-
ClassNom de la classe.
Style
Le style CCS spécifié.
-
StyleStyle CSS.
Exemple
This is Span(the first item, myclass1).
Strong
Créez un élément HTML fort.
Syntaxe
Strong(Body, Class)
Strong
-
BodyEnfant texte ou élément.
-
ClassNom 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
-
NameNom 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
-
SourceNom d'une source de données spécifique.
-
ColumnsTitre et nom de colonne correspondant, par exemple : Titre1=colonne1, Titre2=colonne2.
Style
Le style CSS spécifié.
-
StyleStyle 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
-
HashHachages 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
-
NameNom de variable.
-
ValueUne 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>.