{"id":13769917,"url":"https://github.com/ni/systemlink-web-interface-template","last_synced_at":"2025-08-17T07:05:14.052Z","repository":{"id":45061659,"uuid":"156292103","full_name":"ni/systemlink-web-interface-template","owner":"ni","description":null,"archived":false,"fork":false,"pushed_at":"2022-01-26T20:05:19.000Z","size":114,"stargazers_count":8,"open_issues_count":0,"forks_count":11,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-06-02T01:18:49.748Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ni.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-05T22:30:42.000Z","updated_at":"2024-08-19T05:54:17.000Z","dependencies_parsed_at":"2022-08-26T10:51:41.076Z","dependency_job_id":null,"html_url":"https://github.com/ni/systemlink-web-interface-template","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ni/systemlink-web-interface-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ni%2Fsystemlink-web-interface-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ni%2Fsystemlink-web-interface-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ni%2Fsystemlink-web-interface-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ni%2Fsystemlink-web-interface-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ni","download_url":"https://codeload.github.com/ni/systemlink-web-interface-template/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ni%2Fsystemlink-web-interface-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270816639,"owners_count":24650850,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T17:00:32.727Z","updated_at":"2025-08-17T07:05:14.023Z","avatar_url":"https://github.com/ni.png","language":"HTML","funding_links":[],"categories":["Documentation"],"sub_categories":["Examples"],"readme":"# SystemLink Web Interface Template\n\n## Installing a Plugin Built in G Web Development Software\n\nThis repository contains a project created in G Web Development Software preconfigured to build a NIPKG that can be used to install a built WebVI application onto a SystemLink Server. The following instructions provide steps to install the NIPKG onto a SystemLink server in the same manner that SystemLink server installs NIPKGs onto remote Windows and Linux Real-Time targets.\n\n**Note:** After installing an NIPKG built with G Web Development Software, the NI Web Server will need to be restarted for the changes to take effect.\n\n### Configuring the SystemLink server for self deployment\n\n* Log into Windows on the SystemLink server machine\n* If not done already install the **NI SystemLink Client** onto the server using [NI Package Manager](https://www.ni.com/en-us/support/downloads/software-products/download.package-manager.html)\n* Open the **NI SystemLink Client** configuration utility\n* Under **Connection Status** select the **Connect to a SystemLink server** radio button\n* In the **Server hostname and IP address failover list** field enter `localhost`.\n* In a browser, navigate to the **Systems Manager** application in SystemLink\n* Go to **Pending Systems** and add the newly listed system (it will be using the server's hostname) as a managed system.\n\n### Building the G Web Development Software WebVI Application\n\n* Open `webvi-systemlink-plugin.gwebproject` in G Web Development Software.\n* Edit the WebVI in the project as you see fit.\n* See **Installing and Customizing the Plugin** in this readme for details for modifying the support files needed for SystemLink plugins.\n* Go to the WebApp.lvdist and click **Build Distribution**\n\n### Uploading and Installing Using Package Repository and Systems Manager\n\n* In a browser, navigate to the **Package Repository** application, and create a feed or reuse an existing feed.\n* In the details for the feed click the **Add** button under the **Packages** section.\n* Click **Upload Packages** and **Browse**\n* Navigate to and select the NIPKG built in G Web Development Software\n* Click **Close** and navigate to your SystemLink server as its listed under **Managed Systems** and the **Systems Manager** application\n* Go to **Software** and navigate to the **Feeds** tab.\n* If not already complete add the feed containing the NIPKG to the System\n* Go to the **Available** software tab and find the WebVI build application. This example project uses the display name *SystemLink WebVI Plugin*.\n* Select install from the dropdown button in the same row as the application.\n\n  **Note:** The NI Web Server will need to be restarted for the changes to take effect.\n\n* Upon successful install navigate back to the SystemLink landing page which lists all installed applications.\n* Under **Additional Applications** you should see an application named **Web VI**. Clicking on this icon will load the WebVI application created in G Web Development Software.\n\n## Creating a Generic SystemLink Web Application Plugin\n\nThe following instructions can be used to add any generic web application created with any framework as a SystemLink plugin. A working plugin template is included in the `Web Server` folder called `webapp_plugin`. You can modify this template or duplicate the plugin by modifying the following configuration files. E.g. If you needed to create a second plugin (`webapp_plugin2`), you could duplicate the `webapp_plugin` directory, and make the following changes.\n\n### Plugins in SystemLink 2021R1 and newer\n\nPlugins in SystemLink 2021R1 appear in a navigation tree on the left of the page instead of the original homepage. In the config.json file, there is a section called `navigationItems` that specifies how the plugin appears in the navigation tree. Each navigation item should specify a unique id, a title token, and a URL beginning with a hash. Optionally, you can specify a group id and order within that group.\n\n**Note:** The Name and Icon sections in this document only apply to plugins in earlier versions of SystemLink.\n\nTo change the name of the plugin in the navigation tree, change the `pluginTitle` value within the en.json file.\n\n`C:\\Program Files\\National Instruments\\Shared\\Web Server\\htdocs\\plugins\\webapp_plugin\\resources\\json\\locales\\en.json`\n\n```json\n{\n   \"webapp_plugin2\": {\n      \"pluginTitle\": \"Web Application for SystemLink 2021\"\n   }\n}\n```\n\nAnywhere in the config.json file that references `webapp_plugin.pluginTitle` will get your updated value: `titleToken` within `navigationItems` updates what appears in the navigation tree, `pageTitleToken` updates what is shown on the browser tab title, and `titleToken` updates what is shown in the top bar when the app is open.\n\n`C:\\Program Files\\National Instruments\\Shared\\Web Server\\htdocs\\plugins\\webapp_plugin\\config.json`\n\n```json\n{\n   \"authorizationMarker\": \"/plugins/webapp_plugin/resources/marker.txt\",\n   \"iframeSrc\": \"plugins/webapp_plugin/index.html\",\n   \"navigationItems\": [{\n      \"id\": \"webapp-plugin\",\n      \"groupId\": \"webapp-group\",\n      \"titleToken\": \"webapp_plugin.pluginTitle\",\n      \"url\": \"#webapp_plugin\"\n   }],\n   \"pageTitleToken\": \"webapp_plugin.pluginTitle\",\n   \"resources\": {\n      \"en\": {\n         \"css\": [\n            \"plugins/webapp_plugin/resources/css/webapp_plugin.css\"\n         ],\n         \"json\": [\n            \"plugins/webapp_plugin/resources/json/locales/en.json\"\n         ]\n      }\n   },\n   \"routeToken\": \"webapp_plugin\",\n   \"titleToken\": \"webapp_plugin.pluginTitle\"\n}\n```\n\n#### Groups\n\nPlugins can specify if they should appear within a group. Groups are defined in the `navigationGroups` directory within the SystemLink web server. To define a new group, create a subdirectory in `navigationGroups` and add a config.json file within that subdirectory.\n\n`C:\\Program Files\\National Instruments\\Shared\\Web Server\\htdocs\\navigationGroups\\webapp_group\\config.json`\n\n```json\n{\n    \"id\": \"webapp-group\",\n    \"iconClass\": \"fa fa-industry\",\n    \"order\": 10,\n    \"resources\": {\n        \"en\": {\n            \"json\": [\n                \"navigationGroups/webapp_group/resources/json/locales/en-US/webapp-group-common.json\"\n            ]\n        }\n    },\n    \"titleToken\": \"webapp.group.title\"\n}\n```\n\nTo add a plugin to the group, reference the group id in the plugin's config.json `navigationItems` section.\n\n`C:\\Program Files\\National Instruments\\Shared\\Web Server\\htdocs\\plugins\\webapp_plugin\\config.json`\n\n```json\n{\n   \"authorizationMarker\": \"/plugins/webapp_plugin/resources/marker.txt\",\n   \"iframeSrc\": \"plugins/webapp_plugin/index.html\",\n   \"navigationItems\": [{\n      \"id\": \"webapp-plugin\",\n      \"groupId\": \"webapp-group\",\n      \"titleToken\": \"webapp_plugin.pluginTitle\",\n      \"url\": \"#webapp_plugin\"\n   }],\n   \"pageTitleToken\": \"webapp_plugin.pluginTitle\",\n   \"resources\": {\n      \"en\": {\n         \"css\": [\n            \"plugins/webapp_plugin/resources/css/webapp_plugin.css\"\n         ],\n         \"json\": [\n            \"plugins/webapp_plugin/resources/json/locales/en.json\"\n         ]\n      }\n   },\n   \"routeToken\": \"webapp_plugin\",\n   \"titleToken\": \"webapp_plugin.pluginTitle\"\n}\n```\n\n### Name\n\nTo change the name of the plugin in the SystemLink homepage, change the `pluginTitle` value within the en.json file as well as a few values within the config.json file:\n\n`C:\\Program Files\\National Instruments\\Shared\\Web Server\\htdocs\\plugins\\webapp_plugin2\\resources\\json\\locales\\en.json`\n\n```json\n{\n   \"webapp_plugin2\": {\n      \"pluginTitle\": \"Web Application 2\"\n   }\n}\n```\n\n`C:\\Program Files\\National Instruments\\Shared\\Web Server\\htdocs\\plugins\\webapp_plugin2\\config.json`\n\n```json\n{\n   \"authorizationMarker\": \"/plugins/webapp_plugin2/resources/marker.txt\",\n   \"buttonIconCls\": \"fa fa-area-chart\",\n   \"buttonLabelToken\": \"webapp_plugin2.pluginTitle\",\n   \"buttonTooltipToken\": \"webapp_plugin2.pluginTitle\",\n   \"iframeSrc\": \"/plugins/webapp_plugin2/index.html\",\n   \"orderWeight\": 2,\n   \"permission\": \"\",\n   \"resources\": {\n      \"en\": {\n         \"css\": [\n            \"/plugins/webapp_plugin2/resources/css/webapp_plugin.css\"\n         ],\n         \"json\": [\n            \"/plugins/webapp_plugin2/resources/json/locales/en.json\"\n         ]\n      }\n   },\n   \"routeToken\": \"webapp_plugin2\",\n   \"titleToken\": \"webapp_plugin2.pluginTitle\",\n   \"waitUntilLaunched\": false\n}\n```\n\n### Access Control\n\nTo configure security/access control for all WebVIs in one place, modify the `C:\\Program Files\\National Instruments\\Shared\\Web Server\\conf\\conf.d\\52_webapp_plugin.conf` file, and duplicate the `\u003cDirectory\u003e` tag to specify any other plugins.\n\n ```apache\n\u003cDirectory htdocs/plugins/webapp_plugin\u003e\n    # Tell the privilege module to use webapp_plugin.htpriv\n    Use NIAuthnEnableBrowsers\n    Use NIAuthnRequirePrivilege webapp_plugin ViewResource\n\u003c/Directory\u003e\n\u003cDirectory htdocs/plugins/webapp_plugin2\u003e\n    # Tell the privilege module to use webapp_plugin.htpriv\n    Use NIAuthnEnableBrowsers\n    Use NIAuthnRequirePrivilege webapp_plugin ViewResource\n\u003c/Directory\u003e ​\n```\n\nTo change the name of the application shown in the NI Web Server Configuration utility, change the `\u003cdescription\u003e` tag within the `conf\\htpriv.d\\webapp_plugin.xml` file. E.g.\n\n```xml\n\u003cdescription xml:lang=\"en\"\u003eWeb Application\u003c/description\u003e\n```\n\n### Icon\n\nWe use font awesome \u003chttp://fontawesome.io/icons/\u003e by default for SWIF icons\n\n* Add the icon image file to `htdocs\\plugins\\webapp_plugin\\resources\\images`.\n* Modify `htdocs\\plugins\\webapp_plugin\\resources\\css\\webapp_plugin.css` to use the new icon.\n* Modify `htdocs\\plugins\\webapp_plugin\\config.json` to use the new icon class.\n\n### Copying the Plugin files to the Server\n\nCopy the `Web Server\\htdocs` and `Web Server\\conf` folders and files to your SystemLink web server (e.g. the NI Web Server)  `C:\\Program Files\\National Instruments\\Shared\\Web Server`.\n\n**Note:** This step is not necessary if you are using NI Packages and SystemLink feeds to install the application on the SystemLink Server. See **Installing a Plugin Built in G Web Development Software**.\n\n**Note:** The NI Web Server will need to be restarted for the changes to take effect.\n\n**Note:** The `navigationGroups` directory in `Web Server\\htdocs` is only applicable to SystemLink 2021R1 and newer.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fni%2Fsystemlink-web-interface-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fni%2Fsystemlink-web-interface-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fni%2Fsystemlink-web-interface-template/lists"}