# DeviceOn/BI Portal RD Test scenario 2021/01~2021/03
---
###### tags: `DeviceOnBI`
## 2020/3/30
### Tingwei
#### [Add] Add responseMessageDialog.vue and Use it in forwardingDialog.vue
**Purpose**
1. [Add] Add responseMessageDialog.vue and Use it in forwardingDialog.vue (only dialog, do not support combine forwarding data)
2. [Fix] selectParameterDialog multi-lang and style (dialog-content background color)
**Test Case**
1. test server parses success and return vendor response by dev-fake-server with Url http://localhost:8080/#/index/organizationManagement?orgId=16&orgManageEditType=pageForwarding&fakeForwardingTestRes=1 in new tab
- [x] 200 and response json object `window.fakeForwardingTestRes = {status: 200, statusText:'OK', response:{ "STATE": 1}}`
- [x] 200 and response json string `window.fakeForwardingTestRes = {status: 200, statusText:'OK', response:"{ \"STATE\": \"json string\"}"}`
- [x] 201 and response string `window.fakeForwardingTestRes = {status: 201, statusText:'OK', response:"Success !"}`
- [x] 404 and response string `window.fakeForwardingTestRes = {status: 404, statusText:'Not Found', response:"404 page not found"}`
- [x] 301 and response string `window.fakeForwardingTestRes = {status: 301, statusText:'Redirect', response:"Redirect..."}`
2. test real server with Url http://localhost:8080/#/index/organizationManagement?orgId=16&orgManageEditType=pageForwarding in new tab
- [x] click test (will get error)
- [x] window.testForwardingTest = 200 -> click test
- [x] window.testForwardingTest = 500 -> click test
3. test 2
- [x] change lang to cn -> check selectParameterDialog
- [x] check dialog-content background color
## 2020/3/29
### Tingwei
#### [Add] select parameter dialog. (only dialog, do not support combine forwarding data)
**Purpose**
1. [Add] select parameter dialog. (only dialog, do not support combine forwarding data)
**Test Case**
1. test 1
- [x] add forwarding rules -> input and blur API URL -> click add parameter button -> check the select parameter dialog
- [x] check order by object name and paramName
- [x] check filter object name
- [x] check filter paramName
## 2020/3/26
### Alice
#### feature/forwarding-dialog
**Purpose**
1. [pageForwarding][change]
1. add title bar
2. interface switch for type
3. add param table, forwardingInformationData, jsonEditor
2. [forwardingDialog][add] add forwardingDialog
**Test Case**
1. test show dialog with different forwarding type
2. input api url and output param build table
## 2020/3/25
### Alice
#### feature/dialog-size-API-url-fix
**Purpose**
1. [APIUrlInsert][fix] fix emit name & add input desc
2. [common][add] add dialog common size
**Test Case**
1. test for forwarding dialog
- [x] check parameter description was shown under the input column
- [x] check the dialog size was conformed to the design draft
### Tingwei
#### [Add]Add sqlEditor.vue, etc.
**Purpose**
1. [Add]Add sqlEditor.vue
2. [Fix] jsonEditor.vue $emit parameter, i.g., "a<param>a"
**Test Case**
1. test 1 by uncommenting testSqlEditor.vue in pagePlugin.vue
- [x] body style
- [x] props default text (API body)
- [x] input parameter in body example and blur -> check whether $emit
- [x] mounted $emit parameter data
- [x] "a\<param\>a" $emit parameter "param"
2. test 2 by uncommenting testJsonEditor.vue in pagePlugin.vue
- [x] "a\<param\>a" $emit parameter "param"
## 2020/3/24
### Tingwei
#### [Fix]Fix importing jsonEditor.vue error, etc.
**Purpose**
1. [Fix]Fix importing jsonEditor.vue error.
2. [Change] jsonEditor mounted() $emit parameter object.
**Test Case**
1. test 1 by uncommenting testJsonEditor.vue in pagePlugin.vue
- [x] check default $emit parameter data
## 2020/3/23
### Tingwei
#### [Change]Change json mapping color.
**Purpose**
1. [Change]Change json mapping color.
**Test Case**
1. test 1 by uncommenting testJsonEditor.vue in pagePlugin.vue
- [x] check colors
### Alice
#### feature/forwarding-page-list
**Purpose**
1. [pageForwarding][add] forwarding list
2. [pageForwarding][fix] 1. fixed id&class 2. delete correct item
**Test Case**
1. test for forwarding list
- [x] change rows per page to 100 -> scroll -> check tool bar & header fixed
- [x] query test : search input & forwarding type mix
- [x] pre/post page & different column sort
- [x] after filter -> delete item -> check delete correct item
## 2020/3/22
### Tingwei
#### [Add]Add jsonEditor.vue, etc.
**Purpose**
1. [Add]Add jsonEditor.vue
2. [Fix][SRPDashboard] Fix Graph and Grouped bar chart x_axis_settings of subtitle
**Test Case**
1. test 1 by uncommenting testJsonEditor.vue in pagePlugin.vue
- [x] body style
- [x] props default text (API body)
- [x] input parameter in body example and blur -> check whether $emit
- [x] preview style
- [x] select Json Mapping example style
- [x] props default keyPath
- [x] change keyPath
2. test 2
- [x] Graph x_axis_settings
- [x] Grouped Bar Chart x_axis_settings
## 2020/3/18
### Alice
#### feature/forwarding-page-list
**Purpose**
1. [pageForwarding][add] basic list
2. [pageForwarding] forwarding list ui
3. [UI style][change] height & pt pb change
4. [pageForwarding][add] action button ui
**Test Case**
1. list sort -> search
## 2020/3/16
### Alice
#### feature/api-url-component
**Purpose**
1. [Plugin&Forwarding] [add] API Url component
**Test Case**
1. test
- [x] input url and change query as `<param1>, <param2>...` -> blur -> emit query ParamVariableArray and APIUrl
- [x] assign sourceString when edit
### Tingwei
#### [Fix]ifBuild is not set true, it causes "New from Designer" does not show panel component.
**Purpose**
1. [Fix]ifBuild is not set true, it causes "New from Designer" does not show panel component.
**Test Case**
1. test 1, check whether panel component show
- [x] New from Designer
- [x] New from Template
- [x] New from Existing
- [x] edit dashboard
## 2020/3/15
### Tingwei
#### [Fix] Fix import/delete srpframe Authorization
**Purpose**
1. [Fix] Fix import/delete srpframe Authorization
**Test Case**
1. test 1
- [x] add srpframe
- [x] delete srpframe
## 2020/3/11
### Tingwei
#### [Add][SRPDashboard] Add Graph
**Purpose**
1. [Add][SRPDashboard] Add Graph.
**Test Case**
1. test 1
- [x] add Graph
- [x] add left Y item
- [x] edit left Y Axis - Label
- [x] edit left Y Axis - Unit
- [x] edit left Y Axis - Decimals
- [x] edit left Y Axis - Max
- [x] edit left Y Axis - Min
- [x] add Right Y item
- [x] edit Right Y Axis - Label
- [x] edit Right Y Axis - Unit
- [x] edit Right Y Axis - Decimals
- [x] edit Right Y Axis - Max
- [x] edit Right Y Axis - Min
- [x] X Axis
- [x] duplicate display name
- [x] Y item - solid line
- [x] Y item - dashed line
- [x] Y item - dotted line
- [x] Y item - solid line (shadow)
- [x] Y item - dashed line (shadow)
- [x] Y item - dotted line (shadow)
- [x] Y item - points
- [x] Y item - color
- [x] Y item - data type
- [x] Y item - function type
- [x] set unit, decimals, spanLow, spanHigh when left Y item saves
- [x] set unit, decimals, spanLow, spanHigh when right Y item saves
- [x] if the first item of left Y is discrete, set left Y decimals to 0
- [x] if the first item of right Y is discrete, set right Y decimals to 0
- [x] delete left Y item
- [x] delete right Y item
- [x] show customSetting option when line style mismatch
## 2020/3/9
### Alice
### feature/hide-gbc-decimals-tip
**Purpose**
1. [SRPDashboard][change] hide decimals tooltip when the first datasource's data type is not
2. [SRPDashboard][fix] group bar chart x axis style & id fix
**Test Case**
1. test for GBC panel
- [x] go to object page -> edit object -> add primitive parameter (datatype discrete) -> go to dashboard page -> add new blank -> add GBC panel -> select datasource (just build) -> check y axis decimals show the tool tips
### feature/null-data-content-install
**Purpose**
1. [CommonComponent][add] add null data content component
2. [Plugin][add] add pagePlugin
3. [Inspection][change] remove extra code
4. [pagePlugin] page almost done
5. [Component][change] done the component
6. [change] remove extra code
7. [Plugin][add] add actions column
8. [Component][change] add show mode, remove length props
9. [pagePlugin][change] change to show mode
10. [pageObject] [change] use null data content component
11. [pageDashboard][change] add null data content component
12. [pageEvent][change] add null data content component
13. [pageUsers][change] add null data content component
14. [pageEvent][pagePlugin][pageObject][fix] tool bar bottom border (show for no data)
15. [pageArchiving][change] add null data content component
16. [pageNotification][change] add null data content component
17. [Device][change] add null data content component
18. [pagePlugin][fix] disabled pagePlugin
**Test Case**
1. test for null data content component:
1. enter the keywords that don't exist in the datas name -> check the table was changed to tip page
2. change data list as empty array for test -> check the table was changed to tip page and the toolbar is also hidden
- [x] pageObject
- [x] pageDashboard
- [x] pageEvent
- [x] pageNotification
- [x] pagePlugin
- [x] pageArchiving
- [x] pageUsers
- [x] pageDevices
- [x] pageMonitor
- [x] pageEvent
- [x] pageFirmware
- [x] pageApplications
- [x] pageConfigure
2. pagePlugin prototype
## 2020/2/26
### Tingwei
#### [Fix][Devices] Delete a device, its model type is unique in the list. The device was deleted but the model type filter did not update.
**Purpose**
1. [Fix][Devices] Delete a device, its model type is unique in the list. The device was deleted but the model type filter did not update.
**Test Case**
1. test 1
- [x] Delete a device, its model type is unique in the list. -> check model type filter
**Purpose**
1. Refer to the title
2. [Change] No need to send "machine/fineone/[mapCardObjectId]" when we visit index/organizationManagement.
**Test Case**
1. test 1
- [x] cick the account button of the header from the desktop device
- [x] touch the account button of the header from the iphoneX of devTool
2. test 2
- [x] visit index/organizationManagement -> check network
### Alice
#### feature/multistat datasource update
**Purpose**
1. [SRPDashboard][fix] fix multistat unit select datasource list title render no update
**Test Case**
1. test for dashboard template
- [x] edit datasource -> select parameter -> change unit1/unit2 -> save -> check list update -> edit -> change unit1/unit2 -> save -> check list update
## 2021/2/25
### Tingwei
#### [Fix] state.hiddenLangTypeList does not update after the router changed.
**Purpose**
1. [Fix] state.hiddenLangTypeList does not update after the router changed.
**Test Case**
1. test 1
- [x] go to "index/deviceManagement" -> change language to hidden language -> add device -> save -> check whether device name of hidden language show
## 2021/2/24
### Tingwei
#### [Fix] Fix console error: "deviceNameWidth" is not defined on the instance but referenced during render. The error shows when we visit "deviceManagement -> Event", etc.
**Purpose**
1. [Fix] Fix console error: "deviceNameWidth" is not defined on the instance but referenced during render. The error shows when we visit "deviceManagement -> Event".
2. [Fix] Fix console error: "GET https://portal-deviceon-bi-develop-eks002.hz.wise-paas.com.cn/subscribe-proxy/subscription/orginfo/ 404 ". The error shows when we visit index/OrganizationManagement under no orgId query string and no "localStorage.selectedNodeId" condition.
3. [Change] When object profile dialog shows, no need to update "/alarmlevel" and "/alarmcategory".
4. [Fix] "changeLog.vue" or "Markdown.vue" overwrites device status font-color css.
**Test Case**
1. test 1
- [x] go to "index/organizationManagement" -> Event -> check Console
2. test 2
- [x] under no orgId query string and no "localStorage.selectedNodeId" condition, visit "index/organizationManagement" by new tab -> check Console
3. test 3
- [x] go to "index/profileManagement" -> create object profile -> check whether "/alarmlevel" and "/alarmcategory" were not sent.
4. test 4
- [x] go to "index/systemSetting" -> "index/deviceManagement" -> check whether all font-color of device status are correct.
- [x] go to "version" -> "index/deviceManagement" -> check whether all font-color of device status are correct.
#### [Change] Only navigating to organizationManagement and systemSetting updates licenseSetting(orgnode/all/licenseinfo).
**Purpose**
1. [Change] Only navigating to organizationManagement and systemSetting updates licenseSetting(orgnode/all/licenseinfo).
**Test Case**
1. test 1
- [x] go to "index/organizationManagement" -> check whether licenseSetting(orgnode/all/licenseinfo) sends
- [x] go to "index/systemSetting" -> check whether licenseSetting(orgnode/all/licenseinfo) sends
- [x] go to "/home" -> check whether licenseSetting(orgnode/all/licenseinfo) doesn't send
- [x] go to "/deviceManagement" -> check whether licenseSetting(orgnode/all/licenseinfo) doesn't send
## 2021/2/23
### Tingwei
#### [Change]"/langtype" and "/langtype/dynamic" send only when we launch the web, etc.
**Purpose**
1. [Change] Delete the redundant "dashboard/all" which sends when navigating to "index/organization".
2. [Change] "/langtype" and "/langtype/dynamic" send only when we launch the web.
3. [Change] "/langtype" and "/langtype/dynamic" take ver when sending.
4. [Change] No need to check whether store.state.langUserInfo and store.state.dynamicLang exists and get "/langtype" and "/langtype/dynamic" in the components.
5. [Change] Delete "FETCH_STATIC_LANG_RESOURCE", "FETCH_DYNAMIC_LANGUAGETYPE", "FETCH_LANG_TYPE" and their relative codes. They move to "store/index.js" from "store/mosules/common.js" because their response data bind to the main store..
6. [Change] Delete unused "src/util/data-format/types.js".
7. [Fix] Under no orgId queryString and no localStorage.selectedNodeId condition, activate the user-bound and enabled Org if found it. or, activate the first Org.
**Test Case**
1. test 1
- [x] go to "index/organization" -> check whether only Dashboard send "dashboard/all"
2. test 2 - 5
- [x] launch web -> check whether "/langtype" and "/langtype/dynamic" take ver.
- [x] -> go to deviceManagement -> check whether "/langtype" and "/langtype/dynamic" send
3. test 7
- [x] visit index/organization with an account that doesn't bind the first org
## 2021/2/22
### Alice
#### feature/notification-obj-param-multilang
**Purpose**
1. [Notification][fix] Add/Edit Notification Group > Others... > Object & Parameter item show with locallang
**Test Case**
1. test for notification group
- [x] add object -> enter the object names in the corresponding language -> add parameter enter names in the corresponding language -> save parameter -> save object -> change to notification page -> notification group -> click create notification group icon -> click others... -> click group -> click object -> check object & parameter is shown the correct language name
## 2021/2/20
### Tingwei
#### [Change] Dynamic import page components in organizationManagement, etc.
**Purpose**
1. [Change] Dynamic import page components in organizationManagement
2. [Change] Dynamic import UploadProfileWorker and UploadAlarmCodeWorker
3. [Add] dynamicImport.js, dynamicImportError.vue and dynamicImportLoading.vue
4. [Change] Comment unused XLSX and types.FETCH_ALARM_CODE_FILE in src/store/modules/profile.js. XLSX will exclude from chunk.vendors~app.xxx.js
5. [Fix] Delete the redundant border at the left of pagination in slotParameterToolbar. It shows in the older version slotParameterToolbar (the parameter list, etc.).
**Test Case**
1. test 1 ~ 4 by `npm run prod-test-report`, and run `npm run prod-test` in portal_mplse_release
- [x] check the report
- [x] page Object -> refresh
- [x] -> page Dashboard -> refresh
- [x] -> page Inspection -> refresh
- [x] -> page Event -> refresh
- [x] -> page Notification -> refresh
- [x] -> page Archiving -> refresh
- [x] -> page Users -> refresh
- [x] -> page Object -> refresh
- [x] upload a alarm code excel in the object dialog
- [x] -> download a alarm code excel
- [x] upload a object profile excel
- [x] upload a alarm code excel in the profile dialog
- [x] -> download a alarm code excel
- [x] -> change those file name -> refresh -> check the error message
- [x] use network speed "fast 4G" -> refresh -> check the loading in pageDashboard
2. test 5
- [x] check whether the redundant border at the left of pagination does not show in parameter list of object profile dialog
#### [Change] Only navigating to deviceManagement, organizationManagement, systemSetting or profileManagement updates alarmLevel and alarmCategory, etc.
**Purpose**
1. [Change] Only navigating to deviceManagement, organizationManagement, systemSetting or profileManagement updates alarmLevel("/alarmlevel/all") and alarmCategory("/alarmcategory/all").
2. [Change] Only navigating to organizationManagement or profileManagement updates functionList("/machine/calcfunction/all").
**Test Case**
1. go to page and check those api network
- [x] go to deviceManagement, check whether alarmLevel and alarmCategory update.
- [x] go to systemSetting, check whether alarmLevel and alarmCategory update.
- [x] go to systemSetting with not space management, check whether alarmLevel, alarmCategory update and functionList update when redirect to organizationManagement.
- [x] go to organizationManagement, check whether alarmLevel, alarmCategory update and functionList update.
- [x] go to profileManagement, check whether alarmLevel, alarmCategory update and functionList update.
- [x] go to userManagement, check whether those api do not update
- [x] go to menuManagement, check whether those api do not update
- [x] go to home, check whether those api do not update
## 2021/2/18
### Alice
#### feature/profile-recording-rate
**Purpose**
1. [Profile][change] parameter default saveFreq: 60 sec -> 0 sec
**Test Case**
1. test for create & edit profile
- [x] create profile -> add 2 parameter(one recording rate is 'Do not record', the other is 10 min) -> check default recording rate is 'Do not record' -> save parameter -> edit parameter -> check recording rate value -> save parameter -> save profile
- [x] edit profile -> edit parameter -> checking recording rates is same as save result
#### feature/panel-type-compatibility
**Purpose**
1. [SRPDashboard] add panelType when no panelType, compatibility for old version dashboard
**Test Case**
1. test for edit dashboard
- [x] edit old dashboard -> checking that the panel item panel type was loaded
### Tingwei
#### [Add][organizationManagement] Assign orgId and orgManageEditType to the query strings and use them... etc
**Purpose**
1. [Add][organizationManagement] Assign orgId and orgManageEditType to the query strings and use them.
2. [Add][organizationManagement] Assign orgId to localStorage and use it.
3. [Add][deviceManagement] Assign deviceManageEditType to the query strings and use it.
4. [Fix][organizationManagement] Not fullscreen loading covers the nav(the org list) when the object list table is loading.
5. [Fix]Close the nav(the org list) when click the Logo.
6. [Fix][organizationManagement] Don't close the fullscreen loading when the timing between creating org successfully to selecting the new org.
7. [Fix][deviceManagement] The current tab name in the header(My Device / xxx) does not translation.
8. [Fix][organizationManagement] Multiple Lang keys (no_object _desc) are mistakenly use no_dashboard_desc in ObjectList.vue and pageArchiving.vue.
**Test Case**
1. test the query string and setLoadingEnd by refreshing page and changing tab - organizationManagemant
- [x] page Object -> refresh
- [x] -> page Dashboard -> refresh
- [x] -> page Inspection -> refresh
- [x] -> page Event -> refresh
- [x] -> page Notification -> refresh
- [x] -> page Archiving -> refresh
- [x] -> page Users -> refresh
- [x] -> page Object -> refresh
- [x] -> change org -> refresh page
2. test the query string for purpose changing route - Organization Managemant
- [x] -> click logo -> check whether the query string has orgId -> click Object Management at '/home'
- [x] from profileManagement to organizationManagemant
- [x] logout -> login -> go to Origanization Management
- [x] create children group
- [x] delete children group
- [x] create root org
- [x] delete root org
3. test the invalid query string - Organization Managemant
- [x] input invalid orgId in url
- [x] start from the new tab of browser with invalid orgId in url
- [x] input invalid orgManageEditType in url
- [x] start from the new tab of browser with invalid orgManageEditType in url
- [x] start from the new tab of browser with invalid objectId in url
4. test localStorage selectedNodeId(id) - Organization Managemant
- [x] start from the new tab of browser with a valid selectedNodeId and no query string
- [x] start from the new tab of browser with a invalid selectedNodeId and no query string
- [x] start from the new tab of browser with a no selectedNodeId and no query string
5. test changing role - Organization Managemant
- [x] changing admin org to enginner org in pageUsers by click the nav
- [x] start from the new tab of browser with to enginner org in pageUsers by the query string
6. test the query string by refreshing page and changing tab - deviceManagemant
- [x] page Devices -> check the header(My Device / xxx) translation -> refresh
- [x] -> page Monitor -> check the header(My Device / xxx) translation -> refresh
- [x] -> page Event -> check the header(My Device / xxx) translation -> refresh
- [x] -> page Firmware -> check the header(My Device / xxx) translation -> refresh
- [x] -> page Application -> check the header(My Device / xxx) translation -> refresh
- [x] -> page Config -> check the header(My Device / xxx) translation -> refresh
### Alice
#### feature/designer add panel type
**Purpose**
1. [SRPDashboard]
- [add] add panel type comparison list
- [fix] fix readonly & disabled value string console error
**Test Case**
1. test for dashboard designer
- [x] add new blank -> add donut chart -> check panel type same as title & readonly & disabled -> save
- [x] edit the dashboard that just saved -> check panel type
- [x] change panel title -> save -> edit -> check panel type
* This feature only supports panels that added after version 1.00.007 and above
## 2021/2/9
### Alice
#### feature/inspection bug fix
**Purpose**
1. [Inspection][add] add home, overview tab
2. [Inspection][fix] let inspection tab available when add org
**Test Case**
1. test for inspection page
- [x] click inspection tab -> tab active home/overview
- [x] add root org -> check inspection tab was available(only root org and when it is added)
## 2021/2/8
### Alice
#### feature/el-select-no-render
**Purpose**
1. [Center Portal][fix][Front-end] after backspace, el-select is no render, fix with reload when tab is 'cloud'.
**Test Case**
1. test for sign in page
-[x] input username -> input wrong password -> select domain -> remember me -> sing in -> click forget password/sign up -> backspace -> check domain was selected and render label at input
## 2021/2/5
### tingwei
#### [Fix] Replace email and change the description to * in the device's existing condition, etc
**Purpose**
1. [Fix] Replace email and change the description to * in the device's existing condition.
2. [Change] If from manual, click BACK to go back, else click SCAN AGAIN to go to the scan QR Code page.
**Test Case**
1. test 1 & 2
- [x] visit by key in 'mobile/device/addDevice?mac=00-D0-C9-F8-9E-53&modelType=UNO-137' -> check user list and the description
- [x] -> click SCAN AGAIN
- [x] scan existing device QR Code from iphone camera -> check user list and the description
- [x] -> click SCAN AGAIN
- [x] Add manually -> submit existing device -> click BACK
## 2021/2/4
#### Tingwei
#### [Fix] Fix below error logs... etc
**Purpose**
1. [Fix] Fix below error logs
a .Invalid prop: type check failed for prop "searchPlaceholderDefaultText". Expected String with value "User Group Name", got Array .
b .Invalid prop: type check failed for prop "searchPlaceholderDefaultText". Expected String with value "Notification Group Name", got Array .
c .Cannot read property '0' of undefined.
2. [Fix] Fix logo is center when in 'index/organizationManagement' and window width < 657px.
**Test Case**
1. test 1 in index/organizationManagement
- [x] test a & b -> go to Notification -> check Console
- [x] test c -> when Tabs are not fixed at the top -> change window size -> check Console
2. test 2 in index/organizationManagement
- [x] change window width < 657px -> check logo
## 2021/2/3
#### Alice
#### [Center Portal][change][Front-end] remove input radius & -webkit-appearance
**Purpose**
1. [Center Portal][change][Front-end] remove input radius & -webkit-appearance
2. [Center Portal][fix][Front-end] error message fix
3. [Center Portal][fix][Front-end] router query error message fix
**Test Case**
1. test for mobile
- [x] mobile scan -> check input style
- [x] input wrong password/username -> submit -> check error message
### Tingwei
#### [change]In tablet or mobile device, the header dropdown hide "Advanced setting", "Help", "Home" and "Account".
**Purpose**
1. In tablet or mobile device, the header dropdown hide "Advanced setting", "Help", "Home" and "Account".
**Test Case**
1. test 1 by chrome devtool, changing device need to refresh page
- [x] iphone x
- [x] iPad
- [x] desktop
#### [Fix] Fix util.js translation wrong.
**Purpose**
1. [Fix] Fix util.js translation wrong.
**Test Case**
1. go to https://localhost:8080/#/mobile/device/addDevice/manual, test below error message
- [x] ja required
- [x] zh_tw length
- [x] ja length
#### [change][Devices] Editing success (only EdgeLink and SCADA) and Deleting success no need to reset Current Page, Rows Per Page, Search Keyword...etc
**Purpose**
1. [change][Devices] Editing success (only EdgeLink and SCADA) and Deleting success no need to reset Current Page, Rows Per Page, Search Keyword
2. [Fix][Devices] Deleting Device success no need to setLoadingEnd
3. [Fix][Devices] Fix dropdown of "Rows Per Page" is cover by the fixed right columns
**Test Case**
1. test edit
- [x] go to 2+ page & Rows Per Page is 20 -> edit device -> save
- [x] search -> edit device -> save
2. test delete
- [x] go to 2+ page & Rows Per Page is 20 & 2+ device in this page -> delete device -> save
- [x] go to 2+ page & Rows Per Page is 20 & only 1 device in this page -> delete device -> save
- [x] search & more than 2 device in this page -> delete device -> save
- [x] search & only 1 device in this page -> delete device -> save
3. test purpose 3 in 1360px
- [x] Devices -> check dropdown of "Rows Per Page"
## 2021/2/2
### Alice
#### feature/gzip build
**Purpose**
1. [Center Portal][change][Front & Back -end]
- build gzip
2. [Center Portal][change][Front-end]
- sign in only when res data status === 'deviceon-bi'
3. [Center Portal][change][Back-end]
- sign in check mode
4. [Center Portal][change][Front-end]
- action url tweak, exclude the possibility of exceptions, like url.com/#/login
**Test Case**
1. test for build
- [x] build -> network file response headers content encoding is gzip
2. test for domain api
- [x] submit https://api-portal...... -> response body status is 'deviceon-bi'-> submit action redirect
3. test for domain api
- [x] click forget password or sign up -> working
4. test for submit action url
- [x] input url that has postfix(ex. http://xxxx.xxxx.com/#/login) -> submit -> work correctly
### Tingwei
#### [Fix]When we redirect to /login from new tab with not /login URL, "Session Timeout" is no need to show...etc
**Purpose**
1. [Fix]When we redirect to /login from new tab with not /login URL, "Session Timeout" is no need to show...etc
2. [Fix]Fix opacity is 0 when not login and key in not /login URL(i.g., /index/deviceManagement) at /login page.
**test**
1. Test 1
- [x] Login -> delete Token -> go to /index/deviceManagement
- [x] -> visit https://localhost:8080/#/index/deviceManagement from a new tab
2. Test 2
- [x] -> in login page and not login -> key in https://localhost:8080/#/index/deviceManagement
#### [Fix][Mobile Device] Add device manually, when select connector device, hide mac field... etc
**Purpose**
1. [Fix][Mobile Device] Add device manually, when select connector device, hide mac field.
2. [Change][Mobile Device] If the device is a connector device, formatSerialNoLabel return "Edge ID".
3. [Change][Mobile Device] Add device by scan QR code, format mac address when initAddDevice.
**test**
1. Test 1
- [x] Add -> Manually Input -> select device "WISE -> LoRaWAN -> NS Service" -> save
2. Test 2
- [x] check "NS Service" device in mobile/device/deviceList
3. Test 3
- [x] scan qrcode which contains lowercase MAC Address -> check whether mac Address is uppercase in input
#### [Fix] Hide outline when click dropdown button of header and "Add"... etc
**Purpose**
1. [Fix] Fix "this.selectedProduct.name.indexOf('Connector')" to "this.getConnectorNameEnum.indexOf(this.selectedProduct.name)" for product "WISE -> LoRaWAN -> NS Service".
2. [Change] Move "createDeviceCredentialKey" ('/device/create/credentialkey/connector') from handleProductModuleChange() to saveNewDevice() to make sure Promise.
3. [Fix] multiLangSource.scan_device_QR_code and multiLangSource.mobile_add_new_device_header_content
4. [Fix] Hide outline when click dropdown button of header and "Add"
**test**
1. Test 1 & 2
- [x] select device "WISE -> LoRaWAN -> NS Service" -> save -> edit it in deviceManagement
2. Test 3
- [x] Add -> check "Scan Device QR Code"
- [x] Add -> Manually Input -> check "Please fill in the following fields to add device."
3. Test 4
- [x] click Add -> check whether outline hides
- [x] click Gear Icon of header -> check whether outline hides
- [x] click User Icon of header -> check whether outline hides
## 2021/1/29
### Alice
#### feature/test and bug fix
**Purpose**
1. [Center Portal][add][Back-end]
- POST api - domainStatus
2. [Center Portal][add][Front-end]
- domainStatus POST api connect
- use window.open replace href url
- add url pointer
3. [Center Portal][change][Back-end]
- add POST api - domainStatus
- remove extra code and sync the back-end code
4. [Center Portal][change][Front-end]
- window.open url must be _self not _blank
**Test Case**
1. correct sign in (cloud/edge)
2. test for username error(empty/format error/invalid username)
3. test for password error(empty/length not enough/invalid password)
4. test for domain error(empty/forget password/sign in/sign up/invalid domain url)
5. domain input slash(/) test
6. after select station, clear error message (cloud)
7. remember me -> store username, current tab, domain
8. test url status before redirect(sign up/sign in/forget password)
9. preventDefault action event before url status check
10. window.open url by _self(sign up/forget password)
11. after redirect clear the password field
12. \<a> and \<button> cursor pointer change
- test url: https://wise-deviceon-bi.azurewebsites.net/#/login
### Tingwei
#### [Change] Apply timeoutHandler on mobileMain.vue... etc
**Purpose**
1. [Add] Extract timeoutHandler from index.vue and create a mixin component: "components/_extend_mixin/timeoutHandler.js".
2. [Change] Apply timeoutHandler on index.vue and mobileMain.vue.
3. [Change] If isMobile and has valid token, visit page by domain directly will redirect to mobile/device/deviceList
**Test Case**
1. Test 1 & 2 by using safari connect iphone by develop tool od safari
- [x] mobile/device/deviceList -> change "refreshTokenFlag" in localStorage to "1" -> touch iphone -> check whether refreshToken in network
- [x] mobile/device/deviceList -> delete "EIToken" and change "refreshTokenFlag" in localStorage to "1" -> touch iphone -> check whether Logout
- [x] mobile/device/deviceList -> change to other App or web page -> delete "EIToken" and change "refreshTokenFlagTimerTimestamp" in localStorage to "0" -> turn back to our page -> check whether Logout
2. Test 1 & 2 by using desktop chrome
- [x] organizationManagement -> change "refreshTokenFlag" in localStorage to "1" -> scroll -> check whether refreshToken in network
- [x] organizationManagement -> delete "EIToken" and change "refreshTokenFlag" in localStorage to "1" -> click -> check whether Logout
- [x] organizationManagement -> change to web page -> delete "EIToken" and change "refreshTokenFlagTimerTimestamp" in localStorage to "0" -> check whether Logout
3. Test 3
- [x] login in iphone -> visit page by domain directly -> check whether redirect to mobile/device/deviceList
- [x] login in desktop -> visit page by domain directly -> check whether redirect to organizationManagement
## 2021/1/28
### Tingwei
#### [Add] Add Device manually...etc
**Purpose**
1. [Add][Mobile Device] Add Device manually
2. [Add][Mobile Device] validate modelType and mac Address
**Test Case**
1. Test 1
- [x] Manually input -> name successfully
2. Test 2
- [x] add by scan qrcode -> modelType length > 32
- [x] add by scan qrcode -> invalid modelType (unsupported product)
- [x] Manually input -> mac address length < 15
- [x] Manually input -> mac address exists
### [Fix]Profiles hide when no any org bind.
**Purpose**
1. [Fix]Profiles hide when no any org bind.
**Test Case**
1. Test 1
- [x] visit profileManagement in user who binds no any org
## 2021/1/27
### Tingwei
#### [Add][Mobile Device] Add error page... etc
**Purpose**
1. [Add][Mobile Device] Add error page
2. [Add]Avoid view zoom in when focus input
**Test Case**
1. Test by `npm run dev-https0000` in mac, using iphone connect local server by IP in the same network.
- [x] scan unsupported model type
- [x] -> scan again -> scan exist device
- [x] -> scan again -> scan no mac
- [x] -> scan again -> scan no modelType
- [x] -> scan again -> scan no both mac and modelType
- [x] -> scan again -> in "Access the Camera dialog" click cancel(block camera)
- [x] use company PC(no camera) -> add -> scan device qrcode -> check "No Camera Found"
- [x] visit by http and not localhost -> add -> scan device qrcode
- [x] My iphone or PC does't occur "NotReadableError", so test word by runing below code in Console of devtool `document.getElementById('app').__vue__.$store.state.deviceModule.errorPageData.type = 'scanQRCode_initError_NotReadableError';
document.getElementById('app').__vue__.$router.push({path: '/mobile/device/error'})`
- [x] My iphone or PC does't occur "OverconstrainedError", so test word by runing below code in Console of devtool`document.getElementById('app').__vue__.$store.state.deviceModule.errorPageData.type = 'scanQRCode_initError_OverconstrainedError';
document.getElementById('app').__vue__.$router.push({path: '/mobile/device/error'})`
- [x] My iphone or PC does't occur "StreamApiNotSupportedError", so test word by runing below code in Console of devtool`document.getElementById('app').__vue__.$store.state.deviceModule.errorPageData.type = 'scanQRCode_initError_StreamApiNotSupportedError';
document.getElementById('app').__vue__.$router.push({path: '/mobile/device/error'})`
- [x] test other uncategary init error word by runing below code in Console of devtool`document.getElementById('app').__vue__.$store.state.deviceModule.errorPageData.type = 'scanQRCode_initError_other';
document.getElementById('app').__vue__.$router.push({path: '/mobile/device/error'})`
2. Test 2 by my iphone
- [x] go to /login -> click User Name
####[Change] If device is Mobile/Pad, login to /mobile/device/deviceList. Otherwise, login to /home.... etc
**Purpose**
1. [Change] If device is Mobile/Pad, login to /mobile/device/deviceList. Otherwise, login to /home.
2. [Add] Add new package, "mobile-device-detect". Set isMobile into store.state when web initializes.
3. [Change] When going to /mobile/device/addDevice, in no both mac and modelType condition, if device is Mobile/Pad redirect to /mobile/device/deviceList, Otherwise, redirect to /home.
4. [Change] "vue-qrcode-reader": "^2.3.15"
5. [Change] In /mobile/device/addDevice, mac and model are editable.
**Test Case**
1. Test purpose 1 & 2
- [x] mobile login by iphone -> /mobile/device/deviceList
- [x] ipad login by chrome devtool "iPad Pro" -> /mobile/device/deviceList
- [x] desktop login -> /home
2. Test purpose 3
- [x] mobile, url input /mobile/device/addDevice -> /mobile/device/deviceList
- [x] ipad, url input /mobile/device/addDevice -> /mobile/device/deviceList
- [x] desktop, url input /mobile/device/addDevice -> /mobile/device/deviceList
3. Test purpose 5
- [x] go to https://localhost:8080/#/mobile/device/addDevice?mac=00-D0-C9-F8-9E-55&modelType=UNO-137 -> check whether mac address and model type are editable.
## 2021/1/22
### Tingwei
#### [Add][Mobile Device] Add description into pageMobileAddDevice and PageMobileDeviceList... etc
**Purpose**
1. [Add][Mobile Device] Add description into pageMobileAddDevice and PageMobileDeviceList
2. [Add][Mobile Device] Scroll to top when page change.
**Test Case**
1. Test 1 & 2
- [x] go to https://localhost:8080/#/mobile/device/addDevice?mac=32-D3-FB-E8-46-9F&modelType=UNO-137 -> fill desc which has length > 200 -> submit
- [x] valid desc -> submit
- [x] no desc -> scroll down to the bottom of page -> submit
- [x] -> check whether scroll to top and check desc deviceList
### Alice
#### feature/fix sso login box size
**Purpose**
1. [SSO][fix] fix size same as cloud center
**Test Case**
1. add new login box size when page size change
- [x] 1440 - 1920
- [x] 1920 - 2560
#### feature/center portal file update
**Purpose**
1. [Center Portal][Front-end][add]
- api connect
- store multilang
2. [Center Portal][Front-end] [change]
- error msg & forget url fix
- remember only username
- validate timing change
- login box size change
- detect the domain last char is '/'
- update ver
- add maximum & minimum scale for mobile
3. [Center Portal][Back-end][change]
- add CORS
- update ver
4. [Center Portal][change]
- remove useless file & code
**Test Case**
1. test for cloud center page
- [x] get station list from /api/stationList -> select option -> sign in
- [x] get language from store -> detect bowser language -> check label and placeholder correct
- [x] click the forget url -> jump to the correct station that forgot password page
- [x] check remember me before sign in -> sign error go back this page -> username must be kept
- [x] username blur only check username (validate input fields independently)
- [x] test difference resolution
- 320 x 568
- 375 x 667
- 414 x 736
- 375 x 812
- 768 x 1024
- 1024 x 1366
- 1366 x 768
- 1440 x 1920
- 1920 x 2560
- 2560 ↑
## 2021/1/21
### Tingwei
#### [Add][Mobile Device] pageMobileScanDeviceQRCode.vue ... etc
**Purpose**
1. [Add][Mobile Device] pageMobileScanDeviceQRCode.vue
2. [Add][Device] close button of sideBar of My Device add hover and active icon
**Test Case**
1. Test 1 by `npm run dev-https0000` in mac, using iphone connect local server by IP in the same network.
- [x] go to mobile/device/deviceList -> click Add -> click "Scan Device QR Code" -> scan valid QR Code -> add device (iphone safari and chrome)
- [x] scan invalid QR Code(i.g., ejdoawiejdoi)
- [x] go to mobile/device/deviceList -> click Add -> click "Scan Device QR Code" -> do not allow camera
2. Test 2
- [x] go to Devices -> click any device name -> mouse hovers close button -> click close button
## 2021/1/20
### Alice
#### feature/center portal file update
**Purpose**
[Center Portal][add] update docker file branch
## 2021/1/19
### Alice
#### feature/fix-notification-select-variable
**Purpose**
1. [Notification][fix] select variable dialog path, object item add ellipsis
**Test Case**
1. test for notification select variable dialog
- [x] text over path/content with text ellipsis
#### feature/center-portal-file-update
**Purpose**
1. [Center Portal][add]
- file upload (update package version)
2. [Center Portal][add]
- front-end, back-end
3. [Center Portal][add]
- front-end, back-end update for build
4. [Center Portal][add]
- redirect to login
- /bi/auth/login form action test
5. [Center Portal][add]
- add store for could center
- build and test
- remove dist data
6. [Center Portal][add]
- remove old sso css
- change cloud center page struct
- add new scss for cloud center
- add new color variables
7. [Center Portal][add]
- clear style and reduce unuseful html tag
- value & style name format
- api url add
8. [Center Portal][add]
- error tips
- username, password, domain check
- preventDefault redirect when error
9. [Center Portal][Back-end][add]
- edit docker file
**Test Case**
1. test for build
- [x] npm run prod-test make the dist -> move to back-end npm run prod-test -> check server listen at http://localhost:8080 is work
- [x] check username, password, domain empty/doesn't match format
- [x] singup/forget password link
- [x] rwd
- [x] correct form data post and redirect url
- [x] get back end error and show
## 2021/1/18
### Tingwei
#### [change]Close if Flag: get account not by Cookies when "process.env.NODE_ENV !== 'production' || window.location.host.indexOf(Conf.testAPIForLocal) > -1)"
**Purpose**
1. [change]Close if Flag: get account not by Cookies when "process.env.NODE_ENV !== 'production' || window.location.host.indexOf(Conf.testAPIForLocal) > -1)"
2. [change]logout delete cookies "EIToken" and "WISEUser".
**Test Case**
1. test 1 with `npm run dev`
- [x] go to #/login
- [X] -> login
- [x] go to #/index/organizationManagement
- [x] logout -> login again
### [Add]pageMobileDeviceList...etc
**Purpose**
1. [Add]pageMobileDeviceList
2. [Fix][Mobile Device] CredentialKey should not be delete after adding device success
3. [Fix][Mobile Device] Add device success message new style
**Test Case**
1. test 1 with `npm run dev`
- [x] go to #/mobile/device/deviceList -> check image, Name, Model Type, MAC Address(or SCADA ID or IMEI Code)
- [x] click Add -> click -> Scan Device QR Code
- [x] click Add -> click -> Manually Input
2. test 2 ~ 3
- [x] #/mobile/device/addDevice?mac=4A-FA-52-48-F3-3E&modelType=UNO-137 -> add a new device -> check success message style
- [x] -> after page changes to #/mobile/device/deviceList ->check whether CredentialKey deleted in network(or You can delete the device from #/index/deviceManagement. If no CredentialKey, deleting will show an error. )
## 2021/1/15
### Tingwei
#### [Change]on-primises hide "Sign up", "Activate Account " and "subscribe Now" ... etc
**Purpose**
1. [Change] on-primises hide "Sign up", "Activate Account " and "subscribe Now"
2. [Change] change "product/module" APII
3. [Fix] Fix only mac or modelType change bug.
**Test Case**
1. test 1 with changing `prod.config.js -> testAPIForLocal to e100-ensaas.isghpc.wise-paas.com, and npm run dev`
- [x] go to #/login
2. test 2 & 3 with changing `prod.config.js -> testAPIForLocal to develop-eks002.hz.wise-paas.com.cn, and npm run dev`
- [x] go to #/mobile/device/addDevice?mac=4A-FA-52-48-F3-3A&modelType=ADAM-6017
- [x] -> change value of modelType to GG in url field of browser and press enter
## 2021/01/14
### Tingwei
#### [Add][mobile] page Add Device
**Purpose**
1. pageAddDevice
2. Submit
3. Cancel
4. validation: no mac, no modelType, no both, unsupported modelType, mac exist, duplicate device name.
5. channel
**Test Case**
1. test after login
- [x] go to /mobile/device/addDevice?mac=4A-FA-52-48-F3-3E&modelType=ADAM-6017 -> check whether device exists
- [x] go to /mobile/device/addDevice?mac=4A-FA-52-48-F3-3E&modelType= -> check whether no modelType
- [x] go to /mobile/device/addDevice?mac=&modelType=ADAM-6017 -> check whether no mac
- [x] go to /mobile/device/addDevice?mac=&modelType= -> check whether go to device list
- [x] go to /mobile/device/addDevice -> check whether go to device list
- [x] go to /mobile/device/addDevice?mac=4A-FA-52-48-F3-3E&modelType=GG -> unsupported
- [x] go to /mobile/device/addDevice?mac=4A-FA-52-48-F3-3E&modelType=ADAM-6017 -> input deplicate name -> submit
- [x] -> change correct name -> submit -> check whether success
- [x] check device(ADAM-6017) created from index/deviceManagemant -> whether the default I/O Channels exist
- [x] test iphone safari, wechat, chrome, line
- Android will test in the future
## 2021/01/07
### Tingwei
#### [Change][Devices]Device list fixed actions column in the right side.
**Purpose**
1. [Change][Devices]Device list fixed actions column in the right side.
**Test Case**
1. test purpose 1
- [x] check fixed actions
## 2021/01/06
### Tingwei
#### [Add] Support profile server api in on-premises space...etc
**Purpose**
1. [Add] Support profile server api in on-premises space.
2. [Fix] systemInfo and license are reset when Logout.
3. [change] Separate "systemState" from defaultState. "systemState" will not reset when "setLogOut". "defaultState" will reset when "setLogOut".
4. [Delete] Delete unused src/axios/axios.js
**Test Case**
1. test purpose 1 in http://portal-deviceon-bi-e100-ensaas.isghpc.wise-paas.com/
- [x] go to profileManagement -> create a profile
- [x] -> edit profile -> upload a alarm code excel
- [x] delete a profile
- [x] create object from profile
2. test purpose 1 in http://portal-deviceon-bi-develop-eks002.hz.wise-paas.com.cn
- [x] go to profileManagement
3. test purpose 2~3 in http://portal-deviceon-bi-develop-eks002.hz.wise-paas.com.cn
- [x] login -> logout -> open chrome devtool -> open Console and input `document.getElementById('app').__vue__.$store.state.systemInfo` chech whether systemInfo is not empty object
4. test purpose 4 in localhost:8080
- [x] login -> go to profileManagement -> logout
#### [Fix][Devices][tagInfoList] Fix bug, in sidebar tab is "Dependent Resources" condition, tag total count does not update after user change selected device...etc
**Purpose**
1. [Fix][Devices][tagInfoList] Fix bug, in sidebar tab is "Dependent Resources" condition, tag total count does not update after user change selected device.
2. [Fix][Devices][tagInfoList] Fix error when dataType is null.
3. [Fix][Device List] Fix checkbox count does not reset when fetchDeviceInfoList (i.g., edit and save a device)
4. [Fix] Fix Blue background always keep even through sidebar close.
5. [Change][My Devices]Change showing sidebar timing from click a row to click the device name.
6. [Add] hyperlink.scss
**Test Case**
1. test 1 & 2, change testAPIForLocal to 'trace-eks002.hz.wise-paas.com.cn' in prod.env.js, login with 'xiaochen.shi@advantech.com.cn' account
- [x] go to devices -> click a device -> click 'dependent Resources' -> change device -> check tags total count
- [x] -> click Tags in the tabs of sidebar -> select 'childDev' device -> check tag table
2. test 3
- [x] open pageDevices.vue -> change isShowCheckbox to 'true' -> go to browser -> go to Devices -> check 3 checkbox -> edit a device -> save the device -> check a checkbox -> check whether chechbox total count is 1
3. test 4
- [x] sidebar show -> shide bar close -> check the row background color
4. test 5 & 6 in My Devices page
- [x] tab Devices -> click device name -> change device
- [x] tab Devices -> click row
- [x] tab Monitor -> click device name -> change device
- [x] tab Monitor -> click row
- [x] tab Alarm -> click device name -> change device
- [x] tab Alarm -> click row
- [x] tab Firmware -> click device name -> change device
- [x] tab Firmware -> click row
- [x] tab Configure -> click device name -> change device
- [x] tab Configure -> click row
### Alice
#### feature/clear-refresh-value
**Purpose**
1. [SRPDashboard] update refresh value as ""
**Test Case**
1. test for add from template
- [x] save the dashboard that add from template -> preview (need database also change the default refresh value)
## 2021/01/04
### Alice
#### feature/panael-discrete-decimal0
**Purpose**
[SRPDashboard]
1. detect Group Bar Chart first target's data type for disabled decimal
2. change decimal to 0
3. add tips after the decimal label
4. log chart panel no decimal value can be setting yet
**Test Case**
1. test for dashboard add blank
- [x] add a grouped bar chart panel -> add a parameter that data type is discrete -> edit Y Axis -> check decimal was disabled -> check the tips that after label
- [x] delete/change the parameter -> edit Y Axis -> check decimal was able to change
#### feature/inspection tab double click
**Purpose**
1. [Inspection] prevent user double-click the tab, lead to same page be refreshed
2. [Inspection] add tab icon (open inspection page in _blank)
3. [Inspection] update tab icon
**Test Case**
1. test for Inspection
- [x] click the actived tab -> check page isn't refreshed
- [x] click the tab -> open the inspection page in new tab page
### Tingwei
#### [Fix] Translation text of the delete device dialog change to replacing {keyword}.
**Purpose**
1. [Fix] Translation text of the delete device dialog change to replacing {keyword}.
2. [Fix] Fix tw translation text
**Test Case**
1. test purpose 1
- [x] tw -> check delete device dialog text
- [x] en -> check delete device dialog text
- [x] cn -> check delete device dialog text
- [x] jp -> check delete device dialog text
2. test purpose 2
- [x] check https://docs.google.com/spreadsheets/d/11nZyjyBx9ewp7I964hN1H492V0q9Hyo0EGo8Oa_ucCA/edit#gid=2125294650