# DeviceOn/BI Portal RD Test scenario 2021/04~2021/06
---
###### tags: `DeviceOnBI`
## 2021/06/28
### Alice
#### feature/panel-grid-item-active
**Purpose**
1. [SRPDashboard][fix] fix multiple clicks to active on the same panel multiple times & fix cause no data.targets, "cannot read property 'map' of undefined" error
**Test**
1. test for SRP Dashboard
- [x] add blank -> add multiple panels -> change active or click same grid item -> check if function run
- [x] edit dashboard -> change active or click same grid item -> check if function run
- [x] add blank -> add multiple panels -> change active -> check no data.targets error
## 2021/06/25
### Tingwei
#### [Change]When edition === 'azure-aks' , profile uses profile server.
**Purpose**
1. [Change]When edition === 'azure-aks' , profile uses profile server.
2. [Change]Rename "profileServerAPIOnPremises" to "profileServerAPI"
2. [Change]Rename "profileLibraryAPI" to "profileProxyAPI"
**Test**
1. test
- [x] localhost works
- Azure needs to deploy
## 2021/06/24
### Tingwei
#### [Fix][SRPDashboard][Grouped Bar Chart] Old version "timeinterval" of targets is uppercase. Which causes showing error in BI. Fix it by toLowerCase().
**Purpose**
1. [Fix][SRPDashboard][Grouped Bar Chart] Old version "timeinterval" of targets is uppercase. Which causes showing error in BI. Fix it by toLowerCase().
2. [Change][SRPDashboard] To avoid misunderstanding, change timeinterval of default target JSON from "Hour" to "min" in Grouped Bar Chart, Log Chart, Graph.
3. [Change][SRPDashboard] To avoid misunderstanding, in Water Statistic, change timeinterval of default target JSON from "Hour" to "select time interval" which is the same as the default panel template.
**Test**
1. test
- [x] New from Template -> choose 3.1 Inflow Pumping station -> click Grouped Bar Chart -> check whether X axis shows Hour and there is no error in Console
- [x] Log chart works fine
- [x] Grach works fine
- [x] Water Statistic works fine
## 2021/06/23
### Tingwei
#### [SRPDashboard][Path] Integrating new data source, etc
**Purpose**
1. [SRPDashboard][Path] Integrating new data source
1. [Fix][SRPDashboard]Changing correct data source query from "org to object to parameter" in Grafana is available (mapping org. by object nameLangId)
**Test**
1. test
- [x] change an object name which was bound in a dashboard -> refresh page -> edit the dashboard -> check whether path name is correct
- [x] edit a dashboard in Grafana -> edit a group bar chart -> change datasource object -> save in Grafana -> check whether path name is correct
## 2021/06/22
### Tingwei
#### [SRPDashboard][SaaS Composer] Integrating new data source.
**Purpose**
1. [SRPDashboard][SaaS Composer] Integrating new data source.
**Test**
1. test new from Blank and save
- [x] New from Blank -> add a Switch Panel and a SaaS Composer -> add a display without object -> save the display
- [x] add a display with groups and an object -> save the display
- [x] -> save the dashboard
2. test new from Template and save
- [x] New from Template -> add a Switch Panel and a SaaS Composer -> add a display without object -> save the display
- [x] add a display with groups and an object -> save the display
- [x] -> save the dashboard
3. test editing the dashboard which we just created
- [x] -> edit the dashboard which we just created -> edit a display and make groups changing -> save the display
- [x] -> edit a display and make object changing -> save the display
- [x] -> delete a display
- [x] save this dashboard
4. test editing the old version dashboard which contains a SaaS Composer
- [x] -> edit a display and make groups changing -> save the display
- [x] -> edit a display and make object changing -> save the display
- [x] -> delete a display
5. saving in BI and test in Grafana
- [x] -> change group -> check display changing
- [x] -> select group and object -> check display changing
- changing variables in Grafana has some problems
6. test select group and object UI changing in BI
- [x] -> edit a display -> select groups and object -> change a group to **"select group"** -> check whether children groups and object are reset
## 2021/06/21
### Alice
#### feature/srp-shortcut-key-detect
**Purpose**
1. [SRPDashboard] shortcut key detect fix
2. [SRPDashboard] add shortcutFlag, clear panel focus and activeIndex
**Test**
1. test for SRP Dashboard
- [x] mac/windows -> new blank -> add panel -> ctrl + v/delete shortcut key test -> click right aria -> ctrl + v/delete shortcut key test -> click panel -> ctrl + v/delete shortcut key test -> click grid that the part except panel item -> check panel item active & panel setting hide
- [x] windows -> edit dashboard -> ctrl + v (no click panel)-> check panel duplicate correctly
- [x] mac -> edit dashboard -> ctrl + v (no click panel)-> check panel duplicate correctly
- [x] windows -> edit dashboard -> `Delete`/`Backspace` -> check panel duplicate correctly
- [x] mac -> edit dashboard -> `Backspace` -> check panel duplicate correctly
## 2021/06/18
### Tingwei
#### [Group] [Object] Fine-tune dialog style
**Purpose**
1. [Group] [Object] Fixed dialog header and dialog footer when dialog height > min-height 690px
2. [Group] [Object] Fine-tune layout and style of the main dialog and its items
**Test**
1. test org in mac & windows
- [x] edit a root org -> check header and footer
- [x] -> check all fields in Basic Information of main dialog
- [x] -> click Notification -> check all fields in Basic Information
- [x] -> click Inspection -> check all fields in Basic Information
2. test object in mac & windows
- [x] edit a object -> check header and footer
- [x] -> check all fields in the main dialog
## 2021/06/15
### Tingwei
#### [Fix][Group][Object] In dialogs, the footer uses localLang, body uses editLang, etc.
**Purpose**
1. [Fix][Group][Object] In dialogs, the footer uses localLang, body uses editLang.
2. [Fix][Group][Object] In dialogs, fine-tune style: fix padding of the parameter title bar, underline, toolbar, and parameter table, background color of the top half body, background color of input.
3. [Fix][Group][Object] In dialogs, change "Name" to "Display Name."
4. [Fix][Group] In dialogs, If lev is 1 or creating a root org., show Root Organization Information, otherwise, show Group Information.
5. [Fix][Group] In dialogs, translation was wrong when "Changing to not default lang -> click Notification -> click Basic Information," we found the lang tab is default lang, but the translation is the last lang we choose before.
**Test**
1. test 1 ~ 3
- [x] edit group -> change lang -> check parameter table title translation
- [x] -> check padding of the parameter title bar, underline, toolbar, and parameter table,
- [x] -> check background color of the top half body
- [x] -> check input background color
- [x] -> check "Display Name"
- [x] edit object -> change lang -> check parameter table title translation and footer button translation
- [x] -> check padding of the parameter title bar, underline, toolbar, and parameter table
- [x] -> check input background color
- [x] -> check "Display Name"
2. test 4
- [x] create root org -> check Root Organization Information
- [x] edit root org -> check Root Organization Information
- [x] create group -> check Group Information
- [x] edit group -> check Group Information
3. test 5
- [x] Changing to not default lang -> click Notification -> click Basic Information -> check lang
## 2021/06/11
### Tingwei
#### [Change] Pages which path starting from "/index" or "/home" use "defaultLang" as "localLang" and hide the language dropdown, etc.
**Purpose**
1. [Change] Pages which path starting from "/index" or "/home" use "defaultLang" as "localLang" and hide the language dropdown.
2. [Fix] In routeRedirect function, if from.path === target, next(false) to reject routing and showApp().
3. [Fix] In pageMobileDeviceList, "My Devices" translation key is wrong.
**Test**
1. test purpose 1
- [x] visit /index/organizationManagement -> check whether language dropdown hides
- [x] visit /home -> check whether language dropdown hides
- [x] -> change default language in account page -> check whether all translation changed
- [x] -> logout -> Signup page -> check check whether language dropdown shows -> change it to the another language
- [x] -> go back to /login -> login -> check whether the '/home' page is translated with account default language
- [x] /welcome page -> check check whether language dropdown shows and works
- [x] /mobile/device/deviceList -> check check whether language dropdown shows and works
2. test purpose 2
- [x] go to '/home' -> input '/welcome' in Url and press Enter -> check whether page shows in '/home'
3. test purpose 3
- [x] go to '/mobile/device/deviceList' -> change language
## 2021/06/09
### Tingwei
#### [Menu] Showing "No menu, yet" when the data loaded and there is no accessible data, etc.
**Purpose**
1. [Menu] Showing "No menu, yet" when the data loaded and there is no accessible data.
2. [Menu] Showing "No Search Results, yet." when there is keyword and accessible data.
3. [Menu] Set the position of clear button of search input vertical center.
4. [SRPDashboard] showing "No Dashboards, yet." when the data loaded and there is no accessible data.
5. [Devices] showing "No Devices, yet." when the data loaded and there is no accessible data.
**Test**
1. test purpose 1 in Menu Management. Check the belows test
- [x] visit menuManagement with a no accessible menu account -> check whether showing "No menu, yet." after the loading mask closed
- [x] -> input a mismatch menu keyword -> check whether showing "No menu, yet."
- [x] visit menuManagement with an having accessible menu account
2. test purpose 2 in Menu Management
- [x] -> input a mismatch menu keyword -> check whether showing "No Search Results, yet."
3. test purpose 3 in Menu Management
- [x] -> input a keyword -> check whether the position of clear button of search input is vertical center
4. test purpose 4 in Dashboards. Check the belows test
- [x] visit srpdashboard page with a no accessible dashboard account
- [x] visit srpdashboard page with having an accessible dashboard account
5. test purpose 5 in My Devices. Check the belows test
- [x] visit Devices page with a no device account
- [x] visit Monitor page with a no device account
- [x] visit Event page with a no device account
- [x] visit Firmware page with a no device account
- [x] visit Configure page with a no device account
- [x] visit Devices page with a having device account
- [x] visit Monitor page with a having device account
- [x] visit Event page with a having device account
- [x] visit Firmware page with a having device account
- [x] visit Configure page with a having device
#### [Fix][Profile] A profile is the last row of a slice of data, i.g., the 24th profile. When it was edited in the condition "a row which includes 24%(cards in a row) === 0", the next slice fetching request will not be asked. etc.
**Purpose**
1. [Fix][Profile] A profile is the last row of a slice of data, i.g., the 24th profile. When it was edited in the condition "a row which includes 24%(cards in a row) === 0", the next slice fetching request will not be asked.
2. [Fix][Profile] When we search a keyword, and then we edit a profile and change its name to a name that mismatches the keyword, after saving, the loading mask will not be close because the active id is not found in this search results.
**Test**
1. test purpose 1
- [x] modify the browser window to make sure a row contains 6 cards -> edit the 48th profile and save
2. test purpose 2
- [x] search "tingwei" -> edit any profile -> change its name to "xxx" -> save
## 2021/06/08
### Tingwei
#### [Profile] Support highlight, etc.
**Purpose**
1. [Profile] Support highlight
2. [Profile] Search support keyboard Enter
3. [Fix] Total profile count behind the Profile word sets the loaded list length mistakenly.
4. [Fix] Reset scroll to the top when submit searching.
**Test**
1. test purpose 1, check the belows test
- [x] add profile -> check whether scrolling to the highlight card and the search options are not changed.
- [x] edit profile -> check whether scrolling to the highlight card and the search options are not changed.
- [x] delete profile -> check whether the profile is deleted and the scrolling box stays in the current position.
- [x] (This test will fail if response status code is 500): search only one profile name -> edit the only one profile -> rename it to a mismatch keyword name -> save the profile -> because there is no more profile in the search result, check whether clear the keyword but the others are not reset
- [x] (This test will fail if response status code is 500): search only one profile name -> delete the only one profile -> because there is no more profile in the search result, check whether clear the keyword but the others are not reset
2. test purpose 2 & 4:
- [x] search only one profile name by inputting profile name and pressing **"enter"** -> check whether submit searching and scroll to the top
3. test purpose 3:
- [x] check profile total count
## 2021/06/07
### Alice
#### feature/menu-highlight
**Purpose**
1. [menuManagement][change] card highlight
2. [menuManagement][change] create heighlight
3. [menuManagement][change] test scroll for create
**Test**
1. create card -> save -> check scroll position -> check card highlight
2. select dropdown -> edit card -> save -> check scroll position -> check card highlight
3. select dropdown -> delete card
## 2021/06/03
### Alice
#### feature/outer-loading
**Purpose**
1. [pageInspection][change] outer loading
**Test**
1. test tab change -> show outer loading at inspection
#### feature/langsrc-key-change
**Purpose**
1. [forwardingDialog][change] error code key change
**Test**
1. This translation has not been added to the database and cannot be tested
## 2021/05/31
### Tingwei
#### [Update][Notification Group]Notification Group Dialog Discard Handler
**Purpose**
1. [Update][Notification Group]Notification group dialog supports discard handler
2. [Update][Notification Group]Notification group dialog supports Esc
**Test**
1. test purpose 1+2, events trigger by something changing
- [x] create -> change something -> esc
- [x] edit -> change something -> cancel
2. test purpose 1+2, events trigger by no changing, the discard dialog no needs to popup
- [x] create -> esc
- [x] edit -> cancel
- [x] create -> change something -> save
- [x] edit -> change something -> save
- [x] create -> click save -> press esc -> create -> check whether there is no error message
3. test purpose 1, changing fields check whether the discard dialog popups
- [x] name
- [x] description
- [x] Notification Type
- [x] Alarm Group
- [x] Alarm User Group
- [x] Message - keyin
- [x] Message - insert Variable
- [x] Message - insert Others...
- [x] Message - paste by mouse right dropdown
- [x] Message - paste by ctrl + v
### Alice
#### feature/auth-delete-error
**Purpose**
1. [auth][add] binding rule list error code and dependents rule list
2. [auth][add] connect api and get the error data
**Test**
1. test for forwarding page
- [x] add a auth -> add rule -> use the auth just added -> save -> delete the auth & check the list was shown correct info
#### feature/auth-delete-error
**Purpose**
1. [forwardingDialog] show error code & hasError timing
**Test**
1. test for forwarding dialog
- [x] enter exist name -> show error code & message
- [x] hide error tips when save has no valid error
## 2021/05/28
### Tingwei
#### [Update][Menu Management] Menu dialog discard handler, etc.
**Purpose**
1. [Update][Menu Management] Menu dialog discard handler
2. [Fix] menuSelectDialog vertical middle
3. [Fix][Menu Management] Correct "DELETE" to "Delete" in more dropdown of the menu tree
4. [Fix][Menu Management][SRPDashboard] "New From Template" dialog title language key does not use "new_from_template", but uses "select_dashboard" mistakenly. "select_dashboard" is already used in menuSelectDialog.vue in menu dialog. Unfortunately, somebody translated "select_dashboard" to "New From Template" when the "New From Template" project changed the dialog title from "Select Dashboard" to "New From Template" a long time ago.
**Test**
1. test purpose 1, events trigger by something changing
- [x] create -> change something -> esc
- [x] edit -> change something -> cancel
2. test purpose 1, events trigger by no changing, the discard dialog no needs to popup
- [x] create -> esc
- [x] edit -> cancel
- [x] create -> change something -> save
- [x] edit -> change something -> save
3. test purpose 1, changing fields check whether the discard dialog popups
- [x] upload image
- [x] delete image
- [x] org name
- [x] menu title
- [x] menu name
- [x] availability
- [x] Focal Point - title
- [x] Focal Point - URL (keyin)
- [x] Focal Point - URL (select dialog)
- [x] Management Scorecard - title
- [x] Management Scorecard -URL (keyin)
- [x] Management Scorecard -URL (select dialog)
- [x] Site Menu - click "Sync"
- [x] Site Menu - set as Homepage
- [x] Site Menu - move up
- [x] Site Menu - move down
- [x] Site Menu - Promote
- [x] Site Menu - Demote
- [x] Site Menu - Delete
- [x] Site Menu - Page Name
- [x] Site Menu - Page URL (keyin)
- [x] Site Menu - Page URL (select dialog)
- [x] Site Menu - drap & drop success
- [x] Menu Display Language
4. test purpose 2
- [x] click button on the right side of URL input -> chech select dashboard dialog
5. test purpose 3
- [x] Check whether "DELETE" is corrected to "Delete" in the more dropdown of the menu tree
6. test purpose 4
- [x] go to SRPDashboard page -> "new from template" -> check "new from template" dialog title
- [x] check ["select_dashboard" translation](https://docs.google.com/spreadsheets/d/11nZyjyBx9ewp7I964hN1H492V0q9Hyo0EGo8Oa_ucCA/edit#gid=1106240201)
## 2021/05/27
### Tingwei
#### [Loading] Change animation to clockwise
**Purpose**
1. [Loading] Change animation to clockwise
**Test**
1. check loading
- [x] full-screen loading
- [x] small loading
## 2021/05/26
### Tingwei
#### [Update][Device] EdgeLink & SCADA dialog supports Discard Handler.
**Purpose**
1. [Update][Device] EdgeLink & SCADA dialog supports Discard Handler.
**Test**
1. events trigger by something changing
- [x] create -> change something -> esc
- [x] edit -> change something -> cancel
2. events trigger by no changing, the discard dialog no needs to popup
- [x] create -> esc
- [x] edit -> cancel
- [x] create -> change something -> save
- [x] edit -> change something -> save
3. changing fields check whether the discard dialog popup
- [x] upload image
- [x] delete image
- [x] name
- [x] description
## 2021/05/25
### Tingwei
#### [Update][Profile] Discard handler
**Purpose**
1. [Update][Profile] Discard handler
2. [Fix][Loading] Loading animation counter-clockwise.
3. [Fix]Full-screen Loading opacity.
**Test**
1. events trigger by something changing
- [x] create -> change something -> esc
- [x] edit -> change something -> cancel
- [x] upload profile excel-> change something -> cancel
- [x] create from device -> select some tags -> next -> change something -> prev
2. events trigger by no changing, the discard dialog no needs to popup
- [x] create -> esc
- [x] edit -> cancel
- [x] upload profile excel -> cancel
- [x] create from device -> select some tags -> next -> cancel
- [x] create -> change something -> save
- [x] edit -> change something -> save
3. changing fields check whether the discard dialog popup
- [x] upload image
- [x] delete image
- [x] name
- [x] description
- [x] block type
- [x] select a category
- [x] create a category
- [x] delete a category
- [x] upload alarm code excel
- [x] delete alarm code excel
- [x] availability
- [x] change share code
- [x] click `Use suggested code`
- [x] saving parameter successfully
- [x] delete parameter
4. check small loading animation
5. check full-screen loading animation
## 2021/05/24
### Tingwei
#### [Change][Loading] New loading style
**Purpose**
1. [Change][Loading] New loading style
**Test**
1. test 1
- [x] check full screen loading
## 2021/5/19
### Tingwei
[Fix][Profile] maxChangeRatePerMin default is 100, etc.
**Purpose**
1. [Fix][Profile][Create from Device] maxChangeRatePerMin default is 100, etc.
2. [Fix][Profile][Create from Device] "SAVE" button is not disabled at step 1.
**Test**
1. test 1 & 2
- [x] create from device in profileManagement -> check whether "SAVE" button is disabled
- [x] -> select "ITsungWaterPC -> Pump1" -> copy to the right list -> next -> check whether "SAVE" button is not disabled
- [x] -> edit "FlowIn" -> check whether maxChangeRatePerMin is 100
- [x] -> save this profile -> edit it again -> check whether "SAVE" button is not disabled
- [x] create new profile -> check whether "SAVE" button is not disabled
## 2021/5/18
### Tingwei
#### [Fix] device is not disabled when its block is disabled( another block is selected ), etc.
**Purpose**
1. [Fix] device is not disabled when its block is disabled( another block is selected ).
2. [Fix][selectParameterDialog] Fix parameter icon
**Test**
1. test 1
- [x] -> select "ITsungWaterPC -> Pump1" -> check whether "Tingwei-PC" is disabled
- [x] copy "ITsungWaterPC -> Pump1" to right -> check whether "Tingwei-PC" is disabled
- [x] remove "ITsungWaterPC -> Pump1 -> Current" from the right list -> -> check whether "Tingwei-PC" is disabled and whether "ITsungWaterPC -> Pump1 -> Current" is not disabled
- [x] remove all "ITsungWaterPC -> Pump1" from the right list -> check whether "Tingwei-PC" is not disabled
2. test 2
- [x] check parameter icon of selectParameterDialog
## 2021/5/17
### Alice
#### feature/api-new-auth-type
**Purpose**
1. [ForwardingDialog][change] basicinfo auth filter fix and add new type
**Test**
1. test for forwardingDialog
- [x] open add API dialog -> check auth type is currect
- [x] open add MQTT dialog -> check auth type is currect
## 2021/5/14
### Tingwei
#### [Change][Profile] Change "Create rom Device" tree font-weight to "normal".
**Purpose**
1. Refer to the title
**Test**
1. test
- [x] profile create from device -> check font-weight in tree
## 2021/5/13
### Tingwei
#### [Fix] Fix device tags are disabled mistakenlly when the device is disabled.
**Purpose**
1. Refer to the title
**Test**
1. test selecting from left to right or selecting from right to left
- [x] -> select a tag in block in the left side list -> check whether unselected to right tags of Devices are not disabled
- [x] -> select a tag in block in the left side list -> check whether tags of the other blocks are disabled
- [x] -> select a block in the left side list -> copy to right -> check whether tags of the other blocks are disabled in the left side list
- [x] -> select a block in the left side list -> copy to right -> check whether unselected to right tags of Devices are not disabled
- [x] select a device in the right side list -> copy to right -> check whether unselected to right tags of Devices are not disabled
## 2021/5/12
### Alice
#### feature/forwarding-dialog
**Purpose**
1. [pageForwarding][change] change the search placeholder by clicking the tab
2. [forwardingDialog][change] filter optional authentication type by dialog content type
3. [pageForwarding][change] clear search input when add/edit/delete
4. [forwardingDialog][change] 1. subtitle error tips, 2. api url input position & width tweak, 3. queryBody default value
5. [forwardingDialog][add] api url format valid
6. [APIUrlComponent] [add] http rule valid & [fix] param trans problem
7. [forwardingDialog][change] improve the verification for blocking save
8. [forwardingDialog][change] regex fix => first word need to be http:// or https://
**Test**
1. test for pageForwarding
- [x] change tab -> placeholder change
- [x] add/edit/delete rule -> search input clear
2. test for forwardingDialog
- [x] open API/MQTT/SQL dialog -> check auth list has already been filter
- [x] save rule when it is not pass verification -> check the error above title
- [x] input a string other than a URL -> check input valid
- [x] add param -> delete first few characters -> blur -> check param key have been change -> delete last few characters -> check param key have been change
- [x] input URL without start with http:// or https:// -> save -> check error
### Tingwei
#### [Fix][Notification Group] Fix variable color is not correct, i.g., changing from "{Device Namea}" to "{Device Name}".
**Purpose**
1. Refer to the title
**Test**
1. test
- [x] "{Device Namea}" to "{Device Name}
- [x] "{Device Nam}" to "{Device Name}
- [x] "{Device Nae}" to "{Device Name}
- [x] "{evice Name}" to "{Device Name}
- [x] "Device Name}" to "{Device Name}
- [x] "{Device Name" to "{Device Name}
## 2021/5/11
### Tingwei
#### [Update][SRPDashboard] Add highlight style and go to the page which contains the highlight dashboard if it exists in the search result list.
**Purpose**
1. Add highlight style
2. go to the page which contains the highlight dashboard if it exists in the search result list.
3. After a dashboard is saved, "keyword", Sort By" and "Cards Per page" are not reset. Only in no search result condition, "keyword" will be reset.
**Test**
1. test
- [x] add dashboard named "z tingwei" at the first page -> chech whether set page to the page which "z tingwei" dashboard exist and "z tingwei" dashboard is highlighted.
- [x] edit dashboard which is not in the first page -> save -> chech whether the web stays in the page
- [x] edit "A" dashboard which is the last one of a page in "A tab" -> switch to "B Tab" -> create a dashboard its position is ahead of "A" dashboard in "B tab" -> switch to "A Tab" -> save "A" Dashboard -> chech whether set page to the page which "A" dashboard exist and "A" dashboard is highlighted.
- [x] delete a dashboard from more than one dashboard page -> chech whether the web stays in the page
- [x] delete a dashboard from the last page which contains only one dashboard -> chech whether the web stays in the page
- [x] search a dashboard which is only one in the search result -> delete the dashboard
- [x] search "zting" -> edit "ztingwei 4" and change its name to "z tingwei 4" -> save -> the web stays in "zting" result page
### [Change]Hide "Data Exchange"
**Purpose**
1. Refer to the title
**Test**
1. check
- [x] Home
- [x] nodepageBI tabs
## 2021/5/10
### Tingwei
#### [Update][jsonEditor] "no parameter" condition supports validation.
**Purpose**
1. [Update][jsonEditor] "no parameter" condition supports validation.
**Test**
1. test
- [x] no parameter(token body example): required (uncomment \<testJsonEditor\/\> in pagePlugin )
- [x] no parameter(token body example): json invalid (uncomment \<testJsonEditor\/\> in pagePlugin )
- [x] required (test in forwardingDialog)
- [x] invalid JSON (i.g., redundent comma mark, lack comma)
- [x] invalid: parameter key is not in ""
- [x] parameter key is in ""
- [x] parameter value is in ""
- [x] parameter value is not in ""
- [x] normal key and value
- [x] not required condition (test in Plugin or uncomment \<testJsonEditor\/\> in pagePlugin )
## 2021/5/7
### Alice
#### feature/forwarding-dialog
**Purpose**
1. [pageForwarding][fix] MQTT filter type fix
2. [pageForwarding][fix] 1. open MQTT, 2. query status & time 0 exception handle
3. [APIUrlEditor][fix] desc disappear
**Test**
1. test for MQTT
- [x] add MQTT rule -> save
- [x] edit MQTT rule -> save
- [x] delete MQTT rule at list
- [x] check/uncheck MQTT filter at list
2. test for list & dialog
- [x] enter characters in APIUrlEditor -> error & desc exist
- [x] add rule -> check query status & last query time is not 0
### Tingwei
#### [Update][jsonEditor] Add basic validation, etc.
**Purpose**
1. [Update][jsonEditor] Add basic validation
2. [Change] Integrate basic ace-editor css of jsonEditor and sqlEditor to ace-editor.scss
**Test**
1. test
- [x] required (test in forwardingDialog)
- [x] invalid JSON (i.g., redundent comma mark, lack comma)
- [x] invalid: parameter key is not in ""
- [x] parameter key is in ""
- [x] parameter value is in ""
- [x] parameter value is not in ""
- [x] normal key and value
- [x] not required condition (test in Plugin or uncomment \<testJsonEditor\/\> in pagePlugin )
## 2021/5/6
### Tingwei
#### [Fix] select a device, it has a block, but the others block are not disabled
**Purpose**
1. [Fix] select a device, it has a block, but the others block are not disabled
**Test**
1. test
- [x] create from device -> select \"Tingwei-PC\" directly -> check whether the other blocks are disabled
#### [Fix][SRPDashboard] Defect #24951, 在dashboard分頁,新增樣板儀表板,sava後,點預覽儀表板,在回來BI,點新增空白儀表板,會出現空白畫面.
**Purpose**
1. Refer to the title
**Test**
1. check whether the dialog is correct in below conditions
- [x] click the card "..." button -> create "new blank"
- [x] click the card "..." button -> create "new from template"
- [x] click the card "..." button -> create "new from existing"
- [x] create "new blank"
- [x] create "new from template"
- [x] create "new from existing"
- [x] edit a srpdashboard which was created by "new blank"
- [x] edit a srpdashboard which was created by "new from template"
- [x] edit a srpdashboard which was created by "new from existing"
#### [Update][jsonEditor] Extend "no param highlight".
**Purpose**
1. [Update][jsonEditor] Extend "no param highlight".
**Test**
1. test by uncomment \<testJsonEditor\/\> in pagePlugin.vue
- [x] check "token body example (no parameter)" in page plugin
## 2021/5/5
### Alice
#### feature/forwarding-dialog
**Purpose**
1. [Forwarding][change] add and change rule
2. [Home][change] activate plugin/forwarding app button
3. [Forwarding][change] forwarding dialog validate add
**Test Case**
1. test for forwarding dialog
- [x] name is required => 64 char
- [x] desc => 200 char
- [x] query frequency is required & need > 5 min and =< 1440 min
- [x] url is required => 512 char
- [x] body is required => length > 1
- [x] param valid => duplicate -> red, no datasource -> red
- [x] check param type before send,if type = null, key trans red
- [x] duplicate name
#### feature/210505-bug-fix
**Purpose**
- [menu, home, objectList][fix]
1. hide filter button
2. home app icon activate
3. multi-language translate change
**Test Case**
1. test for menu
-[x] check filter button hidden
2. test for home
-[x] check `archiving` button is activated
3. multi-language for object list (langresc)
### Tingwei
#### [Add][Profile] create profile from device, etc
**Purpose**
1. [Add][Profile] create profile from device
2. [Add][selectTagWithoutDialog] selectTagWithoutDialog.vue
3. [Add][ovalArrowStep] ovalArrowStep.vue
4. [Update][SearchDropdown] extend prepend slot
**Test**
1. test selecting from left to right or selecting from right to left
- [x] create from device -> select a device in the left side list -> copy to right
- [x] -> select a tag in block in the left side list -> check whether the other blocks are disabled -> copy to right
- [x] -> select a block in the left side list -> copy to right
- [x] select a device in the right side list -> copy to left
- [x] -> select a tag in block in the right side list -> copy to left
- [x] -> select a block in the right side list -> copy to left
- [x] all to right
- [x] -> all to left
2. test filter , search, pagination
- [x] left "Device/Block Name" filter
- [x] right "Device/Block Name" filter
- [x] middle filter
- [x] middle search
- [ ] pagination
3. next to add prodile, data
- [x] next
- [x] prev
- [x] auto fill block type
- [x] if block, shortName = parameter name
- [x] if parameter name is repeated && it is device tag -> parameter name add searialNo
- [x] if parameter name is repeated && it is block tag -> parameter name do not need to add searialNo
- [x] dataType: item.dataType % 10 =>
1:Number(瞬时值), (i.g., Current)
2:Discrete, (i.g., DigitalTest)
3:String, (i.g., AlmCode)
4:Number(累计值)
- [x] description
- [x] language.description : desc || ''
- [x] engUnit : unit || ''
- [x] language.engUnit : unit || ''
- [x] groupRec: "0",
- [x] recType: item.dataType % 10 === 4 ? 'Cumulative' : 'Current',
- [x] rectRate: '0'
- [x] dataKeptDays: 30
- [x] maxChangeRatePerMin: item.dataType % 10 === 4 ? 100 : 1
- [x] dataType === "Number", spanHi: !isNaN(+item.spanHi) ? (''+item.spanHi) : "999999999",
- [x] dataType === "Number", spanLo: !isNaN(+item.spanLo) ? (''+item.spanLo) : "-999999999",
- [x] dataType === "Number", decimalPrecision: !isNaN(+item.decimalPrecision) ? item.decimalPrecision : 2
- [x] dataType === "Discrete", descriptor: Object.keys(dictScope).length > 0 ? dictScope : {0: 0, 1: 1}
- [x] edit a parameter -> make some change -> save
- [x] use the profile to create object from profile -> select Pump1 -> save
## 2021/5/3
### Alice
#### feature/forwarding-dialog
**Purpose**
1. [pageForwarding][change] move the fetch rule from dialog to the page
2. [pageForwarding][change]
1. get the rule from store when show dialog
2. mark the param state before send
3. change method and add isEdit
3. [pageForwarding][change] add get and store the rule
4. [pageForwarding][change] add call list update emit
5. [Component][change] trim the api url (avoid the /n or other symbol)
6. [BITabs][change] add right/left border when tab was active
7. [pageForwarding][change] lastQueryTime timestamp trans
8. [pageForwarding][change] the dialog ruleId judge timing
9. [BITabs][change] height & hover color change
10. [pageForwarding][change] disabled dropdown option and type filter
11. [pageForwarding][add] query status icon
**Test Case**
1. test for forwarding list
- check "Is MQTT&SQL disabled", in the "Create" drop-down list and the "Filter" checkbox.
- [x] drop-down list
- [x] checkbox
- query status test (by fake data)
- [x] connectType = `API`, status = 200 ~ 299 => show green ✔
- [x] connectType = `MQTT` or `SQL`, status = `success` => show green ✔
- [x] connectType = `API`, status < 200 or status > 299 => show red ✘
- [x] connectType = `MQTT` or `SQL`, status = `failed` or other string => show red ✘
- last query time
- [x] show in yyyy-MM-dd hh:mm:ss format
2. test for forwarding dialog
- check method list
- [x] remove `GET` options
- [x] add `PATCH` options
- check APIUrlVariableInsertEditor component
- [x] api url no /r/n or other extra symbols when transferring out
- edit dialog
- [x] show existing data
- forwarding test and save
- [x] save -> update param mark
- [x] combine data -> test/save -> api response 200 -> edit -> check data existing
3. BI tabs
- for tabs style
- [x] change darker colors for tabs hover
- [x] add right and left border for active tabs
- [x] reduce the tab bar height
## 2021/4/27
### Tingwei
#### [Fix][jsonEditor][sqlEditor] Empty initial value and deleting all text do not $emit.
**Purpose**
1. [Fix][jsonEditor][sqlEditor] Empty initial value and deleting all text do not $emit.
**Test Case**
1. test 1, uncomment <testJsonEditor/> and <testSqlEditor/> in page Plugin , and check $emit
- [x] testJsonEditor : initial bodytestText value is undefined || null || ''
- [x] testJsonEditor : input and delete all test
- [x] testSqlEditor : initial bodytestText value is undefined || null || ''
- [x] testSqlEditor : input and delete all test
## 2021/4/23
### Tingwei
#### [Fix][jsonEditor]key path parses to 'xxx.' mistakenly when the json is a root array. '\[xxx\]' is correct, etc.
**Purpose**
1. [Fix][jsonEditor]key path parses to 'xxx.' mistakenly when the json is a root array. '\[xxx\]' is correct.
2. [Fix][ResizeHandler] customResizeHandler merging mainPageResizeHandler causes dirty Objet reference. Fix by mixins.
**Test Case**
1. test 1, uncomment <testJsonEditor/> in page Plugin and click some key
- [x] [0].a
- [x] [2].arr[1].city
- [x] [2].null
2. test 2 in device management
- [x] >1920px - show sidebar, Device Status and Model Type do not change to the second line
- [x] 1920px - default hidden sidebar, Device Status and Model Type do not move to the second line
- [x] 1366px - default hidden sidebar, Device Status and Model Type move to the second line
- [x] In chrome console, keyin document.getElementById('deviceList').__vue__.$_checkView, it's undefined. (it mixins customResizeHandler, not mainPageResizeHandler. $_checkView is a method of mainPageResizeHandler)
## 2021/4/22
### Alice
#### feature/fix device tag type defaulttext
**Purpose**
1. [Devices][fix] fix device tag type's defaulttext in tag info list
2. [Devices][fix] fix key to match langresc
**Test Case**
1. check device -> taginfo type changed & type text lang change
## 2021/4/15
### Tingwei
#### [Change]"Current Time" -> "System Time", "Parameter Uploaded Time" -> "Parameter Time"
**Purpose**
1. [Change]"Current Time" -> "System Time", "Parameter Uploaded Time" -> "Parameter Time"
**Test Case**
1. test
- [x] check parameter list ("Current Time" -> "System Time")
- [x] select time dialog -> check "Current Time" -> "System Time", "Parameter Uploaded Time" -> "Parameter Time"
## 2021/4/14
### Tingwei
#### [Add][selectTimeDialog] Add selectTimeDialog( Never test real api ), etc.
**Purpose**
1. [Add][selectTimeDialog] Add selectTimeDialog.
2. [Change][bindTag] "bindTag.vue" supports dropdown list.
**Test Case**
1. test parameter list item
- [x] url - no data source -> click '+' to set pure parameter
- [x] url - no data source -> change to time -> click '+' -> use current time -> change time format -> save
- [x] url - pure parameter -> change to time + parameter -> default timestamp + current time -> change time format -> save
- [x] url - no data source -> change to time -> click '+' -> use parameter and add one -> save
- [x] body - no data source -> click '+' to set pure parameter
- [x] body - no data source -> change to time -> click '+' -> default timestamp + current time -> change time format -> save
- [x] body - pure parameter -> change to time + parameter -> click '+' -> change time format -> save
- [x] body - no data source -> change to time -> click '+' -> use parameter and add one -> save
2. 2. Time Format input field validation
- [x] required
- [x] max-length 64
#### [Fix][Forwarding] Fix "Value of the parameter table" font-weight and margin-bottom of "API URL" block.
**Purpose**
1. [Fix][Forwarding] Fix "Value of the parameter table" font-weight and margin-bottom of "API URL" block.
**Test Case**
1. test
- [x] "Value of the parameter table" font-weight
- [x] margin-bottom of "API URL" block.
## 2021/04/09
### Alice
#### feature/forwarding-dialog
**Purpose**
1. [pageForwarding][fix] forwarding create api fix
2. [pageForwarding][add] add modules/forwarding.js (store authList for forwarding dialog)
3. [pageForwarding][add] forwarding list add new column
4. [pageForwarding][add] forwarding list edit & delete
5. [pageForwarding][add] forwarding dialog
**Test Case**
1. test for forwarding list
- [x] show column correct
- [x] show auth/rule edit dialog
- [x] show delete auth/rule
2. test for forwarding dialog
- [x] read the auth list
- [x] create a forwarding rule
## 2021/04/8
### Tingwei
#### [Fix][Graph][Grouped Bar Chart] Fix "X Axis sample SVG" highlight.
**Purpose**
1. [Fix][Graph][Grouped Bar Chart] Fix "X Axis sample SVG" highlight.
**Test Case**
1. test
- [x] graph X Axis
- [x] graph Left Y Axis
- [x] graph Right X Axis
- [x] grouped bar chart X Axis
- [x] grouped bar chart Left Y Axis
- [x] grouped bar chart Right X Axis
#### [Fix] Fix, "tag info search API" searching "#MSYS_EdgeStatus" ( it contains hash char ) sends no keyword.
**Purpose**
1. [Fix] Fix, "tag info search API" searching "#MSYS_EdgeStatus" ( it contains hash char ) sends no keyword.
**Test Case**
1. test
- [x] device management -> search "#MSYS_EdgeStatus" in side bar
- [x] device management -> search "#" in side bar
- [x] device management -> search "M" in side bar