{"users":[{"id":2,"username":"scampano","name":"Simon Campano","avatar_template":"/user_avatar/community.simplicite.io/scampano/{size}/10010_2.png","flair_name":"Simplicite","flair_url":"/uploads/default/original/2X/c/cb501954b2e9de68ee34418ef6bd4bd2c0b53b23.svg","flair_bg_color":"ffff","flair_group_id":90,"primary_group_name":"Simplicite","admin":true,"moderator":true,"trust_level":4},{"id":5,"username":"david","name":"David AZOULAY","avatar_template":"/user_avatar/community.simplicite.io/david/{size}/5703_2.png","flair_name":"Simplicite","flair_url":"/uploads/default/original/2X/c/cb501954b2e9de68ee34418ef6bd4bd2c0b53b23.svg","flair_bg_color":"ffff","flair_group_id":90,"primary_group_name":"Simplicite","admin":true,"moderator":true,"trust_level":4},{"id":219,"username":"Emmanuelle","name":"Emmanuelle Fenice","avatar_template":"/user_avatar/community.simplicite.io/emmanuelle/{size}/3012_2.png","trust_level":2},{"id":9,"username":"Francois","name":"François Genestin","avatar_template":"/user_avatar/community.simplicite.io/francois/{size}/6448_2.png","flair_name":"Simplicite","flair_url":"/uploads/default/original/2X/c/cb501954b2e9de68ee34418ef6bd4bd2c0b53b23.svg","flair_bg_color":"ffff","flair_group_id":90,"primary_group_name":"Simplicite","admin":true,"moderator":true,"trust_level":4},{"id":-1,"username":"system","name":"system","avatar_template":"/user_avatar/community.simplicite.io/system/{size}/4700_2.png","admin":true,"moderator":true,"trust_level":4},{"id":84,"username":"Alistair","name":"Alistair Wheeler","avatar_template":"/user_avatar/community.simplicite.io/alistair/{size}/7855_2.png","flair_name":"Simplicite","flair_url":"/uploads/default/original/2X/c/cb501954b2e9de68ee34418ef6bd4bd2c0b53b23.svg","flair_bg_color":"ffff","flair_group_id":90,"primary_group_name":"Simplicite","admin":true,"moderator":true,"trust_level":4}],"primary_groups":[{"id":90,"name":"Simplicite"}],"flair_groups":[{"id":90,"name":"Simplicite","flair_url":"/uploads/default/original/2X/c/cb501954b2e9de68ee34418ef6bd4bd2c0b53b23.svg","flair_bg_color":"ffff","flair_color":""}],"topic_list":{"can_create_topic":false,"filter":"latest","more_topics_url":"/c/tips-and-tricks/35?page=1","per_page":30,"top_tags":[{"id":5,"name":"v4-0","slug":"v4-0"},{"id":20,"name":"v5","slug":"v5"},{"id":15,"name":"docker","slug":"docker"},{"id":26,"name":"cicd","slug":"cicd"},{"id":7,"name":"filter","slug":"filter"},{"id":8,"name":"panel","slug":"panel"},{"id":3,"name":"v3-1","slug":"v3-1"},{"id":2,"name":"v3-2","slug":"v3-2"},{"id":35,"name":"v5-3","slug":"v5-3"},{"id":65,"name":"v6-3","slug":"v6-3"}],"topics":[{"fancy_title":"Tips and tricks list","id":2112,"title":"Tips and tricks list","slug":"tips-and-tricks-list","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2020-02-03T19:54:54.935Z","last_posted_at":"2020-02-03T19:54:55.094Z","bumped":true,"bumped_at":"2020-02-03T19:54:55.094Z","archetype":"regular","unseen":false,"pinned":true,"unpinned":null,"excerpt":"Tips &amp; Tricks list\nCustom UI components\n\nCustom chart embeding\nCustom confirm dialog\nResources in External Objects\nCustom consent page after first logon\nKeep scroll position when saving object\nServe a Vue.js application &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":1285,"like_count":4,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":4,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"About the Tips and tricks category","id":577,"title":"About the Tips and tricks category","slug":"about-the-tips-and-tricks-category","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2016-05-19T13:54:06.502Z","last_posted_at":"2016-05-19T13:54:06.566Z","bumped":true,"bumped_at":"2021-10-28T09:29:13.384Z","archetype":"regular","unseen":false,"pinned":true,"unpinned":null,"excerpt":"Discover and post small tips and tricks to make it easy for you (and everyone) to develop applications on Simplicité. Summary","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":1543,"like_count":0,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Couleur de progress bar en fonction de la valeur","id":13105,"title":"Couleur de progress bar en fonction de la valeur","slug":"couleur-de-progress-bar-en-fonction-de-la-valeur","posts_count":3,"reply_count":0,"highest_post_number":4,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/8/8e0d5882a284b2af63f690596b33a7061f4bc023_2_1024x88.png","created_at":"2026-09-09T13:59:17.608Z","last_posted_at":"2026-09-10T14:38:53.958Z","bumped":true,"bumped_at":"2026-09-10T14:38:53.958Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Bonjour, \nOn m’a demandé de colorer différemment les progress bar en fonction de leur avancement (rouge jusqu’à 75, orange jusqu’à 95, vert sinon) \nComme j’ai fait tout stackoverflow sans trouver de solution, je poste mo&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":65,"name":"v6-3","slug":"v6-3"}],"tags_descriptions":{},"views":47,"like_count":6,"has_summary":false,"last_poster_username":"Francois","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":true,"can_have_answer":true,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":219,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster, Accepted Answer","user_id":9,"primary_group_id":90,"flair_group_id":90},{"extras":null,"description":"Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Custom User Object","id":3400,"title":"Custom User Object","slug":"custom-user-object","posts_count":1,"reply_count":1,"highest_post_number":1,"image_url":null,"created_at":"2021-06-07T16:09:48.142Z","last_posted_at":"2021-06-07T16:09:48.346Z","bumped":true,"bumped_at":"2025-03-19T17:27:04.364Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":794,"like_count":3,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":3,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Update licence key","id":3677,"title":"Update licence key","slug":"update-licence-key","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2021-08-11T15:35:36.354Z","last_posted_at":"2021-08-11T15:35:36.561Z","bumped":true,"bumped_at":"2023-12-21T11:57:23.308Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Move to Docs","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":476,"like_count":0,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Custom publication of objects and fields","id":2830,"title":"Custom publication of objects and fields","slug":"custom-publication-of-objects-and-fields","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/b/b134ef7ad8ca80333d6757c606971457514b73e1_2_1024x840.png","created_at":"2020-12-17T23:24:34.804Z","last_posted_at":"2020-12-17T23:24:34.904Z","bumped":true,"bumped_at":"2023-12-20T17:06:45.893Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The canonical example on CSV publications is available on the documentation \n▶ \nPublication of objects and fields example","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"v4-0","slug":"v4-0"},{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":443,"like_count":1,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":1,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"CSV Adapter Example","id":2110,"title":"CSV Adapter Example","slug":"csv-adapter-example","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2020-01-30T16:17:08.780Z","last_posted_at":"2020-01-30T16:17:08.910Z","bumped":true,"bumped_at":"2023-12-20T14:16:52.234Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Moved to CSV line based adapter lesson","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":760,"like_count":2,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Deciding how to implement a data parser","id":4586,"title":"Deciding how to implement a data parser","slug":"deciding-how-to-implement-a-data-parser","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2022-03-24T14:17:15.126Z","last_posted_at":"2022-03-24T14:17:15.450Z","bumped":true,"bumped_at":"2023-12-20T14:15:23.820Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Moved to adapters lesson","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":391,"like_count":0,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Add custom Maven-assisted dependencies to your custom images","id":4669,"title":"Add custom Maven-assisted dependencies to your custom images","slug":"add-custom-maven-assisted-dependencies-to-your-custom-images","posts_count":2,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2022-04-07T23:27:01.193Z","last_posted_at":"2023-10-18T16:40:12.956Z","bumped":true,"bumped_at":"2023-10-18T16:40:12.956Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The latest Docker images  allows building custom images with additonal Maven dependencies added to the platform’s libs. \nThe typical Dockerfile for building these custom images is this one: Dockerfile-add-custom-dependen&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":15,"name":"docker","slug":"docker"}],"tags_descriptions":{},"views":683,"like_count":2,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":5,"primary_group_id":90,"flair_group_id":90},{"extras":"latest","description":"Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"[TIP] Positionnement automatique des links dans un modèle","id":6904,"title":"[TIP] Positionnement automatique des links dans un modèle","slug":"tip-positionnement-automatique-des-links-dans-un-modele","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/a/aebddf9e9a95ea425c88cf04a692094edeff7ce8_2_1024x854.png","created_at":"2023-09-20T09:24:31.301Z","last_posted_at":"2023-09-20T09:24:31.492Z","bumped":true,"bumped_at":"2023-09-20T09:46:05.493Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Request description\nBonjour, \nLorsqu’on a plusieurs liens entre deux nodes, il apparaissent empilés. \nJ’ai modifié le OnDrawNode pour les courber automatiquement à l’ouverture. \nC’est sûrement améliorable mais je partage&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":35,"name":"v5-3","slug":"v5-3"}],"tags_descriptions":{"v5-3":""},"views":142,"like_count":1,"has_summary":false,"last_poster_username":"Emmanuelle","category_id":35,"op_like_count":1,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":219,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Quick Adapter Configuration","id":6504,"title":"Quick Adapter Configuration","slug":"quick-adapter-configuration","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/4/4853eac5db27f126842898d94315b1468cab8b84_2_1024x493.png","created_at":"2023-06-07T13:37:43.149Z","last_posted_at":"2023-06-07T13:37:43.469Z","bumped":true,"bumped_at":"2023-06-07T13:37:43.469Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The Quick Adapters are a way to inject models fast, and also a way to let a non technical user work on the data model. This tool should only be used by seasoned Simplicité developers. \nThey are provided as a platform add&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":210,"like_count":1,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":1,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"XXL publications","id":6017,"title":"XXL publications","slug":"xxl-publications","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/original/2X/8/8e75a8b28f0bc40110266df56d54aa53c6dac691.jpeg","created_at":"2023-03-10T14:38:08.967Z","last_posted_at":"2023-03-10T14:38:09.301Z","bumped":true,"bumped_at":"2023-03-10T14:38:09.301Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"When generating large files, two issues have to be considered carefully: \n\n\nthe app memory must be cared for: if the whole file is, at some point in the algorithm, loaded in memory, we might saturate the app’s allocated &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":375,"like_count":2,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Limiter le nombre de pillbox en liste","id":5927,"title":"Limiter le nombre de pillbox en liste","slug":"limiter-le-nombre-de-pillbox-en-liste","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/a/a462aef34d69fd70b407681a77f9ce785daff9b0_2_1024x672.png","created_at":"2023-02-22T09:04:47.733Z","last_posted_at":"2023-02-22T10:59:55.195Z","bumped":true,"bumped_at":"2023-02-22T10:59:55.195Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Request description\nBonjour, \nJe partage une solution custom pour limiter le nombre d’étiquettes pillbox affichées en ligne. Car pour les instances contenant beaucoup de données, nous obtenions des lignes beaucoup trop h&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":237,"like_count":8,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":4,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":219,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":9,"primary_group_id":90,"flair_group_id":90},{"extras":null,"description":"Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Thème état (France) inspiré du DSFR","id":5764,"title":"Thème état (France) inspiré du DSFR","slug":"theme-etat-france-inspire-du-dsfr","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/8/8b91a78d6792bf5b32d700e41e6a94299009dad1_2_1024x629.png","created_at":"2023-01-18T20:27:46.786Z","last_posted_at":"2023-01-18T20:27:47.065Z","bumped":true,"bumped_at":"2023-01-18T20:42:54.725Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Pour installer le thème Simplicité “état (France)” inspiré du Système de Design de l’Etat (DSFR): \n  \nCréez manuellement un module ThemeEtat avec les settings suivant: \n{\n\t&quot;type&quot;: &quot;git&quot;,\n\t&quot;origin&quot;: { &quot;uri&quot;: &quot;https://gith&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":316,"like_count":2,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Default filtering on object","id":2955,"title":"Default filtering on object","slug":"default-filtering-on-object","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/original/2X/7/7ddd29c6256ad8f423013f6fe32858edad445c21.jpeg","created_at":"2021-02-17T16:15:20.835Z","last_posted_at":"2021-02-17T16:15:20.958Z","bumped":true,"bumped_at":"2023-01-16T12:03:46.030Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This allows to properly add some default filters that the user can remove \npublic class DemoSupplier extends ObjectDB {\n\tprivate static final long serialVersionUID = 1L;\n\tprivate static final String INIT_FILTER_FLAG=&quot;sup&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":542,"like_count":1,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":1,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"How to add an extra Java library","id":5626,"title":"How to add an extra Java library","slug":"how-to-add-an-extra-java-library","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/original/2X/4/4656bc309be3e59e7611812a110e5790831e8ca1.jpeg","created_at":"2022-12-15T17:26:05.753Z","last_posted_at":"2022-12-15T17:26:06.049Z","bumped":true,"bumped_at":"2022-12-16T15:34:55.107Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"1- Identify the library you need on maven\n2- Check the compatibility with Simplicité’s librabries\n\nAdd the maven-enforcer-plugin to your project’s pom.xml :\n\n&lt;plugin&gt;\n  &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;\n  &lt;arti&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":348,"like_count":2,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Input suggestions","id":5371,"title":"Input suggestions","slug":"input-suggestions","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/8/808d5c0bca7188b11c4dde8abffcb5b0f9045e1f_2_1024x477.gif","created_at":"2022-10-13T15:17:46.329Z","last_posted_at":"2022-10-13T15:17:46.622Z","bumped":true,"bumped_at":"2022-10-13T15:17:46.622Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"You might have seen errors with suggestions in the platform. Did you know that you could use this same system in your own app? \n▶ \nClick to see example in action\nGood to know\n\nthere are two type of suggestions:\n\nblocking (&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":316,"like_count":2,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Serve a Vue.js application from a Simplicité instance","id":5361,"title":"Serve a Vue.js application from a Simplicité instance","slug":"serve-a-vue-js-application-from-a-simplicite-instance","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2022-10-11T15:12:28.378Z","last_posted_at":"2022-10-11T15:12:28.577Z","bumped":true,"bumped_at":"2022-10-12T10:24:15.326Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The following example will explain how to serve a Vue.js application on the “/” endpoint of your instance. \nIt also provides a method to properly redirect URL paths in the event of a vue-router based application. \n1. Pre&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":307,"like_count":4,"has_summary":false,"last_poster_username":"Alistair","category_id":35,"op_like_count":4,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":84,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Keep current scroll position at object save","id":2916,"title":"Keep current scroll position at object save","slug":"keep-current-scroll-position-at-object-save","posts_count":5,"reply_count":0,"highest_post_number":5,"image_url":null,"created_at":"2021-01-29T10:41:52.229Z","last_posted_at":"2022-03-11T11:13:12.121Z","bumped":true,"bumped_at":"2022-03-11T11:13:12.121Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Use following script to keep current scroll position at object save : \n(function(ui) {\n    // ========= SIMPLICITE BOILERPLATE ===========\n\tif (!ui) return;\n\tvar app = ui.getAjax();   \n\tSimplicite.UI.hooks.MyObject = fun&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":904,"like_count":5,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90},{"extras":null,"description":"Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90},{"extras":null,"description":"Recent Poster","user_id":9,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Use the NPM JS client lib within the generic web UI","id":4425,"title":"Use the NPM JS client lib within the generic web UI","slug":"use-the-npm-js-client-lib-within-the-generic-web-ui","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2022-02-18T13:31:25.181Z","last_posted_at":"2022-02-18T13:31:25.303Z","bumped":true,"bumped_at":"2022-02-18T13:31:25.303Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This example module is for those who are interested in using the Simplicite® NPM JS lib from within the generic web UI. \n\nNote: this modules requires a Simplicité platform instance in version 5.2.0 and above","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":274,"like_count":0,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Basic Azure AD Config","id":4283,"title":"Basic Azure AD Config","slug":"basic-azure-ad-config","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2022-01-10T12:49:03.021Z","last_posted_at":"2022-01-10T12:49:03.383Z","bumped":true,"bumped_at":"2022-01-10T12:49:03.383Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":472,"like_count":4,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":4,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Blocking/limiting brute force attacks","id":4196,"title":"Blocking/limiting brute force attacks","slug":"blocking-limiting-brute-force-attacks","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":"https://community.simplicite.io/uploads/default/original/2X/2/2285f96f563eb9afd4d9ffea18fdd950a975f627.png","created_at":"2021-12-11T13:45:15.293Z","last_posted_at":"2021-12-13T18:35:38.949Z","bumped":true,"bumped_at":"2021-12-13T18:35:38.949Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"As of revision 5.1.16 it is possible to implement a logic for blocking/limiting “brute force” attacks or any abusive number of attempts to log in using the internal authentication. \nA typical implémentation relies on the&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":349,"like_count":2,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90},{"extras":null,"description":"Recent Poster","user_id":9,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Comment arrêter une tache trop longue?","id":4082,"title":"Comment arrêter une tache trop longue?","slug":"comment-arreter-une-tache-trop-longue","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2021-11-12T16:36:27.711Z","last_posted_at":"2021-11-12T16:36:27.879Z","bumped":true,"bumped_at":"2021-11-12T16:49:57.097Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Dans Simplicité, il existe un mécanisme de demande d’arrêt d’une tache longue / lancée par Action asynchrone ou via Crontab. \nDans le code de la méthode, il faut vérifier de temps en temps qu’il n’y a pas une demande d’a&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"v4-0","slug":"v4-0"},{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":420,"like_count":1,"has_summary":false,"last_poster_username":"Francois","category_id":35,"op_like_count":1,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":9,"primary_group_id":90,"flair_group_id":90},{"extras":null,"description":"Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"[CI/CD] Automatic module imports at platform startup","id":3919,"title":"[CI/CD] Automatic module imports at platform startup","slug":"ci-cd-automatic-module-imports-at-platform-startup","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2021-10-06T14:50:03.303Z","last_posted_at":"2021-10-06T15:15:35.817Z","bumped":true,"bumped_at":"2021-10-06T15:22:33.320Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"As of version 5.1.6, a new delivery method is offered by the platform, as documented here. It allows to pass a specification file telling the platform to import modules at startup. In a docker context, the file can be bi&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":15,"name":"docker","slug":"docker"},{"id":26,"name":"cicd","slug":"cicd"}],"tags_descriptions":{},"views":603,"like_count":1,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":1,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Use of resources in external object","id":3807,"title":"Use of resources in external object","slug":"use-of-resources-in-external-object","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2021-09-13T10:17:41.097Z","last_posted_at":"2021-09-13T14:11:58.269Z","bumped":true,"bumped_at":"2021-09-13T14:20:02.604Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Question: how to use a resource in my (often external) object \nProblem: \n\nto use an image / font / etc in CSS / HTML, we need the URL of the file\nif we directly get the URL of a added as an object’s resource, we can see &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":679,"like_count":0,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"MFA on internal authentication","id":3790,"title":"MFA on internal authentication","slug":"mfa-on-internal-authentication","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2021-09-08T16:57:00.234Z","last_posted_at":"2021-09-10T09:24:04.475Z","bumped":true,"bumped_at":"2021-09-10T09:24:04.475Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"As of version 5.1 (starting with revision 5.1.1) an basic MFA (multi factors authentication) will be available on the internal UI authentication. \n\nWarning : As it is still an experimental feature, the principles decribe&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":463,"like_count":1,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Custom consent page after first logon","id":3711,"title":"Custom consent page after first logon","slug":"custom-consent-page-after-first-logon","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/e/edbdea565ae026998b8758ef37d08d059416696b_2_1024x216.png","created_at":"2021-08-17T12:19:45.976Z","last_posted_at":"2021-08-17T12:19:46.184Z","bumped":true,"bumped_at":"2021-08-30T09:46:10.335Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The following example will show you one of the ways to implement a custom temporary page after the user has logged on for the first time. \nOne of the use-cases is : The user needs to agree to the terms and conditions bef&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":540,"like_count":5,"has_summary":false,"last_poster_username":"Alistair","category_id":35,"op_like_count":5,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":84,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Database access with Docker / Docker compose","id":3325,"title":"Database access with Docker / Docker compose","slug":"database-access-with-docker-docker-compose","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/1/189ffd9895da36b8c68201a990be8bad265d7fd7_2_1024x624.png","created_at":"2021-05-18T16:56:59.191Z","last_posted_at":"2021-05-18T16:56:59.348Z","bumped":true,"bumped_at":"2021-05-19T07:42:05.014Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The new Docker images (built as of May 19th 2021) will include a script /usr/local/tomcat/db.sh that connects you to the configured database with the appropriate native database client (mysql for a MySQL database, psql f&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":15,"name":"docker","slug":"docker"}],"tags_descriptions":{},"views":923,"like_count":0,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Restore backup with Docker","id":3156,"title":"Restore backup with Docker","slug":"restore-backup-with-docker","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2021-04-13T22:28:05.551Z","last_posted_at":"2021-04-13T22:28:05.844Z","bumped":true,"bumped_at":"2021-04-13T22:43:32.833Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This quick tutorial shows how to quickly restore a Simplicité Backup. It shows an example with a PostgreSQL database and a dbdoc on a CentOS 7 instance. \nPre-requisites\n\nDocker Registry Access\nSimplicité backup (database&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":15,"name":"docker","slug":"docker"}],"tags_descriptions":{},"views":605,"like_count":2,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Sending an email with attachments","id":2172,"title":"Sending an email with attachments","slug":"sending-an-email-with-attachments","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2020-02-20T10:06:33.012Z","last_posted_at":"2020-02-20T10:06:33.155Z","bumped":true,"bumped_at":"2021-04-09T14:25:13.371Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"ObjectDB obj = getGrant().getTmpObject(&quot;myObject&quot;);\nObjectField myObjectFile = obj.getField(&quot;myObjFile&quot;); // must be of type file\n\n// https://www.simplicite.io/resources/4.0/javadoc/com/simplicite/util/tools/MailTool.htm&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"v4-0","slug":"v4-0"},{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":672,"like_count":0,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"feature_change_code":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]}]}}