Créez votre intranet en Groovy

DSL typés pour Grails : sans HTML, sans JavaScript

HTML PDF CSV Mail

Décrivez, sans templates

new UiFormSpecifier().ui user, {
    section "User", {
        field user.username_
        field user.firstName_
        field user.lastName_
        ajaxField user.manager_,
            this.&selectUser
    }
    formAction this.&saveUser
}
slideshow crew form

Vérifié à la compilation

  • Symboles field_ générés à partir de vos classes

  • Renommez un champ, le compilateur trouve chaque écran

  • Erreurs de validation traduites automatiquement

slideshow crew form validation

Tableaux, filtres, pagination

slideshow crew users

Des graphiques en quelques lignes

diag dsl bar diag dsl line diag dsl pie diag dsl whiskers

Le même DSL, imprimé en PDF

new UiPrintableSpecifier().ui {
    printableHeader '2.5cm', {
        show userHeader, Width.THIRD
    }
    printableBody {
        show userShow, Width.MAX
        table userTable, Width.MAX
        diagram barChart, Width.MAX
    }
}
slideshow pdf sample

Tout compris


Recherche plein texte


Aperçus de fichiers


JDBC sur votre modèle


SSH & SFTP

Essayez en direct

Chaque page DSL de la documentation ouvre ses exemples dans une fenêtre modale

Docs › DSLs ▶ Essayer en direct

Créez votre propre intranet avec un DSL (sans HTML ni JavaScript)

Taack-UI est un plugin Grails qui étend Grails en décrivant les interfaces utilisateur à l’aide d’un DSL Groovy (Domain Specific Language), typé statiquement.

Installer

Configurez Java, Grails et votre premier serveur Taack.

Première application

Étape par étape : un tableau, un formulaire, un filtre, un menu.

Essayer les DSL

Chaque page de DSL ouvre ses exemples en direct, dans une fenêtre modale.

Dernière version : 0.7.11 (avec 0.7.10) : nouveaux thèmes sélectionnables depuis le menu des paramètres, et une sauvegarde repensée qui évite le binding. Toutes les actualités →

Du code à l’écran

Un formulaire tient en quelques lignes de Groovy. Les champs sont des symboles générés à partir de votre classe (username_), vérifiés par le compilateur ; les contraintes deviennent des messages d’erreur traduits.

def form() {
    DslSampleUser u = new DslSampleUser()
    taackUiService.show(new UiBlockSpecifier().ui {
        modal {
            form createForm(u, {
                row {
                    col {
                        section 'User', {
                            field u.username_
                            field u.firstName_
                            field u.lastName_
                        }
                    }
                    col {
                        section 'Details', {
                            field u.age_
                            field u.birthday_
                            field u.city_
                            field u.status_
                            field u.enabled_
                        }
                    }
                }
                formAction this.&saveForm as MC
            })
        }
    })
}
Form with validation errors

Fonctionnalités

Sécurité par champ

Les objets sont affichés et modifiés selon les droits de l’utilisateur sur chaque champ. Les liens et actions de formulaire que l’utilisateur ne peut pas exécuter sont automatiquement masqués.

Un seul DSL, tous les formats

La même description génère du HTML, du PDF, des e-mails et du CSV.

Traduit et validé

Les libellés proviennent des fichiers i18n, et les erreurs de validation sont traduites sans code supplémentaire.

Filtrer, trier, paginer

Des tableaux et des filtres sans écrire de requêtes ni conserver de données en session.

Recherche plein texte

Indexation Solr d’objets du domaine typés statiquement, avec facettes et classement. Les aperçus de fichiers sont extensibles.

JDBC sur votre modèle

Interrogez les objets du domaine avec TQL (Taack Query Language) depuis IntelliJ, DBeaver ou LibreOffice Base.

SSH & SFTP

Une interface shell s’exécutant dans le processus serveur et un système de fichiers virtuel par utilisateur, avec vérification des identifiants (module taack-ui-ssh).

Serveur Git

L’application Intercom sert Git via SSH : la documentation écrite en AsciiDoc est poussée via Git, puis rendue.

Pourquoi Taack ?

Taack Grails avec GSP Front-end JavaScript

Interface écrite en

DSL Groovy, typé statiquement

Templates GSP, HTML, CSS

JavaScript ou TypeScript, plus une API REST

Noms des champs vérifiés

À la compilation

À l’exécution

Dépend du contrat d’API

Droits par champ et action

Intégrés, liens masqués automatiquement

Écrits à la main

Écrits à la main, des deux côtés

PDF, CSV, E-mails

Même DSL que pour l’écran

Code séparé

Code séparé

Langages à connaître

Groovy

Groovy, HTML, CSS, JavaScript

Groovy ou Java, JavaScript, HTML, CSS

Réalisé avec Taack

Crew

Crew : utilisateurs, rôles et hiérarchie.

FreeCAD PLM

FreeCAD PLM : partage de modèles FreeCAD et gestion de versions linéaire.

Intercom

Intercom : serveur SSH et Git, documentation AsciiDoc poussée via Git.

Viewers

Viewers : conversion et prévisualisation de fichiers, tels que les modèles STEP.

Collabora Editor

Collabora Editor : édition en ligne de pièces jointes bureautiques avec Collabora.

SSH & SFTP

screenshot ssh
Figure 1. Session serveur SSH
screenshot sftp
Figure 2. Explorateur de fichiers SFTP