Challenge Overview
Challenge Objectives
App environment:
- Meteor Javascript application: https://www.meteor.com/
Basic requirements for this challenge:
- Continue update desktop native app with Meteor Javascript as the main framework
- This project use meteor desktop (https://github.com/wojtkowiak/meteor-desktop) to build desktop app, meteor desktop grab meteor's build result for mobile, and wrapped it with electron.
- Fix some pages based on updated storyboard
- Pay attention to small details on each page, read instructions below
Thor PDU Mass Commissioning - Overview
A PDU (Power Distribution Unit) is a device fitted with multiple outputs designed to distribute electric power, especially to racks of computers and networking equipment located within a data center. The PDU Mass Commissioning tool that we are designing will allow users to create configuration files and networking capabilities for PDUs in a system. The app will allow for the necessary configuration parameters needed for operation within the system. Once all of the configuration parameters have been set within the app, users will be able to "export" the files to a USB drive, which will be plugged into the PDUs to be commissioned.
The PDU Mass Commissioning tool will be a simple user interface that allows customers to create all of the necessary configuration files to configure all of their PDUs. The app will have a variable number of input fields for all the configuration parameters in which users will enter their desired configurations. Once they have entered all of the configuration parameters they will click "export" and the application will build the configuration file hierarchy into a chosen USB drive.
Technology Stack
- Meteor Javascript
- Angular Meteor Integration
- Meteor desktop (https://github.com/wojtkowiak/meteor-desktop)
Deployment environment requirements
- Your submission need build as desktop native app that will working on these required OS:
- Windows
- Mac OS
- Linux
Base of App Updates:
https://gitlab.com/thor-pducomm/meteor-app > Use dev branch
Check README.md to help you set up the app. Let us know if you have some questions..
About PDU Mass Commissioning App
- PDUs (Power Distribution Units) equipment have several parameters which need to be configured before the first use
- The Mass commissioning application to be developed aims at expediting the commissioning process in case of large amounts of PDUs to be configured (from 20 to several hundreds of units)
- Targeted audience: industrial users
Basic process flow
- The user defines the value of the configuration parameters he wants to apply to the PDU in the PDU mass deployment Software tool (to be developed during the Topcoder challenge)
- The different parameters are exported to a standard USB key in the form of pre-defined configuration files (the files naming convention and file hierarchy must be respected)
- The user plugs the USB flash drive into the PDU(s) to be commissioned
- The PDU automatically detects the correctly formatted USB flash drive and reconfigures itself with settings found on the USB flash drive
- Check this Business Process Screen to understand the expected flow: https://drive.google.com/open?id=123Dwqto2paFbXWUjVgfHEDYpexBSAqTI
Submission Requirements
Current application use Date Model JSON Schema when build the layout. You can check the code here: https://gitlab.com/thor-pducomm/meteor-app/blob/dev/client/imports/Data-model-descriptor.json
Design Source Files
https://drive.google.com/open?id=1hlXH5M_5APHz43PJWghe40kBN0HfAZgN
Design Source created on Adobe XD, Get Free download from here: https://www.adobe.com/sea/products/xd.html
MarvelApp flow: https://marvelapp.com/7761ed1
Current Web Deployment
https://thor-pdu-comm.herokuapp.com/
Individual Requirements
1). Overview Update
Screen: Screenshot: 00 Overview@2x.png
- Add new ‘Start from existing CSV’ button below the General Setting button
- This button Import a pre-existing CSV template file (either manually generated or saved by the application during a previous session thanks to the ”Save Changes” button in the UI). This import is currently missing in the prototype and needs to be implemented.
- Click Start from existing button need load the modal window (Screenshot: 01 Overview - Popup@2x.png)
- User can select New file and existing file tab
- Click Browse button need allow user to select the CSV file
- Re-use existing progress bar inside the modal window on General Settings > Expert mode
2). Asset Management improvement
Screenshot: 03 Asset Management_Basic@2x.png
- Update Asset Management page based on storyboard
- There’s new button for Add Device and Data Entry Wizard
- So, the new list of asset identification parameters are:
- BASIC MODE: Rack, Row, Feed, MAC, SN, IP address, Note, Last modified. (Screenshot: 03 Asset Management_Basic@2x.png)
- EXPERT MODE: Rack, Row, Feed, MAC, SN, PDU Type, IP address, Note, Last modified. (Screenshot: 04 Asset Management_Expert@2x.png)
- Feed column will contain information will be used by the user to distinguish 2 devices located in the same rack and row. Please note that this free field also corresponds to a parameter in the data model (Power/Environment→Power ePDU→Feed name)
- We need to add a “Last modified” column which details when the row (=the device) was last modified
- We need to add a “Note” column which is a free text editable field used by the user to store some comments/notes
- Add a sorting option for each column of the wizard in both sorting directions (ascending/descending)
- Add display per page and pagination to table on Asset Management page
- Update table font size on Export and After Commissioning to follow table style on Asset Management
- We need make the left sidebar collapsed (Screenshot: 05 Asset Management_Expert_Collapsed@2x.png)
- Left sidebar need able to collapse
- Check how the icon aligned on the left sidebar
3). Search Function Improvement
Screenshot: 06 Search@2x.png
- This is screen when user click Search button on header bar
- Click search button on header bar need replace title on top
- This will search Asset management table
- Type keyword then click search need load this screen (Screenshot: 07 Search Results@2x.png)
- This is when user click Advanced Search on the right side (Screenshot: 08 Advanced Search@2x.png)
- Need able to change dropdown to to some existing table column
- Need able to add field to specify each field
- The current search function in the wizard looks good but is limited to a few parameters only (the ones used for the basic asset identification such as MAC address, Serial number, etc…).
- We would like to have one more search option which applies to all the fields of the wizard.
- Also, we would like to implement a smarter search function using some Booleans (AND, OR) (for instance, searching all the devices having an IP address including 186.10 AND located in row 1)
6). Firmware Upgrade on selected devices
Screenshot: 09 Firmware Upgrade@2x.png
- A single or multiple firmware image versions can be selected in the General section. However, the current application prototype does not allow yet to assign a particular firmware version to a selected device or group of devices.
- This capability needs to be added in the “System settings” screen in the form of a scroll-down menu the user first selects a firmware image version and then decide to apply it to the selected device(s).
- As a result, this information will be used during the configuration files export process to associate the right firmware image version to the corresponding device thanks to the specific “Upgrade.txt” JSON text file:
The "Upgrade.txt" file is an optional JSON file.
It allows to force a firmware upgrade during the Mass commissioning.
The PDU has to parse the "Upgrade.txt" file to get the name of the binary upgrade file:
?
{
"version": "0001",
"filename": "Image_ePDUG3_FW_03_01_0002.bin"
}
7). Export sequence
Screenshot: 10 Export Steps@2x.png
- When exporting the XML configuration files on the USB flash drive, the drive needs to be erased first (we need to make sure to start from a blank media)
- The complete export sequence specification including the required security measures is detailed in below document: https://drive.google.com/open?id=1UwjgnH0J18tCG8CHmPTWCI45TLc17EzJ
8). Data Entry Wizard
Screenshot: 11 Data Entry Wizard@2x.png
- User click Data Entry Wizard button then need load this screen
- On the right side user can add some parameters to generate the table
- Right now Device table load from external file when user open the app by default
- We need to have a “data entry mode” for the device table, where a user could do something like this:
1) Define and generate a number of rows in the table
2) Manually populate the row, rack, and feed by navigating with up/down arrows.
3) Go into data entry mode where the user can enter one serial number or MAC address at a time simply going down the table and pressing enter after one serial number or MAC address will go to the next device and be ready to enter the serial number or MAC. This would be compatible with someone using a barcode reader to scan the data on one PDU after another, according to the row/rack/feed that is already populated in the table.
- Note: By default, selecting a cell in the wizard should lead to the complete selection of the cell
Wizard Clone function
- A basic “clone” function is needed in the wizard to be able to clone a row and its associated parameters.
- The only parameters which DO NOT need to be cloned are SN and MAC fields in order to make sure each device/row stays unique.
PDU Type
- If the EXPERT mode is selected, the default wizard content includes the PDU type information column.
- 4 different choices are possible for the PDU type information: MI/IL, MO, SW, MA
- The implementation of a scroll-down menu to select any of these types is requested
- This PDU type information will be used in the expert mode to select only the relevant parameters that we want to be available to the user (this dependency is detailed in the JSON data model that we provide)
Wizard columns: Hide/Show
We would like to implement a Hide/Show function for the columns of the device asset table (for instance, if the user only uses the MAC address to identify its devices, he could save some space by hiding the SN column)
Screenshot: 16 Multiple Outlets management@2x.png
9). After Commissioning Update
- On this screen, we need remove some element:
- Remove Export to USB button
- Remove Configuration file button
- Then, the app also needs to propose to open the Log.csv file present on the key with any of the viewer available on the OS
- IMPORTANT: for safety reasons, the app needs to propose to erase the USB drive content. How the message look. Screenshot: 12 After Commissioning@2x.png
- When the Mass Configuration finishes, the PDU writes the result of the process in this file.
For example, after parsing 3 ePDUs the result could be like on screenshot
- This screen show up after the warning modal window: Screenshot: 13 After Commissioning – Logfile@2x.png
- There are option to select Restore Old Config and delete button (Screenshot: 14 After Commissioning – Options@2x.png)
- This when expand the right sidebar: - Screenshot: 16 Multiple Outlets management@2x.png
- We need make ability to expand and collapse left and right sidebar
10). Application Library Style Update
Our application need optimize the usage of these libraries:
PX Blue Themes
- GitHub: https://github.com/pxblue/themes
PX Blue Colors
- GitHub: https://github.com/pxblue/colors
PX Blue Icons / Icon Font
- GitHub: https://github.com/pxblue/icons
11). General UI Updates
- Abbreviate the following menu items: ’System’ instead of ‘System settings’, ‘Network‘ instead of ‘Network infrastructure’
- Home icon should be filled, material design theme
- On the right side of Asset Management, when the wizard is collapsed, it is requested to have only one category and one field per line
- To decrease the complexity of the project, we have decided to remove the “Branch circuit” and “Outlets” from the Data model
- This is for development, all content on the right sidebar need collapsed by default
- In view of anticipating the future monetization of the application, it is requested to implement an internal persistent variable which counts the number of devices to be configured.
- This counter will be later used in combination with a manual license activation to monetize the application based on the number of devices to be commissioned.
12). Icon and Splash screen
Icon: Icons@2x.png
Splash Screen: Splash Screen@2x.png
- This icon need show up when launching as desktop native app
- Show progress bar to load all the application assets
- Follow the animation about the gear (not with the holes) rotating on screen.
- All source code that implement the challenge requirements.
- Challenge winner need send Merge Request to our repo
- README in markup language
App environment:
- Meteor Javascript application: https://www.meteor.com/
Basic requirements for this challenge:
- Continue update desktop native app with Meteor Javascript as the main framework
- This project use meteor desktop (https://github.com/wojtkowiak/meteor-desktop) to build desktop app, meteor desktop grab meteor's build result for mobile, and wrapped it with electron.
- Fix some pages based on updated storyboard
- Pay attention to small details on each page, read instructions below
Thor PDU Mass Commissioning - Overview
A PDU (Power Distribution Unit) is a device fitted with multiple outputs designed to distribute electric power, especially to racks of computers and networking equipment located within a data center. The PDU Mass Commissioning tool that we are designing will allow users to create configuration files and networking capabilities for PDUs in a system. The app will allow for the necessary configuration parameters needed for operation within the system. Once all of the configuration parameters have been set within the app, users will be able to "export" the files to a USB drive, which will be plugged into the PDUs to be commissioned.
The PDU Mass Commissioning tool will be a simple user interface that allows customers to create all of the necessary configuration files to configure all of their PDUs. The app will have a variable number of input fields for all the configuration parameters in which users will enter their desired configurations. Once they have entered all of the configuration parameters they will click "export" and the application will build the configuration file hierarchy into a chosen USB drive.
Technology Stack
- Meteor Javascript
- Angular Meteor Integration
- Meteor desktop (https://github.com/wojtkowiak/meteor-desktop)
Deployment environment requirements
- Your submission need build as desktop native app that will working on these required OS:
- Windows
- Mac OS
- Linux
Base of App Updates:
https://gitlab.com/thor-pducomm/meteor-app > Use dev branch
Check README.md to help you set up the app. Let us know if you have some questions..
About PDU Mass Commissioning App
- PDUs (Power Distribution Units) equipment have several parameters which need to be configured before the first use
- The Mass commissioning application to be developed aims at expediting the commissioning process in case of large amounts of PDUs to be configured (from 20 to several hundreds of units)
- Targeted audience: industrial users
Basic process flow
- The user defines the value of the configuration parameters he wants to apply to the PDU in the PDU mass deployment Software tool (to be developed during the Topcoder challenge)
- The different parameters are exported to a standard USB key in the form of pre-defined configuration files (the files naming convention and file hierarchy must be respected)
- The user plugs the USB flash drive into the PDU(s) to be commissioned
- The PDU automatically detects the correctly formatted USB flash drive and reconfigures itself with settings found on the USB flash drive
- Check this Business Process Screen to understand the expected flow: https://drive.google.com/open?id=123Dwqto2paFbXWUjVgfHEDYpexBSAqTI
Submission Requirements
Current application use Date Model JSON Schema when build the layout. You can check the code here: https://gitlab.com/thor-pducomm/meteor-app/blob/dev/client/imports/Data-model-descriptor.json
Design Source Files
https://drive.google.com/open?id=1hlXH5M_5APHz43PJWghe40kBN0HfAZgN
Design Source created on Adobe XD, Get Free download from here: https://www.adobe.com/sea/products/xd.html
MarvelApp flow: https://marvelapp.com/7761ed1
Current Web Deployment
https://thor-pdu-comm.herokuapp.com/
Individual Requirements
1). Overview Update
Screen: Screenshot: 00 Overview@2x.png
- Add new ‘Start from existing CSV’ button below the General Setting button
- This button Import a pre-existing CSV template file (either manually generated or saved by the application during a previous session thanks to the ”Save Changes” button in the UI). This import is currently missing in the prototype and needs to be implemented.
- Click Start from existing button need load the modal window (Screenshot: 01 Overview - Popup@2x.png)
- User can select New file and existing file tab
- Click Browse button need allow user to select the CSV file
- Re-use existing progress bar inside the modal window on General Settings > Expert mode
2). Asset Management improvement
Screenshot: 03 Asset Management_Basic@2x.png
- Update Asset Management page based on storyboard
- There’s new button for Add Device and Data Entry Wizard
- So, the new list of asset identification parameters are:
- BASIC MODE: Rack, Row, Feed, MAC, SN, IP address, Note, Last modified. (Screenshot: 03 Asset Management_Basic@2x.png)
- EXPERT MODE: Rack, Row, Feed, MAC, SN, PDU Type, IP address, Note, Last modified. (Screenshot: 04 Asset Management_Expert@2x.png)
- Feed column will contain information will be used by the user to distinguish 2 devices located in the same rack and row. Please note that this free field also corresponds to a parameter in the data model (Power/Environment→Power ePDU→Feed name)
- We need to add a “Last modified” column which details when the row (=the device) was last modified
- We need to add a “Note” column which is a free text editable field used by the user to store some comments/notes
- Add a sorting option for each column of the wizard in both sorting directions (ascending/descending)
- Add display per page and pagination to table on Asset Management page
- Update table font size on Export and After Commissioning to follow table style on Asset Management
- We need make the left sidebar collapsed (Screenshot: 05 Asset Management_Expert_Collapsed@2x.png)
- Left sidebar need able to collapse
- Check how the icon aligned on the left sidebar
3). Search Function Improvement
Screenshot: 06 Search@2x.png
- This is screen when user click Search button on header bar
- Click search button on header bar need replace title on top
- This will search Asset management table
- Type keyword then click search need load this screen (Screenshot: 07 Search Results@2x.png)
- This is when user click Advanced Search on the right side (Screenshot: 08 Advanced Search@2x.png)
- Need able to change dropdown to to some existing table column
- Need able to add field to specify each field
- The current search function in the wizard looks good but is limited to a few parameters only (the ones used for the basic asset identification such as MAC address, Serial number, etc…).
- We would like to have one more search option which applies to all the fields of the wizard.
- Also, we would like to implement a smarter search function using some Booleans (AND, OR) (for instance, searching all the devices having an IP address including 186.10 AND located in row 1)
6). Firmware Upgrade on selected devices
Screenshot: 09 Firmware Upgrade@2x.png
- A single or multiple firmware image versions can be selected in the General section. However, the current application prototype does not allow yet to assign a particular firmware version to a selected device or group of devices.
- This capability needs to be added in the “System settings” screen in the form of a scroll-down menu the user first selects a firmware image version and then decide to apply it to the selected device(s).
- As a result, this information will be used during the configuration files export process to associate the right firmware image version to the corresponding device thanks to the specific “Upgrade.txt” JSON text file:
The "Upgrade.txt" file is an optional JSON file.
It allows to force a firmware upgrade during the Mass commissioning.
The PDU has to parse the "Upgrade.txt" file to get the name of the binary upgrade file:
?
{
"version": "0001",
"filename": "Image_ePDUG3_FW_03_01_0002.bin"
}
7). Export sequence
Screenshot: 10 Export Steps@2x.png
- When exporting the XML configuration files on the USB flash drive, the drive needs to be erased first (we need to make sure to start from a blank media)
- The complete export sequence specification including the required security measures is detailed in below document: https://drive.google.com/open?id=1UwjgnH0J18tCG8CHmPTWCI45TLc17EzJ
8). Data Entry Wizard
Screenshot: 11 Data Entry Wizard@2x.png
- User click Data Entry Wizard button then need load this screen
- On the right side user can add some parameters to generate the table
- Right now Device table load from external file when user open the app by default
- We need to have a “data entry mode” for the device table, where a user could do something like this:
1) Define and generate a number of rows in the table
2) Manually populate the row, rack, and feed by navigating with up/down arrows.
3) Go into data entry mode where the user can enter one serial number or MAC address at a time simply going down the table and pressing enter after one serial number or MAC address will go to the next device and be ready to enter the serial number or MAC. This would be compatible with someone using a barcode reader to scan the data on one PDU after another, according to the row/rack/feed that is already populated in the table.
- Note: By default, selecting a cell in the wizard should lead to the complete selection of the cell
Wizard Clone function
- A basic “clone” function is needed in the wizard to be able to clone a row and its associated parameters.
- The only parameters which DO NOT need to be cloned are SN and MAC fields in order to make sure each device/row stays unique.
PDU Type
- If the EXPERT mode is selected, the default wizard content includes the PDU type information column.
- 4 different choices are possible for the PDU type information: MI/IL, MO, SW, MA
- The implementation of a scroll-down menu to select any of these types is requested
- This PDU type information will be used in the expert mode to select only the relevant parameters that we want to be available to the user (this dependency is detailed in the JSON data model that we provide)
Wizard columns: Hide/Show
We would like to implement a Hide/Show function for the columns of the device asset table (for instance, if the user only uses the MAC address to identify its devices, he could save some space by hiding the SN column)
Screenshot: 16 Multiple Outlets management@2x.png
9). After Commissioning Update
- On this screen, we need remove some element:
- Remove Export to USB button
- Remove Configuration file button
- Then, the app also needs to propose to open the Log.csv file present on the key with any of the viewer available on the OS
- IMPORTANT: for safety reasons, the app needs to propose to erase the USB drive content. How the message look. Screenshot: 12 After Commissioning@2x.png
- When the Mass Configuration finishes, the PDU writes the result of the process in this file.
For example, after parsing 3 ePDUs the result could be like on screenshot
- This screen show up after the warning modal window: Screenshot: 13 After Commissioning – Logfile@2x.png
- There are option to select Restore Old Config and delete button (Screenshot: 14 After Commissioning – Options@2x.png)
- This when expand the right sidebar: - Screenshot: 16 Multiple Outlets management@2x.png
- We need make ability to expand and collapse left and right sidebar
10). Application Library Style Update
Our application need optimize the usage of these libraries:
PX Blue Themes
- GitHub: https://github.com/pxblue/themes
PX Blue Colors
- GitHub: https://github.com/pxblue/colors
PX Blue Icons / Icon Font
- GitHub: https://github.com/pxblue/icons
11). General UI Updates
- Abbreviate the following menu items: ’System’ instead of ‘System settings’, ‘Network‘ instead of ‘Network infrastructure’
- Home icon should be filled, material design theme
- On the right side of Asset Management, when the wizard is collapsed, it is requested to have only one category and one field per line
- To decrease the complexity of the project, we have decided to remove the “Branch circuit” and “Outlets” from the Data model
- This is for development, all content on the right sidebar need collapsed by default
- In view of anticipating the future monetization of the application, it is requested to implement an internal persistent variable which counts the number of devices to be configured.
- This counter will be later used in combination with a manual license activation to monetize the application based on the number of devices to be commissioned.
12). Icon and Splash screen
Icon: Icons@2x.png
Splash Screen: Splash Screen@2x.png
- This icon need show up when launching as desktop native app
- Show progress bar to load all the application assets
- Follow the animation about the gear (not with the holes) rotating on screen.
Final Submission Guidelines
Deliverables- All source code that implement the challenge requirements.
- Challenge winner need send Merge Request to our repo
- README in markup language