commit fbd191d9dc963338f2b6f8bed6245ed955503583 Author: Charles Date: Wed Oct 29 01:31:12 2025 +0100 Initial commit - cadMyDC V2.1 Projet d'interface graphique automatique pour Designer de Distech Controls. Interface type MyDC Control pour automates Eclypse V2+. Fonctionnalités : - Navigation par catégories de points BACnet - Support multilingue (FR/EN) - Thème clair/sombre - Pages spécialisées (alarmes, tendances, programmes, dérogations) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1ff04ba --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +# Fichiers de configuration contenant des secrets +.env +*.env +*.env.example + +# Token Gitea +.gitea-token + +# Fichiers ZIP temporaires (packages) +*.zip +*.php + +# Fichiers temporaires PHP +*.tmp +*.temp + +# Fichiers de logs +*.log + +# Fichiers systeme +.DS_Store +Thumbs.db +desktop.ini + +# Fichiers de backup +*.bak +*.backup +*~ + +# Dossiers de build/cache +.cache/ +tmp/ +temp/ +build/ + +# IDE et editeurs +.vscode/ +.idea/ +*.swp +*.swo diff --git a/README.md b/README.md new file mode 100644 index 0000000..e7f1a46 --- /dev/null +++ b/README.md @@ -0,0 +1,373 @@ +# cadMyDC - Alternative à Command + +*English version below* + +**Version:** 2.1\ +**Auteur:** Charles-Arthur DAVID\ +**Plateforme:** Distech Controls Designer\ +**Compatibilité:** Automates Eclypse (Version V2)\ +**Version V1** Disponible dans ce projet : https://git.cadjou.net/DistechControls/cadMyDC + +## Description + +cadMyDC est un projet d'interface graphique automatique pour l'application Designer de Distech Controls. +Il s'adapte aux points contenus dans le programme GFX en affichant les points par type, +ainsi que les tendances, les programmes horaires, les alarmes et les points en dérogation. +Il crée une interface utilisateur intuitive ressemblant à MyDC Control pour visualiser et contrôler les points BACnet +des automates de la gamme Eclypse en version V2 (Facilities). + +Ce projet offre une navigation structurée par catégories de points (entrées/sorties analogiques, digitales, multi-états, tendances, programmes horaires, etc.) avec support multilingue (Français/Anglais). + +## Fonctionnalités + +- **Navigation par catégories** : Organisation automatique des points BACnet par type + - Entrées Analogiques (Analog Input) + - Sorties Analogiques (Analog Output) + - Valeurs Analogiques (Analog Value) + - Entrées Digitales (Binary Input) + - Sorties Digitales (Binary Output) + - Valeurs Digitales (Binary Value) + - Entrées Multi-états (Multi State Input) + - Valeurs Multi-états (Multi State Value) + - Tendances (Trend Log) + - Programmes Horaires (Schedule) + - Dérogations (Override) + - Alarmes (Alarms) + +- **Support multilingue** : Interface disponible en Français et Anglais +- **Thème clair/sombre** : Personnalisation de l'apparence selon les préférences +- **Interface responsive** : Adaptation automatique à différentes tailles d'écran + +## Prérequis + +- Automate **Eclypse V2** (minimum) de Distech Controls +- Accès réseau à l'automate +- **XpressNetwork Utilities** (pour l'importation via XNU) ou accès à l'**interface web Designer** +- **DC Library** (à importer séparément - obligatoire pour le bon fonctionnement du projet) + +## Installation + +### 1. Téléchargement du projet + +Téléchargez la version souhaitée dans la section Paquets: + +[cadMyDCFacilities_V2.1.zip](https://git.cadjou.net/api/packages/DistechControls/generic/cadMyDCFacilities/2.1/cadMyDCFacilities_V2.1.zip) + +### 2. Importation dans Designer + +#### a. Via l'interface web +1. Ouvrez l'interface web **Designer** +2. Dans le menu principal, allez dans **Projet > Importer un projet** (ou **Project > Import Project**) +3. Naviguez jusqu'au dossier qui contient `cadMyDCFacilities_V2.XX.zip` +4. Sélectionnez le fichier zip **cadMyDCFacilities_V2.XX.zip** +5. Cliquez sur **Ok** + +#### b. Via XpressNetwork Utilities +1. Ouvrez XpressNetwork Utilities +2. Ajoutez le ou les automates ECY V2 (minimum) soit avec le Find / l'import ou manuellement +3. Sélectionnez le ou les automates souhaités +4. Cliquer sur l'icone Eclypse Designer +3. Naviguez jusqu'au dossier qui contient `cadMyDCFacilities_V2.XX.zip` +4. Sélectionnez le fichier zip **cadMyDCFacilities_V2.XX.zip** +5. Cliquez sur **Ok** + +### 3. Importer la DC Library + +**IMPORTANT :** Le projet cadMyDCFacilities nécessite impérativement la **DC Library** pour fonctionner correctement. +Il est disponible dans Software Center. +Importez la DC Library de la même manière que le projet cadMyDCFacilities en suivant les mêmes étapes (via l'interface web ou via XpressNetwork Utilities). + +## Structure du projet + +``` +cadMyDC/ +├── _proj.json # Configuration du projet +├── index.dg5 # Page principale avec navigation +├── pages/ # Pages spécialisées +│ ├── alarms.dg5 # Gestion des alarmes +│ ├── loadingPage.dg5 # Page de chargement +│ ├── noData.dg5 # Page sans données +│ ├── override.dg5 # Gestion des dérogations +│ ├── schedule.dg5 # Gestion des programmes horaires +│ ├── showData.dg5 # Affichage des données +│ └── trend.dg5 # Affichage des tendances +├── palette/ # Widgets personnalisés (vide actuellement) +└── fonts/ # Polices personnalisées +``` + +## Utilisation + +### Accès à l'interface + +Une fois le projet importé et l'automate configuré, accédez à l'interface via le navigateur web en utilisant l'une des URL suivantes : + +#### Français +``` +https://[IP_AUTOMATE]/viewer.html?proj=cadMyDC&force-redirect=true +``` + +#### Anglais +``` +https://[IP_AUTOMATE]/viewer.html?proj=cadMyDC&force-redirect=true +``` + +**Note :** Remplacez `[IP_AUTOMATE]` par l'adresse IP de votre automate Eclypse. +**Note :** L'option `force-redirect=true` bloque l'accès aux autres pages web de l'automate si utilisateur n'est pas admin + +### Configuration de la page d'accueil utilisateur + +Vous pouvez configurer l'URL avec le paramètre de langue dans la **page d'accueil utilisateur** de l'automate pour définir la langue par défaut. + +### Navigation + +L'interface présente un menu latéral avec toutes les catégories de points détectées automatiquement. Cliquez sur une catégorie pour afficher les points correspondants. + +### Visualisation des données + +- Les **points standards** (AI, AO, AV, BI, BO, BV, MSI, MSV) affichent leurs valeurs et permettent les modifications (selon les droits) +- Les **tendances** (Trend Log) affichent les graphiques historiques +- Les **programmes** (Schedule) permettent la visualisation et modification des plannings +- Les **dérogations** (Override) permettent de forcer temporairement des valeurs +- Les **alarmes** (Alarms) affichent l'état des alarmes actives + +## Dépannage + +### Le projet ne s'importe pas + +- Vérifiez que vous importez bien le fichier ZIP `cadMyDCFacilities_V2.XX.zip` +- Assurez-vous d'avoir importé la **DC Library** avant ou après le projet +- Vérifiez que votre automate est en version **V2 minimum** + +### Aucun point n'apparaît + +- Vérifiez que l'automate est bien connecté au réseau +- Vérifiez que votre programme GFX contient des points BACnet +- Actualisez la page du navigateur + +### Problème de langue + +- Vérifiez que vous utilisez le bon paramètre dans l'URL : `&lan=fr` pour le français +- Pour forcer la langue française, utilisez l'URL complète : `/viewer.html?proj=cadMyDC&lan=fr` +- Sans paramètre de langue, l'interface s'affiche en anglais par défaut + +### Le projet ne fonctionne pas correctement + +- **Vérifiez impérativement que la DC Library est importée** - c'est la cause la plus fréquente de dysfonctionnement +- Vérifiez les logs dans l'interface Designer pour identifier les erreurs +- Réimportez le projet et la DC Library si nécessaire + +## Support et Contribution + +**IMPORTANT : Ce projet est un développement personnel indépendant.** + +- Ce projet a été développé par Charles-Arthur DAVID à titre personnel +- **Distech Controls n'est pas responsable de ce projet et ne le supporte pas** +- **Aucune demande de support ne sera prise en charge par Distech Controls** +- Distech Controls ne fournit aucune garantie ni assistance technique pour ce projet + +### Comment obtenir de l'aide + +La **seule façon de remonter un problème ou une suggestion** est de passer par le système de tickets sur Gitea : + +**Ouvrir un ticket sur : https://git.cadjou.net/DistechControls/cadMyDCFacilities/issues** + +Toute demande de support adressée à Distech Controls concernant ce projet sera refusée. + +## Historique des versions + +### Version 2.1 (Actuelle) +- Interface de navigation structurée par catégories +- Support multilingue FR/EN (via paramètre URL) +- Thèmes clair/sombre +- Pages spécialisées pour alarmes, tendances, programmes, dérogations +- Auto-découverte des points BACnet +- Compatible Eclypse V2+ + +--- + +# cadMyDC - Alternative to Command + +*Version française ci-dessus* + +**Version:** 2.1\ +**Author:** Charles-Arthur DAVID\ +**Platform:** Distech Controls Designer\ +**Compatibility:** Eclypse Controllers (Version V2)\ +**Version V1** Available in this project: https://git.cadjou.net/DistechControls/cadMyDC + +## Description + +cadMyDC is an automatic graphical interface project for Distech Controls' Designer application. +It adapts to the points contained in the GFX program by displaying points by type, +as well as trends, schedules, alarms, and override points. +It creates an intuitive user interface similar to MyDC Control to view and control BACnet points +from Eclypse controllers in V2 version (Facilities). + +This project offers structured navigation by point categories (analog/digital/multi-state inputs/outputs, trends, schedules, etc.) with multilingual support (French/English). + +## Features + +- **Category-based navigation**: Automatic organization of BACnet points by type + - Analog Inputs + - Analog Outputs + - Analog Values + - Binary Inputs + - Binary Outputs + - Binary Values + - Multi State Inputs + - Multi State Values + - Trend Logs + - Schedules + - Overrides + - Alarms + +- **Multilingual support**: Interface available in French and English +- **Light/Dark theme**: Customization of appearance according to preferences +- **Responsive interface**: Automatic adaptation to different screen sizes + +## Prerequisites + +- Distech Controls **Eclypse V2** controller (minimum) +- Network access to the controller +- **XpressNetwork Utilities** (for import via XNU) or access to **Designer web interface** +- **DC Library** (to be imported separately - mandatory for proper project operation) + +## Installation + +### 1. Project Download + +Download the desired version from the Packages section: + +[cadMyDCFacilities_V2.1.zip](https://git.cadjou.net/api/packages/DistechControls/generic/cadMyDCFacilities/2.1/cadMyDCFacilities_V2.1.zip) + +### 2. Import into Designer + +#### a. Via web interface +1. Open the **Designer** web interface +2. In the main menu, go to **Project > Import Project** +3. Navigate to the folder containing `cadMyDCFacilities_V2.XX.zip` +4. Select the zip file **cadMyDCFacilities_V2.XX.zip** +5. Click **Ok** + +#### b. Via XpressNetwork Utilities +1. Open XpressNetwork Utilities +2. Add the ECY V2 controller(s) (minimum) either with Find/Import or manually +3. Select the desired controller(s) +4. Click on the Eclypse Designer icon +3. Navigate to the folder containing `cadMyDCFacilities_V2.XX.zip` +4. Select the zip file **cadMyDCFacilities_V2.XX.zip** +5. Click **Ok** + +### 3. Import the DC Library + +**IMPORTANT:** The cadMyDCFacilities project absolutely requires the **DC Library** to function correctly. +It is available in the Software Center. +Import the DC Library in the same way as the cadMyDCFacilities project by following the same steps (via web interface or via XpressNetwork Utilities). + +## Project Structure + +``` +cadMyDC/ +├── _proj.json # Project configuration +├── index.dg5 # Main page with navigation +├── pages/ # Specialized pages +│ ├── alarms.dg5 # Alarms management +│ ├── loadingPage.dg5 # Loading page +│ ├── noData.dg5 # No data page +│ ├── override.dg5 # Override management +│ ├── schedule.dg5 # Schedule management +│ ├── showData.dg5 # Data display +│ └── trend.dg5 # Trends display +├── palette/ # Custom widgets (currently empty) +└── fonts/ # Custom fonts +``` + +## Usage + +### Interface Access + +Once the project is imported and the controller configured, access the interface via web browser using one of the following URLs: + +#### French +``` +https://[CONTROLLER_IP]/viewer.html?proj=cadMyDC&force-redirect=true +``` + +#### English +``` +https://[CONTROLLER_IP]/viewer.html?proj=cadMyDC&force-redirect=true +``` + +**Note:** Replace `[CONTROLLER_IP]` with your Eclypse controller's IP address. +**Note:** The `force-redirect=true` option blocks access to other web pages of the controller if the user is not an admin + +### User Home Page Configuration + +You can configure the URL with the language parameter in the controller's **user home page** to set the default language. + +### Navigation + +The interface presents a side menu with all automatically detected point categories. Click on a category to display the corresponding points. + +### Data Visualization + +- **Standard points** (AI, AO, AV, BI, BO, BV, MSI, MSV) display their values and allow modifications (according to rights) +- **Trends** (Trend Log) display historical graphs +- **Schedules** allow viewing and modification of schedules +- **Overrides** allow temporarily forcing values +- **Alarms** display the status of active alarms + +## Troubleshooting + +### The project does not import + +- Verify that you are importing the ZIP file `cadMyDCFacilities_V2.XX.zip` +- Make sure you have imported the **DC Library** before or after the project +- Verify that your controller is version **V2 minimum** + +### No points appear + +- Verify that the controller is properly connected to the network +- Verify that your GFX program contains BACnet points +- Refresh the browser page + +### Language issue + +- Verify that you are using the correct parameter in the URL: `&lan=fr` for French +- To force the French language, use the full URL: `/viewer.html?proj=cadMyDC&lan=fr` +- Without a language parameter, the interface displays in English by default + +### The project does not work correctly + +- **Absolutely verify that the DC Library is imported** - this is the most common cause of malfunction +- Check the logs in the Designer interface to identify errors +- Reimport the project and DC Library if necessary + +## Support and Contribution + +**IMPORTANT: This project is an independent personal development.** + +- This project was developed by Charles-Arthur DAVID on a personal basis +- **Distech Controls is not responsible for this project and does not support it** +- **No support requests will be handled by Distech Controls** +- Distech Controls provides no warranty or technical assistance for this project + +### How to Get Help + +The **only way to report a problem or suggestion** is through the ticket system on Gitea: + +**Open a ticket at: https://git.cadjou.net/DistechControls/cadMyDCFacilities/issues** + +Any support request addressed to Distech Controls concerning this project will be refused. + +## Version History + +### Version 2.1 (Current) +- Category-based navigation interface +- Multilingual support FR/EN (via URL parameter) +- Light/Dark themes +- Specialized pages for alarms, trends, schedules, overrides +- BACnet points auto-discovery +- Compatible with Eclypse V2+ + +--- diff --git a/cadMyDC/_proj.json b/cadMyDC/_proj.json new file mode 100644 index 0000000..223ac0a --- /dev/null +++ b/cadMyDC/_proj.json @@ -0,0 +1 @@ +{"name":"cadMyDC","owner":"admin","canRead":["all"],"canWrite":[],"isTemplate":false,"isLibrary":false,"category":null,"description":"MyDC Controls of Equivalence by Charles-Arthur DAVID","version":"2.1","firstDayOfWeek":0,"loadExternalConfig":false,"protected":false,"loadViewerLocale":false,"defaultWidth":1,"defaultHeight":1,"vendor":"","componentName":"","widgetFile":"index.dg5","uiWidgets":"","defaultTheme":""} \ No newline at end of file diff --git a/cadMyDC/fonts/Roboto-Black.ttf b/cadMyDC/fonts/Roboto-Black.ttf new file mode 100644 index 0000000..2d45238 Binary files /dev/null and b/cadMyDC/fonts/Roboto-Black.ttf differ diff --git a/cadMyDC/fonts/Roboto-BlackItalic.ttf b/cadMyDC/fonts/Roboto-BlackItalic.ttf new file mode 100644 index 0000000..29a4359 Binary files /dev/null and b/cadMyDC/fonts/Roboto-BlackItalic.ttf differ diff --git a/cadMyDC/fonts/Roboto-Bold.ttf b/cadMyDC/fonts/Roboto-Bold.ttf new file mode 100644 index 0000000..d998cf5 Binary files /dev/null and b/cadMyDC/fonts/Roboto-Bold.ttf differ diff --git a/cadMyDC/fonts/Roboto-BoldItalic.ttf b/cadMyDC/fonts/Roboto-BoldItalic.ttf new file mode 100644 index 0000000..b4e2210 Binary files /dev/null and b/cadMyDC/fonts/Roboto-BoldItalic.ttf differ diff --git a/cadMyDC/fonts/Roboto-Italic.ttf b/cadMyDC/fonts/Roboto-Italic.ttf new file mode 100644 index 0000000..5b390ff Binary files /dev/null and b/cadMyDC/fonts/Roboto-Italic.ttf differ diff --git a/cadMyDC/fonts/Roboto-Light.ttf b/cadMyDC/fonts/Roboto-Light.ttf new file mode 100644 index 0000000..3526798 Binary files /dev/null and b/cadMyDC/fonts/Roboto-Light.ttf differ diff --git a/cadMyDC/fonts/Roboto-LightItalic.ttf b/cadMyDC/fonts/Roboto-LightItalic.ttf new file mode 100644 index 0000000..46e9bf7 Binary files /dev/null and b/cadMyDC/fonts/Roboto-LightItalic.ttf differ diff --git a/cadMyDC/fonts/Roboto-Medium.ttf b/cadMyDC/fonts/Roboto-Medium.ttf new file mode 100644 index 0000000..f714a51 Binary files /dev/null and b/cadMyDC/fonts/Roboto-Medium.ttf differ diff --git a/cadMyDC/fonts/Roboto-MediumItalic.ttf b/cadMyDC/fonts/Roboto-MediumItalic.ttf new file mode 100644 index 0000000..5dc6a2d Binary files /dev/null and b/cadMyDC/fonts/Roboto-MediumItalic.ttf differ diff --git a/cadMyDC/fonts/Roboto-Regular.ttf b/cadMyDC/fonts/Roboto-Regular.ttf new file mode 100644 index 0000000..2b6392f Binary files /dev/null and b/cadMyDC/fonts/Roboto-Regular.ttf differ diff --git a/cadMyDC/fonts/Roboto-Thin.ttf b/cadMyDC/fonts/Roboto-Thin.ttf new file mode 100644 index 0000000..4e797cf Binary files /dev/null and b/cadMyDC/fonts/Roboto-Thin.ttf differ diff --git a/cadMyDC/fonts/Roboto-ThinItalic.ttf b/cadMyDC/fonts/Roboto-ThinItalic.ttf new file mode 100644 index 0000000..eea836f Binary files /dev/null and b/cadMyDC/fonts/Roboto-ThinItalic.ttf differ diff --git a/cadMyDC/index.dg5 b/cadMyDC/index.dg5 new file mode 100644 index 0000000..d9e77a3 --- /dev/null +++ b/cadMyDC/index.dg5 @@ -0,0 +1 @@ +{"@type":"group","Left_Layout":{"@type":"symbol","width":"100%","height":"100%","creationPolicy":"onDisplay","symbol":"lib/dcWidgets/palette/widgets:Navigation.Layout_B","tabLabels":"Tab1,Tab2,Tab3","paths":"pages/charts.dg5,pages/gagues.dg5,pages/text.dg5","!paletteIcon":"assets/widgetIcons/LayoutSide.png","initialIndex":0,"!df":true,"!label":"Layout Side","Initial_Index":0,"Default_Tab":0,"Enabled":true,"Logo":"lib/dcWidgets/assets/logos/distech.svg","Logo_Padding":10,"Dark_Theme":false,"Data":["tableColumnMapping1.output"],"tableColumnMapping1":{"@type":"tableColumnMapping","!ps":["input","retainColumns","0","1","2","3","4","5","6","7","output"],"!x":1544,"!y":494,"input":["@parent.tableJoin4.output"],"!w":100,"@array":["label",["@parent.if.output"],"path","path","icons","icons","dataPath","dataPath"]},"if":{"@type":"if","!ps":["op","0","1","then","else","output"],"!x":1273,"!y":581,"op":"contains","then":"fr","else":"label","@array":[["@parent.projectInfo.userLanguage"],"fr"]},"tableJoin4":{"@type":"tableJoin","!ps":["input1","input2","field1","field2","join","output"],"!x":1408,"!y":396,"input1":["@parent.csvParser.output"],"input2":["@parent.table.data"],"join":"left","!w":93,"field1":"label","field2":"label"},"projectInfo":{"@type":"projectInfo","!ps":["projectId","projectName","libraryPath","user","superUser","userLanguage","dsaGroups","description","version","serverType","theme","isDesigner","authenticated","refresh"],"!x":1029,"!y":532},"csvParser":{"@type":"csvParser","!ps":["input","withHeader","delimiter","parseError","output"],"!x":1265,"!y":297,"input":["@parent.replace.output"],"withHeader":true},"table":{"@type":"table","data":{"@type":"tabledata","cols":[{"name":"row","type":"number","meta":{"name":"row","type":"number"}},{"name":"label","meta":{"name":"label"}},{"name":"fr","meta":{"name":"fr"}}],"rows":[[0,"Analog Inputs","Entrées Analogiques"],[1,"Analog Outputs","Sorties Analogiques"],[2,"Analog Values","Valeurs Analogiques"],[3,"Binary Inputs","Entrée Digitales"],[4,"Binary Outputs","Sorties Digitales"],[5,"Binary Values","Valeurs Digitales"],[6,"Multi State Inputs","Entrée Multi-états"],[7,"Multi State Values","Valeurs Multi-états"],[8,"Trend Log","Tendances"],[9,"Schedule","Programmes Horaires"],[10,"Override","Dérogation"],[11,"Alarms","Alarmes"]]},"!ps":["data"],"!x":1264,"!y":438,"!w":100},"replace":{"@type":"replace","!ps":["input","regexp","0","1","2","3","4","5","6","7","8","9","output"],"!x":1105,"!y":223,"input":["@parent.csvWriter.output"],"regexp":true,"@array":["Schedules,\\d+","Schedule,pages/schedule.dg5","Trend Logs,\\d+","Trend Log,pages/trend.dg5","\\d+","pages/showData.dg5","Override,\\d+","Override,pages/override.dg5","Alarms,\\d+","Alarms,pages/alarms.dg5"]},"csvWriter":{"@type":"csvWriter","!ps":["input","withHeader","output"],"!x":955,"!y":194,"input":["@parent.tableColumnMapping.output"],"withHeader":true},"tableColumnMapping":{"@type":"tableColumnMapping","!ps":["input","retainColumns","0","1","2","3","4","5","6","7","output"],"!x":790,"!y":35,"input":["@parent.tableJoin5.output"],"@array":["label","name","path","row","icons","null","dataPath","path"]},"tableJoin5":{"@type":"tableJoin","!ps":["input1","input2","field1","field2","join","output"],"!x":564,"!y":699,"input1":["@parent.tableJoin2.output"],"input2":["@parent.table1.data"],"join":"union","!w":100},"tableJoin2":{"@type":"tableJoin","!ps":["input1","input2","field1","field2","join","output"],"!x":563,"!y":543,"input1":["@parent.tableJoin3.output"],"input2":["@parent.tableSearch4.output"],"join":"union","!w":100},"table1":{"@type":"table","data":{"@type":"tabledata","cols":[{"name":"row","type":"number","meta":{"name":"row","type":"number"}},{"name":"name","meta":{"name":"name"}},{"name":"path","meta":{"name":"path"}},{"name":"hasChildren","type":"bool","meta":{"name":"hasChildren","type":"bool"}},{"name":"hasValue","type":"bool","meta":{"name":"hasValue","type":"bool"}},{"name":"hasHistory","type":"bool","meta":{"name":"hasHistory","type":"bool"}},{"name":"type","meta":{"name":"type"}},{"name":"icon","type":"String","meta":{"name":"icon","type":"String"}},{"name":"unit","type":"String","meta":{"name":"unit","type":"String"}},{"name":"enum","type":"String","meta":{"name":"enum","type":"String"}}],"rows":[[0,"Alarms",null,null,null,null,null,null,null,null],[1,"Override","/Data/Local+Device/Analog+Input",true,false,false,null,null,null,null]]},"!ps":["data"],"!x":351,"!y":717},"tableJoin3":{"@type":"tableJoin","!ps":["input1","input2","field1","field2","join","output"],"!x":563,"!y":359,"input1":["@parent.tableJoin1.output"],"input2":["@parent.tableSearch3.output"],"join":"union"},"tableSearch4":{"@type":"dfsymbol","symbol":"tableSearch","table":["@parent.Local_Device.output"],"column":"name","search":"Sche","!ps":["table","column","search","is","output"],"!x":347,"!y":554},"tableJoin1":{"@type":"tableJoin","!ps":["input1","input2","field1","field2","join","output"],"!x":560,"!y":191,"input1":["@parent.tableJoin.output"],"input2":["@parent.tableSearch2.output"],"join":"union","!w":93},"tableSearch3":{"@type":"dfsymbol","symbol":"tableSearch","table":["@parent.Local_Device.output"],"column":"name","search":"Trend","!ps":["table","column","search","is","output"],"!x":350,"!y":418},"Local_Device":{"@type":"getChildren","path":"/services/bacnet/local/objects","autoRun":true,"!ps":["path","output","error"],"!x":33,"!y":208},"tableJoin":{"@type":"tableJoin","!ps":["input1","input2","field1","field2","join","output"],"!x":557,"!y":28,"input1":["@parent.tableSearch.output"],"input2":["@parent.tableSearch1.output"],"join":"union","!w":109},"tableSearch2":{"@type":"dfsymbol","symbol":"tableSearch","table":["@parent.Local_Device.output"],"column":"name","search":"Multi","!ps":["table","column","search","is","output"],"!x":352,"!y":284},"tableSearch":{"@type":"dfsymbol","symbol":"tableSearch","table":["@parent.Local_Device.output"],"column":"name","search":"Analog","!ps":["table","column","search","is","output"],"!x":352,"!y":23},"tableSearch1":{"@type":"dfsymbol","symbol":"tableSearch","table":["@parent.Local_Device.output"],"column":"name","search":"Binary","!ps":["table","column","search","is","output"],"!x":352,"!y":154},"tabData1":{"@type":"table","data":{"@type":"tabledata","cols":[{"name":"row","type":"number","meta":{"name":"row","type":"number"}},{"name":"label","meta":{"name":"v1"}},{"name":"path","meta":{"name":"v2"}},{"name":"icons","meta":{"name":"icons"}},{"name":"dataPath","meta":{"name":"dataPath"}}],"rows":[[0,"Home","samplePath/index.dg5","lib/dcWidgets/assets/icons/home-darkBlue.svg",""],[1,"Alarms","samplePath/pages/Schedules.dg5","lib/dcWidgets/assets/icons/bell-darkBlue.svg",""],[2,"Schedule","samplePath/pages/Alarms.dg5","lib/dcWidgets/assets/icons/calendar-darkBlue.svg",""],[3,"Trends","samplePath/pages/Trends.dg5","lib/dcWidgets/assets/icons/trend-darkBlue.svg",""]]},"!ps":["data"],"!x":34,"!y":30},"Default":0,"autoSize":true,"Alarm_Count_Enabled":true,"User_Image_1":"assets/weather_icons/dark/01d.png","User_Image_2":"assets/weather_icons/dark/01d.png","User_Label_1":"Label 1","User_Value_1":"Value 1","User_Label_2":"Label 2","User_Value_2":"Value 2","Language":"en","Main_Nav_Width":180,"Follow_Global_Theme":true,"thisProject":"lib/cadMyDC/","flexGrow":0,"hCenter":"","tableFilter":{"@type":"tableFilter","!ps":["input","condition","output"],"!x":1691,"!y":709,"input":["@parent.tableColumnMapping1.output"],"condition":["@parent.concat.output"]},"concat":{"@type":"concat","!ps":["0","1","strict","output"],"!x":1545,"!y":748,"@array":["row == ",["@parent.Selected"]]}},"Text":{"@type":"text","width":"100.0%","cornerRadius":0,"multiline":false,"fontSize":"36","border":{"@type":"fill","gradient":{"@type":"gradient","@array":[{"ratio":0,"color":"#000000","alpha":1},{"ratio":100,"color":"#ffffff","alpha":1}]},"color":16777215},"text":["@parent.Left_Layout.tableFilter.output.0_label"],"color":["props.fontColor"],"fontWeight":"bold","paddingLeft":10,"paddingRight":10,"paddingTop":10,"paddingBottom":10,"keepEqualPaddings":true,"clickThrough":true,"!df":true,"globalTheme":{"@type":"if","!ps":["op","0","1","then","else","output"],"!x":261,"!y":250,"then":["@stage.Left_Layout.Dark_Theme"],"else":["@parent.setAutoTheme.output"],"@array":[["@stage.Left_Layout.Follow_Global_Theme"],"false"]},"setAutoTheme":{"@type":"if","!ps":["op","0","1","then","else","output"],"!x":260,"!y":89,"then":"true","else":"false","@array":[["@parent.autoTheme.theme"],"dark"]},"autoTheme":{"@type":"projectInfo","!ps":["theme"],"!x":258,"!y":25},"lightMode":{"@type":"propertyHub","hubMode":"main","autoRun":true,"!ps":["invoke","hubMode","hubInstance","outputAll","bgColor","shadowColor","callOutBG","bellIcon","fontColor"],"!x":76,"!y":16,"!var":[{"n":"bgColor","t":"fill"},{"n":"shadowColor","t":"fill"},{"n":"callOutBG","t":"fill"},{"n":"bellIcon","t":"string"},{"n":"fontColor","t":"fill"}],"bgColor":{"@type":"fill","fillType":"solid","color":16777215},"titleColor":{"@type":"fill","fillType":"solid","color":3355443},"shadowColor":{"@type":"fill","fillType":"solid","color":15527410},"gridLineColor":{"@type":"fill","fillType":"solid","color":12830664},"fontColor":{"@type":"fill","fillType":"solid","color":3289650},"trackColor":{"@type":"fill","fillType":"solid","color":16119546},"pointerColor":{"@type":"fill","fillType":"solid","color":4741221},"minMax":{"@type":"fill","fillType":"solid","color":10066329},"callOutBG":{"@type":"fill","fillType":"solid","color":16777215},"bellIcon":"assets/icons/alarm-dark.svg","valueFontType":"Roboto-Regular.ttf","labelFontType":"Roboto-Regular.ttf"},"darkMode":{"@type":"propertyHub","hubMode":"main","autoRun":true,"!ps":["invoke","hubMode","hubInstance","outputAll","bgColor","shadowColor","callOutBG","bellIcon","fontColor"],"!x":76,"!y":232,"!var":[{"n":"bgColor","t":"fill"},{"n":"shadowColor","t":"fill"},{"n":"callOutBG","t":"fill"},{"n":"bellIcon","t":"string"},{"n":"fontColor","t":"fill"}],"bgColor":{"@type":"fill","fillType":"solid","color":2370611},"titleColor":{"@type":"fill","fillType":"solid","color":3355443},"shadowColor":{"@type":"fill","fillType":"solid","color":4741221},"gridLineColor":{"@type":"fill","fillType":"solid","color":12830664},"fontColor":{"@type":"fill","fillType":"solid","color":16777215},"trackColor":{"@type":"fill","fillType":"solid","color":16119546},"pointerColor":{"@type":"fill","fillType":"solid","color":4741221},"minMax":{"@type":"fill","fillType":"solid","color":10066329},"callOutBG":{"@type":"fill","fillType":"solid","color":3358280},"bellIcon":"assets/icons/alarm-light.svg"},"setTheme":{"@type":"if","!ps":["op","0","1","then","else","output"],"!x":242,"!y":415,"op":"=","then":["@parent.darkMode.hubInstance"],"else":["@parent.lightMode.hubInstance"],"!w":115,"@array":[["@parent.globalTheme.output"],"true"]},"props":{"@type":"propertyHub","hubMode":"readWrite","autoRun":true,"!ps":["invoke","hubMode","hubInstance","outputAll","bgColor","fontColor","shadowColor","callOutBG","bellIcon"],"!x":506,"!y":74,"!var":[{"n":"bgColor","t":"fill"},{"n":"fontColor","t":"fill"},{"n":"shadowColor","t":"fill"},{"n":"callOutBG","t":"fill"},{"n":"bellIcon","t":"string"}],"titleColor":{"@type":"fill","fillType":"solid","color":3355443},"gridLineColor":{"@type":"fill","fillType":"solid","color":12830664},"trackColor":{"@type":"fill","fillType":"solid","color":16119546},"pointerColor":{"@type":"fill","fillType":"solid","color":4741221},"minMax":{"@type":"fill","fillType":"solid","color":10066329},"hubInstance":["@parent.setTheme.output"]}},"width":"100%","height":"100%","clipContent":true,"@array":[["Left_Layout"],["Text"]],"@symbols":{"@df":{"tableSearch":{"@type":"dfcontent","tableFilter_RC1":{"@type":"tableFilter","!ps":["input","condition","output"],"!x":394,"!y":148,"input":["@parent.@params.table"],"condition":["@parent.concat.output"],"!w":101},"concat":{"@type":"concat","!ps":["0","1","2","3","4","5","strict","output"],"!x":221,"!y":34,"strict":true,"@array":[["@parent.@params.column"],".toLowerCase().indexOf('",["@parent.@params.search"],"'.toLowerCase())",["@parent.if.output"],"-1"]},"if":{"@type":"if","!ps":["op","0","1","then","else","output"],"!x":50,"!y":15,"then":">","else":"==","@array":[["@parent.@params.is"],"true"]},"!df":true,"@params":{"!var":[{"n":"table","t":"tabledata"},{"n":"column","t":"string"},{"n":"search","t":"string"},{"n":"is","t":"bool"},{"n":"output","t":"tabledata","isOutput":true}],"output":["@parent.tableFilter_RC1.output"],"is":true}}}},"@ver":10285} \ No newline at end of file diff --git a/cadMyDC/pages/alarms.dg5 b/cadMyDC/pages/alarms.dg5 new file mode 100644 index 0000000..1c47475 --- /dev/null +++ b/cadMyDC/pages/alarms.dg5 @@ -0,0 +1 @@ +{"@type":"group","width":"100%","height":"100%","clipContent":true,"WidgetAlarms":{"@type":"jswidget","height":"100%","js":"lib/dcUtilities/widget.js#WidgetAlarms@DistechControls","width":"100%","background":{"@type":"fill"},"shadows":{"@type":"shadows","@array":[{"type":"dropShadow","color":0,"alpha":0.1,"x":0,"y":2,"blur":8}]},"!label":"Alarm Console"},"@array":[["WidgetAlarms"]],"@ver":10285} \ No newline at end of file diff --git a/cadMyDC/pages/loadingPage.dg5 b/cadMyDC/pages/loadingPage.dg5 new file mode 100644 index 0000000..17df5d0 --- /dev/null +++ b/cadMyDC/pages/loadingPage.dg5 @@ -0,0 +1 @@ +{"@type":"group","width":"100%","height":"100%","clipContent":true,"rotate":0,"group":{"@type":"group","layout":"absolute","top":10,"creationPolicy":"onDisplay","width":40,"height":40,"cube":{"@type":"img","src":"lib/dcIcons/assets/Light Theme/Main Navigation/cube.svg","width":"100%","height":"100%","tilingOpt":{"@type":"tilingOpt","fillType":"image","tiling":"contain","hAlign":"center","vAlign":"middle","angle":0},"rotate":0},"scaleContent":"fitRatio","contentWidth":40,"contentHeight":40,"hCenter":0,"rotate":["stopwatch.output"],"stopwatch":{"@type":"stopwatch","interval":0.01,"step":5,"!ps":["enabled","interval","step","output"],"!x":370,"!y":63,"enabled":true,"modulo":360},"!df":true,"@array":[["cube"]]},"@array":[["group"]],"@ver":10094} \ No newline at end of file diff --git a/cadMyDC/pages/noData.dg5 b/cadMyDC/pages/noData.dg5 new file mode 100644 index 0000000..472e4c5 --- /dev/null +++ b/cadMyDC/pages/noData.dg5 @@ -0,0 +1 @@ +{"@type":"group","width":"100%","height":"100%","clipContent":true,"Text":{"@type":"text","cornerRadius":0,"multiline":false,"fontSize":"26","border":{"@type":"fill","gradient":{"@type":"gradient","@array":[{"ratio":0,"color":"#000000","alpha":1},{"ratio":100,"color":"#ffffff","alpha":1}]},"color":16777215},"text":"No Data","color":0,"fontFamily":"Roboto-Medium.ttf","fontWeight":"bold","paddingLeft":10,"paddingRight":10,"paddingTop":10,"paddingBottom":10,"keepEqualPaddings":true,"hCenter":0},"@array":[["Text"]],"@ver":10094} \ No newline at end of file diff --git a/cadMyDC/pages/override.dg5 b/cadMyDC/pages/override.dg5 new file mode 100644 index 0000000..587b438 --- /dev/null +++ b/cadMyDC/pages/override.dg5 @@ -0,0 +1 @@ +{"@type":"group","Group":{"@type":"group","symbol":"dataBoxRow","renderer":{"map":{"dataPath":["@parent.@data.value"]}},"data":["@parent.table1.data"],"layout":"vertical","alignItems":"flex-start","width":"100.0%","@array":[]},"Text":{"@type":"text","cornerRadius":0,"multiline":false,"fontSize":"26","border":{"@type":"fill","gradient":{"@type":"gradient","@array":[{"ratio":0,"color":"#000000","alpha":1},{"ratio":100,"color":"#ffffff","alpha":1}]},"color":16777215},"text":"No Data","color":0,"fontFamily":"Roboto-Medium.ttf","fontWeight":"bold","paddingLeft":10,"paddingRight":10,"paddingTop":10,"paddingBottom":10,"keepEqualPaddings":true,"hCenter":0,"display":["@parent.if.output"]},"table1":{"@type":"table","data":["@parent.tableFilter.output"],"!ps":["data"],"!x":911,"!y":85},"if":{"@type":"if","!ps":["op","0","1","then","else","output"],"!x":1223,"!y":85,"then":"true","else":"false","@array":[["@parent.length.output"],"0"]},"tableAggregation1":{"@type":"tableAggregation","!ps":["input","column","method","output"],"!x":615,"!y":85,"input":["@parent.tableTranspose.output"],"column":"v0","method":"tableUnion"},"length":{"@type":"length","!ps":["input","output"],"!x":1064,"!y":85,"input":["@parent.table1.data"]},"width":"100%","height":"100%","clipContent":true,"!df":true,"get_overrides":{"@type":"invokeAction","path":"/services/gfx/configuration","action":"get-overrides","!ps":["invoke","path","action"],"!x":168,"!y":85,"invoke":["@parent.stopwatch.onLoop"],"!actProps":[["urls","map"]],"autoRun":true},"stopwatch":{"@type":"stopwatch","interval":1,"step":1,"!ps":["enabled","interval","step","output","onLoop"],"!x":24,"!y":85,"enabled":true,"modulo":30},"jsonParser1":{"@type":"jsonParser","!ps":["input","output","parseError","selector"],"!x":315,"!y":85,"input":["@parent.get_overrides.urls"],"selector":"","drillDownFilter":"*"},"tableTranspose":{"@type":"tableTranspose","!ps":["input","ignoreColumns","headerColumn","includeHeaders","headerPrefix","output"],"!x":464,"!y":85,"input":["@parent.jsonParser1.output"],"headerPrefix":"v","includeHeaders":false},"tableFilter":{"@type":"tableFilter","!ps":["input","condition","output"],"!x":761,"!y":85,"input":["@parent.tableAggregation1.output"],"condition":"value.indexOf(\"/services/hardware-io\")==-1"},"@array":[["Group"],["Text"]],"@symbols":{"dataBoxRow":{"@type":"group","WidgetDataBox":{"@type":"jswidget","height":"100%","js":"lib/dcUtilities/widget.js#WidgetDataBox@DistechControls","width":"100%","background":{"@type":"fill"},"shadows":{"@type":"shadows","@array":[{"type":"dropShadow","color":0,"alpha":0.1,"x":0,"y":2,"blur":8}]},"!label":"Databox","showHeader":false,"allowResize":"horizontal","nodeList":["bind!nodeList.output"],"bind!nodeList":{"@type":"propMapBinding","!ps":["output"],"@array":[{"@type":"propMapItem","path":["@parent.@parent.@parent.@params.dataPath"],"dg!getNode":{"@type":"getNode","service":["@parent.service"],"path":["@parent.path"]},"dg!Time":1706521306,"!ps":["path"],"@params":{"!var":[{"n":"label","t":"string","isOutput":true},{"n":"numberFormat","t":"string","isOutput":true},{"n":"showPriority","t":"bool","isOutput":true},{"n":"showUnits","t":"bool","isOutput":true},{"n":"showPriorityParameter","t":"bool","isOutput":true},{"n":"showTrends","t":"bool","isOutput":true},{"n":"bindingRefreshRate","t":"number","isOutput":true},{"n":"inlineActions","t":"bool","isOutput":true},{"n":"showActions","t":"bool","isOutput":true},{"n":"actions","t":"multiselectEnum","isOutput":true}],"label":["@parent.dg!getNode.name"]}}]},"!df":true},"width":"100.0%","height":41,"clipContent":true,"scaleContent":"none","layout":"absolute","creationPolicy":"onDisplay","@array":[["WidgetDataBox"]],"@params":{"!reuse":true,"!var":[{"n":"dataPath","t":"string"}],"!layout":{"type":"vbox","children":["dataPath"]}},"@W":1306,"@H":41},"@df":{"pointsFilter":{"@type":"dfcontent","mapToTable":{"@type":"mapToTable","input":["@parent.@data"],"!ps":["input","output"],"!x":72,"!y":38},"!df":true,"tableFilter":{"@type":"tableFilter","!ps":["input","condition","output"],"!x":335,"!y":41,"input":["@parent.@params.tablePoints"],"condition":["@parent.concat.output"]},"concat":{"@type":"concat","!ps":["0","1","2","3","strict","output"],"!x":287,"!y":174,"strict":true,"@array":["ObjectType == \"",["@parent.mapToTable.output.0_objectType"],"\" && ObjectInstance ==",["@parent.mapToTable.output.0_instanceNumber"]]},"@params":{"!var":[{"n":"tablePoints","t":"tabledata"},{"n":"result","t":"tabledata","isOutput":true}],"result":["@parent.tableFilter.output"]}}}},"@ver":10271} \ No newline at end of file diff --git a/cadMyDC/pages/schedule.dg5 b/cadMyDC/pages/schedule.dg5 new file mode 100644 index 0000000..6621877 --- /dev/null +++ b/cadMyDC/pages/schedule.dg5 @@ -0,0 +1 @@ +{"@type":"group","width":"100%","height":"100%","clipContent":true,"WidgetSchedules":{"@type":"jswidget","height":"100%","js":"lib/dcUtilities/widget.js#WidgetSchedules@DistechControls","width":"100%","background":{"@type":"fill"},"shadows":{"@type":"shadows","@array":[{"type":"dropShadow","color":0,"alpha":0.1,"x":0,"y":2,"blur":8}]},"!label":"Schedules"},"@array":[["WidgetSchedules"]],"@ver":10094} \ No newline at end of file diff --git a/cadMyDC/pages/showData.dg5 b/cadMyDC/pages/showData.dg5 new file mode 100644 index 0000000..58f4a03 --- /dev/null +++ b/cadMyDC/pages/showData.dg5 @@ -0,0 +1 @@ +{"@type":"group","Group":{"@type":"group","symbol":"dataBoxRow","renderer":{"map":{"dataPath":["@parent.@data.path"]}},"Analog_Input":{"@type":"getChildren","path":["@parent.@parent.@params.dataPath"],"autoRun":true,"!ps":["path","output","error"],"!x":335,"!y":100},"data":["Analog_Input.output"],"!df":true,"layout":"vertical","alignItems":"flex-start","width":"100.0%","@array":[]},"width":"100%","height":"100%","clipContent":true,"layout":"absolute","alignItems":"flex-start","vScroll":"auto","symbol":"","renderer":{"map":{"dataPath":""}},"@array":[["Group"]],"@params":{"!var":[{"n":"dataPath","t":"nodepath"}],"!layout":{"type":"vbox","children":["dataPath"]},"dataPath":"/Data/Local+Device/Analog+Input"},"@symbols":{"dataBoxRow":{"@type":"group","WidgetDataBox":{"@type":"jswidget","height":"100%","js":"lib/dcUtilities/widget.js#WidgetDataBox@DistechControls","width":"100%","background":{"@type":"fill"},"shadows":{"@type":"shadows","@array":[{"type":"dropShadow","color":0,"alpha":0.1,"x":0,"y":2,"blur":8}]},"!label":"Databox","showHeader":false,"allowResize":"horizontal","nodeList":["bind!nodeList.output"],"bind!nodeList":{"@type":"propMapBinding","!ps":["output"],"@array":[{"@type":"propMapItem","path":["@parent.@parent.@parent.@params.dataPath"],"dg!getNode":{"@type":"getNode","service":["@parent.service"],"path":["@parent.path"]},"dg!Time":1706521306,"!ps":["path"],"@params":{"!var":[{"n":"label","t":"string","isOutput":true},{"n":"numberFormat","t":"string","isOutput":true},{"n":"showPriority","t":"bool","isOutput":true},{"n":"showUnits","t":"bool","isOutput":true},{"n":"showPriorityParameter","t":"bool","isOutput":true},{"n":"showTrends","t":"bool","isOutput":true},{"n":"bindingRefreshRate","t":"number","isOutput":true},{"n":"inlineActions","t":"bool","isOutput":true},{"n":"showActions","t":"bool","isOutput":true},{"n":"actions","t":"multiselectEnum","isOutput":true}],"label":["@parent.dg!getNode.name"]}}]},"!df":true},"width":"100.0%","height":41,"clipContent":true,"scaleContent":"none","layout":"absolute","creationPolicy":"onDisplay","@array":[["WidgetDataBox"]],"@params":{"!reuse":true,"!var":[{"n":"dataPath","t":"string"}],"!layout":{"type":"vbox","children":["dataPath"]}},"@W":1306,"@H":41}},"@ver":10094} \ No newline at end of file diff --git a/cadMyDC/pages/trend.dg5 b/cadMyDC/pages/trend.dg5 new file mode 100644 index 0000000..bb8760c --- /dev/null +++ b/cadMyDC/pages/trend.dg5 @@ -0,0 +1 @@ +{"@type":"group","WidgetTrendBuilder":{"@type":"jswidget","height":"100%","js":"lib/dcUtilities/widget.js#WidgetTrendBuilder@DistechControls","width":"100%","background":{"@type":"fill"},"shadows":{"@type":"shadows","@array":[{"type":"dropShadow","color":0,"alpha":0.1,"x":0,"y":2,"blur":8}]},"!label":"Trend Builder","allTrends":true},"width":"100%","height":"100%","clipContent":true,"@array":[["WidgetTrendBuilder"]],"@ver":9959} \ No newline at end of file