---
# System prepended metadata

title: WISE.M+ Portal RD Test scenario 2019
tags: [WISE.M+]

---

# WISE.M+ Portal RD Test scenario 2019

## 2019/12/31

### Tingwei
#### [Fix][Menu]1.try catch all in parseDataToProfileFormat function 2.delete unuse code "uniqueParameterName"
1. try catch all in parseDataToProfileFormat function 
2. delete unuse code "uniqueParameterName"

**Test Case**:  
1. upload excel in below case:
    - alarm code excel
    - no sheet Information
    - no sheet Parameter
    - no sheet FormulaCode
    - no sheet AlarmInformation
    - no sheet AlarmRule
    - no sheet Parameter and no profileName column

#### [Fix][Menu]Fix org name not show, but show orgId
1. Fix org name not show, but show orgId

**Test Case**:  
1. reflesh page, edit one menu -> check menu name -> cancel -> edit another menu

## 2019/12/30

### Tingwei
#### [Fix][Profile]Fix alarm complex rule2 not copy rule1 other key(exclude symbols, threshold, name).
**Purpose**:  
1. Fix alarm complex rule2 not copy rule1 other key(exclude symbols, threshold, name).

**Test Case**:  
1. add alarm complex one alarm rule which contains both 'Rule1' and 'Rule2' -> save -> check resquest in "network"
2. add alarm complex one alarm rule  which contains only 'Rule1' -> save profile -> re-edit same profile, same parameter, same alarm. Then edit Rule2 in the same alarm Rule -> save -> check resquest in "network"

#### [Add][Fix][Menu][Profile]Menu dialog change wording and lang bug fix (Fix texts of subTabs (editType) are wrong(always show en) when first language is not 'en'.)
**Purpose**:  
1. Menu dialog change wording
2. Fix texts of subTabs (editType) are wrong(always show en) when first language is not 'en'.

**Test Case**:  
1. check menu language
2. set default langeuage isn't "en" -> reflesh page -> create/edit profile -> edit constant parameter -> cancel -> edit primitive parameter -> cancel -> edit calculation parameter

## 2019/12/27

#### [Add][panel]Feature/alarm level and category list from api
**Purpose**:  
1. get alarm level and category list from api, and update alarmCode, alarmRange, alarmComplex
2. downward compatibility of 'Alarm Level'

**Test Case**:  
1. create profile -> add alarm range
2. after step 1: add alarm complex -> click sort level -> click sort category
3. after step 2: download dev alarm code template -> edit it -> upload new version of alarm code excel -> select alarm code -> click sort level -> click sort category -> save -> click sort level -> click sort category -> re-select alarm code -> make some change -> save parameter
4. after step 3: save profile
5. edit profile -> edit alarm range -> change language -> change editType -> make some change -> save
6. -> edit alarm complex -> change language -> change editType -> make some change -> save
7. -> edit alarm code -> change language(also check selectAlarmCodeDialog) -> change editType -> make some change -> save
8. re-edit , check
9. edit old profile -> edit old parameter which has alarm -> check downward compatibility of 'Alarm Level'

## 2019/12/25

### Tingwei
#### [Add][panel]Feature/controller switch validate user
**Purpose**:  
1. Feature/controller switch validate user

**Test Case**:  
Testing use '**Controller Switch - test user validate**' on https://dashboard-adviiot-ene-release.wise-paas.cn/. Set one dashboard which has this panel in srpFrame.
1. click switch panel button -> click 'Cancel'
2. click switch panel button -> click 'Submit' -> input email which has wrong format(angularJs default email validate) -> input correct email -> input wrong password -> submit -> input correct password -> submit
3. input email which role is not 'Admin' and correct password -> submit


## 2019/12/23

#### [Add][Notification Group]feature/notification-group-insert-variable-or-others-when-never-focused-editor
**Purpose**:  
1. In notificationGroup, insert variable or others to position at the end of text when user never focus editor even through the last char is \n.

**Test Case**:  
1. create notification group -> insert variable before focus editor
2. create notification group -> insert others before focus editor
3. edit notification group -> insert variable before focus editor
4. edit notification group -> insert others before focus editor

#### [Add][Menu]Menu has role which is not 'Admin', it can be viewed, but can't be edited and deleted.
**Purpose**:  
1. Menu has role which is not 'Admin', it can be viewed, but can't be edited and deleted.

**Test Case**:  
1. Make sure there are menus which has role is not 'Admin', chech if it can be edited and deleted.
2. Make sure there are menus which has role is 'Admin', chech if it can be edited and deleted.
3. Go to profile, make sure profile created by me, it allow to deleteㄡ
4. Go to profile, make sure profile created by Anonymous, it disallow to delete

## Sprint 2019/12/9-2019/12/20

## 2019/12/19

### Tingwei
#### [Add][SRPDashboard]use all language of M+ in srpDashboard
**Purpose**:  
1. use all language of M+ in srpDashboard

**Test Case**:  
1. edit one SRPDashboard in M+

## 2019/12/18
### Tingwei
#### [Fix][M+]axios response.interceptors of twinAxios, notificationAxios, and dashboardAxios call errorHandler()
**Purpose**:  
1. axios response.interceptors of twinAxios, notificationAxios, and dashboardAxios call errorHandler()

**Test Case**:  
1. click notificationGroup -> turn off wifi, edit one notification -> turn on wifi -> edit one notification -> click "Others..." -> turn off wifi, click "SummerIntern" -> turn on wifi, click "SummerIntern" -> click "Cancel" -> turn off wifi -> click "Save" -> turn on wifi -> click "Save"
2. go to profileManagement -> turn off wifi, edit one profile -> turn on wifi -> edit one profile ->  turn off wifi -> click "Save" -> turn on wifi -> click "Save"
3. go to menuManagement -> turn off wifi, edit one menu -> turn on wifi -> edit one menu ->  turn off wifi -> click "Save" -> turn on wifi -> click "Save"


#### [Add][M+ notificationGroup]When notificationGroup submit, replace tab to 4 space
**Purpose**:  
1. When notificationGroup submit, replace tab to 4 space

**Test Case**:  
1. edit one notification -> keyin tab both in front of sentence, inter of sentence, in the end of sentence -> save -> edit the notification -> check whether replacing work 

#### [Add][profile]Not reset "Rows Per Page" and "search" until objectProfile dialog closed.
**Purpose**:  
1. Not reset "Rows Per Page" and "search" until objectProfile dialog closed.

**Test Case**:  
1. edit one profile -> keyin in search input and select "All" as "Rows Per Page" -> edit one parameter -> click "Cancel" -> check parameterList-> edit one parameter -> click "Save" -> check parameterList

## 2019/12/17
### Tingwei
#### [Add][Menu Srpframe]replace public icon of menuManagement
**Purpose**:  
1. replace public icon of menuManagement

**Test Case**:  
1. go to menuManagement

#### [Add][Menu management]Extend all languages of m+ to srpframes
**Purpose**:  
1. Extend all languages of m+ to srpframes
2. If one language has no data, use data of en (e.g. old data no ja)
3. If one srpframe has language which isn't in M+, not change it. 
4. fetch data when ifEdit === true 

**Test Case**:  
1. create one srpframe in M+ -> save -> go to grafana check -> edit the srpframe which was just created -> go to grafana check
2. In grafana choose a srpframe which has no 'ja', add ```{"text": "Français", "abbr": "fr"}``` into System Config, then name it 'fr' -> save -> go to m+ -> edit 'fr' -> save -> go to grafana check if this srpframe has both 'ja' and 'fr'
3. set as home
4. In grafana choose a srpframe which has name 'fr', add ``` {"text": "한국어", "abbr": "ko"}``` into System Config -> save -> go to M+ -> edit 'fr' -> check netWork response JSON -> save  -> go to grafana check if this srpframe has both 'ja', 'fr', 'ko'
5. test duplicate srpName


## 2019/12/14
### Tingwei
#### [Add][SRP dashboard]Add Saas Composer panel
**Purpose**:  
1. Add Saas Composer panel

**Test Case**:  
1. create one 3.1 -> use wrong domain -> use right domain, but wrong org -> use right org -> edit new display -> add one display -> save -> go to grafana
2. edit 3.1 I created, save -> go to grafana

#### [Add][Work Order]feature/1217-summit, replace image
**Purpose**:  
1. replace image
2. change wording to "Intel Edge Computing Summit"

**Test Case**:  
1. go to #/index/createOrder?priority=0
2. go to #/index/tools click close, go to #/index/createOrder?priority=0

## Sprint 2019/11/25-2019/12/6

## 2019/12/06
### Tingwei
#### [Fix][SRP dashboard]1.Fix: edit dashboard not get data when enter page at first time 2.Fix: dialog can't not reopen when close dialog by press esc
**Purpose**:  
1. Fix: edit dashboard not get data when enter page at first time 
2. Fix: dialog can't not reopen when close dialog by press esc

**Test Case**:  
1. edit a dashboard when enter page at first time -> press "cancel" -> edit another dashboard -> check whether data was updated -> press "cancel" -> create dashboard -> press "cancel" -> edit a dashboard -> create a dashboard -> press "next" -> chech whether a new dashboard include new data -> press "cancel" -> edit a dashboard -> check data
2. create dashboard -> preess "esc" -> create dashboard

## 2019/12/05
### Tingwei
#### [Add][SRP dashboard]fix month  
**Purpose**:  
1. fix month

**Test Case**:  
1. check month

## 2019/12/04
### Tingwei
#### [Add][SRP dashboard]change wording and stepSetting between create or edit condition  
**Purpose**:  
1. change wording and stepSetting between create or edit condition 

**Test Case**:  
1. Create dashboard -> next -> check step-bar, dialog-title, buttons in footer
2. edit dashboard -> check step-bar, dialog-title, buttons in footer

#### [Add][SRP dashboard]add ene_worldmapcard_panel.vue
**Purpose**:  
1. add ene_worldmapcard_panel.vue

**Test Case**:  
1. Create one worldmap panel from M+, rename dashboard -> save -> preview dashboard -> edit it -> choose worldmapcard -> edit tag -> save -> preview dashboard

## 2019/12/03
### Tingwei
#### [Add][Work Order]Add "checkOrderAcceptable" , if "acceptable" true, priority 0 will be blocked.
**Purpose**:  
1. Add "checkOrderAcceptable" , if "acceptable" true, priority 0 will be blocked.
2. Add tools page in order to control acceptable status
3. Add Now printing Id and name in tools page

**Test Case**:  
1. go to index/createOrder?priority=0
2. local test, npm run dev, go to index/createOrder?priority=0&testOrderAcceptable=0
3. local test, npm run dev, go to index/createOrder?priority=0&testOrderAcceptable=1
4. local test, npm run dev, go to index/createOrder?priority=99&testOrderAcceptable=0
5. backend response acceptable:false, go to index/createOrder?priority=0&&test0Acceptable=1, form will show, create one order 
6. backend response acceptable:false, go to index/createOrder?priority=99, form will show, create one order 
7. go to index/tools?priority=0, click "Check Status" -> click "Close" -> go to index/createOrder?priority=0 -> go to index/tools?priority=0, click "Open" -> go to index/createOrder?priority=0

## 2019/11/29
### Tingwei
#### [Fix][Profile]Feature/fix profile saveas uppercase parameterlist title strong(pointed out in WeChat by Jack)
**Purpose**:  
1. wording "Save As..." toUpperCase() 
2. slotParameterToolBar dropdown sub-title use tag \<strong\>
3. Fix category input__inner height catch "< 80px" by element-ui, Add !important overwrite it.

**Test Case**:  
1. go to profileManagement-> edit profile which create "by Anonymous" -> check Purpose 1~3

#### [Add][Work Order]Feature/add date on pending orders
**Purpose**:  
1. add date on pending orders
2. add fake api testAddError

**Test Case**:  
1. goto #/index/home, check pending orders
2. npm run dev -> go to http://localhost:8080/#/index/createOrder?priority=0&testAddError=500 -> create one order -> check error popup

#### [Add][SRPDashboard]add languageArray and editLang to store/srpDashboard
**Purpose**:  
1. add languageArray and editLang to store/srpDashboard

**Test Case**:  
1. browser console.log input $("#app").__vue__.$store.state.srpDashboard

## 2019/11/27
### Tingwei
#### [Add]Feature/fine tune SRPDashboard css
**Purpose**:  
1. fine tune SRPDashboard css

**Test Case**:  
1. click "SRP Dashboards" -> select any templkate of water -> next

#### [Add]Alarm code excel add "ja"
**Purpose**:  
1. Alarm code excel add "ja"

**Test Case**:  
1. download alarm code templete -> check whether there are ja data -> upload ja excel -> open primitive parameter -> choose "日本語" -> choose "alarm code" -> click add alarm code -> check whether there are ja message -> save profile -> re-edit the profile which we edited before -> download exist "uploaded_alarm_code.xlsx" -> check whether there are ja data

## 2019/11/26
### Tingwei
#### [ Work Order ][Add][Fix]feature/validate-on-change-after-trim-and-name-preview-max-13 
**Purpose**:  
1. Validation is triggered by 'change' 
2. Name and email trim() when validate and send 
3. Preview name max length 13. If exceed 13 letters, leaked letters will be delete 
4. Fix more than one whitespace link up together ,but only show one whitespace on preview
5. Fine-tune some wording

**Test Case**:  
1. input name "a  .  al.'a.qq" -> check preview and whether show error.
2. input name "a  .  al.'a.q" -> check preview and whether show error.
3. input name "@#$%^" -> check error message
4. empty name -> check error message
5. empty email -> check error message
6. input email gather than 400 letters -> check error message
7. inpit email "a@a.com." -> check error message
8. input email "  a@a.com  " and name "  A.b'c d  " -> send -> check whether name and email in request were trim()


## Sprint 2019/11/11-2019/11/22
## 2019/11/20

### Tingwei
#### [ Add ]Upload profile excel - validate information required empty and only space
**Purpose**:  
1. Fix menu dialog press 'esc' can't open again
2. UploadDialog link color wrong

**Test Case**:  
1. create menu dialog -> press 'esc' -> recreate
2. Upload profile excel 

#### [ Add ]feature/upload-excel-error-report-add-cell-code
**Purpose**:  
1. Add cell code into Error report of upload excel
2. when upload profile excel, show symbols when detect parameterName has symbol error 
3. change excel validation error wordings 
4. fine-tune css of showErrorMsgDialog 
5. fix showErrorMsgDialog press "esc", then can't be open again

**Test Case**:  
1. parameterName or mode is empty
2. parameterName or mode is  only space
3. information required cell is empty
4. information required cell is only space
5. parameter required cell if empty
6. parameter required cell is only space
7. spanHi < spanLo
8. span Hi, spanLo, decimalPrecision is not number
9. wrong paramType and dataType
10. parameterName is duplicate or special symbol was detecting
[test case zip](https://trello-attachments.s3.amazonaws.com/5aaa069dc7238c7a7b49853d/5dd798c9abecb080825c9fba/4561806cff51bfa0e2aac5ff8c52a336/test-case-update_20191122.zip)

## 2019/11/20

### Tingwei
#### [ Add ]Upload profile excel - validate parameter required field whether empty or only space
**Purpose**:  
1. When upload profile object excel, validate parameter required field whether empty or only space.

**Test Case**:  
1. Upload excel which required fields are empty, test file on trello: [test_required_field_empty_object_profile_template.xlsx](https://trello-attachments.s3.amazonaws.com/5bd7d123e20df464aaf9854d/5dc4fa6bca595c2f5cd84a9f/821a0c582700fac24b58f4ed686d743d/test_required_field_empty_object_profile_template.xlsx)
2. Upload excel which required fields are only space, test file on trello: [test_required_field_only_space_object_profile_template.xlsx](https://trello-attachments.s3.amazonaws.com/5bd7d123e20df464aaf9854d/5dc4fa6bca595c2f5cd84a9f/e571cd3eb1f21b3349dc13a6f9da3cf0/test_required_field_only_space_object_profile_template.xlsx)

## 2019/11/19

### Tingwei
#### [ Add ]Upload profile excel - validate information required empty and only space
**Purpose**:  
1. When upload profile object excel, validate **"profileName, type, mode"** whether **empty**.
2. When upload profile object excel, validate **"profileName, type, mode"** whether **only space**.

**Test Case**:  
1. Upload excel which include "profileName, type, mode" are empty
2. Upload excel which include "profileName, type, mode" filled only space
3. Upload excel which include "profileName, type" are empty and "mode" filled only space


## 2019/11/18

### Tingwei
#### [ Add ][ Workerorder ]feature/change-coaster
**Purpose**:  
1. Change coaster image 
2. When just one image, not init swiper 
3. change style

**Test Case**:  
1. go to [createrOrder](http://portal-workorder-mplus-adviiot-ene-showcasemplus.wise-paas.com/#/index/createOrder?priority=0) -> key in name

#### [Add][ Fix ]Feature/upload parameter name empty validate
**Purpose**:  
1. Fix parameter name empty but pass when upload profile excel
2. Add prefix sheet on error list 
3. Add Formula do validation checkParamName(),but not check duplicate
4. Add : AlarmInformation and AlarmRules do validation checkParamName() ,but not check duplicate

**Test Case**:  
1. Upload excel include below":
 - the first parameter has empty parameterName
 - the another parameter has empty parameterName
 - the parameter has duplicate parameterName
 - the first formulaCode has empty parameterName
 - the another formulaCode has empty parameterName
 - the first AlarmInformation has empty parameterName
 - the another AlarmInformation has empty parameterName
 - the first AlarmRules has empty parameterName
 - the another AlarmRules has empty parameterName



## 2019/11/15

### Tingwei
#### [ Add ]Feature/setup dashboard dialog slot
**Purpose**:  
1. Add setupDashboardDialog.vue 
2. Add stepBar.vue

**Test Case**:  
1. go to #/index/deshboardlist -> click "SRP Dashboard(coming soon)" -> click next -> click previous -> click cancel

#### [ Fix ]Hide language tab in step select dashboard
**Purpose**:  
1. Hide language tab in step select dashboard

**Test Case**:  
1. go to #/index/deshboardlist -> click "SRP Dashboard(coming soon)" -> click next -> click previous

#### [ Fix ]upload
**Purpose**:  
1. Hide language tab in step select dashboard

**Test Case**:  
1. go to #/index/deshboardlist -> click "SRP Dashboard(coming soon)" -> click next -> click previous

## 2019/11/13

### Tingwei
#### [ Fix ]fix submit get error when description is empty and the first time create notification group-dev,fix submit get error when description is empty and the first time create notification group-0.80.009
**Purpose**:  
1. fix submit get error when description is empty and the first time create notification group

**Test Case**:  
1. refresh page -> create notification group, but don't fill description -> submit


## 2019/11/12

### Tingwei
#### [ Fix ]Fix category input height
**Purpose**:  
1. Fix category input height

**Test Case**:  
1. check category input height

#### [ Fix ]feature/fix-category-close-button-appear-circle-when-hover
**Purpose**:  
1. Fix delete button of category tag appear circle when hover
2. Fine tune position of delete icon
![](https://i.imgur.com/JiR48Qs.png)

**Test Case**:  
1. hover delete button of category tag

#### [ Fix ]feature/profile-upload-excel-guide-and-template
**Purpose**:  
1. Add upload guide excel xlsx 
2. Renew upload dialog and template excel xlsx

**Test Case**:  
1. click upload profile -> click "Guide" -> click "Template"
2. Multiple languages Test need for Wen update DB

#### [ Fix ]search insensitive in profile-management and menu-management
**Purpose**:  
1. search insensitive in profile-management and menu-management

**Test Case**:  
1. go to profileManagement -> search "a" -> search "air" -> search "airr" -> delete all letters in search text -> choose "Water" and "Pump" as category -> search "air" -> search "blo"
2. go to menuManagement -> search "de" -> search "Def" -> delete all letters in search input -> choose "A-Good_Company" and "SummerIntern" as category -> search "default" -> search "CHANGE"

## Sprint 2019/10/28-2019/11/08

## 2019/11/07

### Tingwei
#### [ Fix ]Add ellipsis(...) class on formula cell of parameter list
**Purpose**:  
1. Add ellipsis(...) class on formula cell of parameter list

**Test Case**:  
1. input many words in formula

#### [ Fix ][ Workorder ]fix pending order startTime and endTime lack minute when minute is zero
**Purpose**:  
1. fix pending order startTime and endTime lack minute when minute is zero

**Test Case**:  
1. In local dev, go to /#/index/home?priority=0&testPendingOrders=1 
2. In https://portal-workorder-mplus-adviiot-ene-showcasemplus.wise-paas.com/#/index/home?priority=0, document.getElementById('app').__vue__.$store.commit('MUTA_SET_PENDING_ORDERS_DATA', [...here put testData Array copy from mock])
3. check realTime in https://portal-workorder-mplus-adviiot-ene-showcasemplus.wise-paas.com/#/index/home?priority=0

## 2019/11/6

### Tingwei
#### [ Add ][ Workorder ]Name validate A-Z'. \'\‘\’, and replace \‘\’ as ' before send and preview
**Purpose**:  
1. Name validate A-Z'. \'\‘\’, and replace \‘\’ as ' before send and preview

**Test Case**:  
1. keyin over length > 13
2. keyin '‘’ .
3. keyin other special char
4. pass validate -> submit -> check JSON

#### [ Add ][ Workorder ]Feature/carry all query when click "Create Order" and "Cancel"
**Purpose**:  
1. carry all query when click "Create Order" and "Cancel"

**Test Case**:  
1. #/index/home?orderId=XXX&priority=0 -> click createOrder -> click cancel

#### [ Add ][ Workorder ]Feature/add-priority
**Purpose**:  
1. add priority=0/99 after url
2. add priority:0/99 when submit createOrder API
3. If priority in url is empty or invalid, go to #/index/home?priority=0

**Test Case**:  
1. #/index/home?priority=0 -> click createOrder -> create one order -> check if #/index/home?priority=0&orderId=XXX -> click createOrder -> click cancel
2. #/index/home?priority=99 -> click createOrder -> create one order -> check if #/index/home?priority=99&orderId=XXX -> click createOrder -> click cancel
3. #/index/home?priority=0 -> click createOrder -> keyin url #/index/home?priority=99 -> create one order -> check if #/index/home?priority=99&orderId=XXX
4. #/index/home?priority=66(or other number, letter) -> chech if change to #/index/home?priority=0

## 2019/11/5

### Tingwei
#### [ Fix ]Feature/fix-menu-tree-css-bug-in-dev
**Purpose**:  
1. fix-menu-tree-css-bug-in-dev

**Test Case**:  
1. check menu tree in release

#### [ Fix ]fix menu-tree more icon
**Purpose**:  
1. fix menu-tree more icon in 0.80.008

**Test Case**:  
1. check menu tree in 0.80.008 release

#### [ Add ]Feature/api-profile-proxy
**Purpose**:  
1. use api-profile-proxy instead of apm

**Test Case**:  
1. open #/index/profileManagement

## 2019/10/30

### Tingwei
#### [ Add ][ WorkOrder ]Feature/email keyboard and fixed header top
**Purpose**:  
1. Show email key board when focus email field
2. Fix Header on the top of screen

**Test Case**:  
1. use mobile input email
2. go #/index/home

## 2019/10/30

### Tingwei
#### [ fix ]Feature/fix-upload-excel-decimal-etc-0-bug
**Purpose**:  
1. Upload object Template, decimalPrecision, dataLeptDays, maxChangeRatePerMin, recRate, calcRate fill 0, but after parse , them were filled default Value. All of them should be filled 0.

**Test Case**:  
1. Edit excel that decimalPrecision, dataKeptDays, maxChangeRatePerMin, calcRate, recRate fill 0 -> save excel -> upload -> edit again, check if 0 -> save profile -> check request Json if 0, and recRate is "0" of string type.

#### [ fix ]Feature/fix-edit-calc-decimal-etc-0-import-bug
**Purpose**:  
1. When decimalPrecision, dataKeptDays, maxChangeRatePerMin, calcRate save as 0. Then edit again, data show default value instead of 0. Those fields should be 0.

**Test Case**:  
1. decimalPrecision, dataKeptDays, maxChangeRatePerMin, calcRate input -> save -> edit again, check if 0
  
#### [ add ][ fix ][ workorder ]Feature/api availability and current order
**Purpose**:  
1. esttime api
2. pending orders api
3. Replace name of pending orders with *, exclude the first and the last char

**Test Case**:  
1. #/index/home -> check Est. Waiting Time
2. #/index/home -> check Pending Orders
3. For check Purpose.3 -> run dev -> #/index/home?testPendingOrders=1, it will use mocks with testing Json 
```
[
        {
          orderId: 10,
          name: 'Jack',
          startTime: 1571195283,
          estEndTime: 1571195583,
          imageId: 5,
        },
        {
          orderId: 11,
          name: 'Alice',
          startTime: 1571195583,
          estEndTime: 1571195883,
          imageId: 5,
        },
        {
          orderId: 12,
          name: 'Tingwei.Lin',
          startTime: 1571195583,
          estEndTime: 1571195883,
          imageId: 5,
        },
        {
          orderId: 13,
          name: 'QQ',
          startTime: 1571195583,
          estEndTime: 1571195883,
          imageId: 5,
        },
        {
          orderId: 14,
          name: 'A',
          startTime: 1571195583,
          estEndTime: 1571195883,
          imageId: 5,
        },
        {
          orderId: 14,
          name: 'B.',
          startTime: 1571195583,
          estEndTime: 1571195883,
          imageId: 5,
        },
        {
          orderId: 14,
          name: '..',
          startTime: 1571195583,
          estEndTime: 1571195883,
          imageId: 5,
        },
      ]
```
4. #/index/home -> stop wifi and 4G -> check if error message popup -> open wifi and 4G -> check if error message not popup
### Alisa
#### [ fix ] 130% ↓ Current Level and value position, when process / max 100% ↑
#### [ fix ] line reduction when > 100%, fix exceptedfontSize error when switch to 200% ( use undefined value ), fix 140 ↑ Current Level and value position, when process / max 100% ↑, fontColor


## 2019/10/29
### Alisa
#### [ add ] TVdemo
**Purpose**: 
- 製作給 Jack demo 的頁面

**Test Case**: 
- 點擊按鈕 -> 切換對應的圖片

### Tingwei
#### [ add ][ fix ][ workorder ]Feature/api availability and current order
**Purpose**:  
1. availability api
2. current order api
3. fix availability color go wrong when renew data many times
4. Add fake-axios-server.js for testing api by axios-mock-adapter in dev mode(npm run dev). 

**Test Case**:  
1. #/index/home -> check current order
2. #/index/home -> check availability value and color
3. #/index/home -> stop wifi and 4G -> check if error message popup -> open wifi and 4G -> check if error message not popup
4. #/index/home -> wait for about 15~20 minites -> check if availability renew
5. In dev mode(npm run dev), add '?testCurrentOrder=na' or '?testCurrentOrder=[number]' after url.

## 2019/10/28
### Alisa
#### [ add ] default language for delete dialog, if include language tabs, change the language form system to tab
**Purpose**: 
- 修正各種彈出的 dialog 語言沒有跟隨著外層 dialog 語言 tab 更改的問題

**Test Case**:  
- 打開 profile，上傳 alarm code excel 同時 check 語言是否與 tab 相同，上傳成功後刪除 alarm code excel ，並檢查刪除時的語言是否有跟隨 tab，切換至下一個 tab 重複動作
- 上傳 alarm code excel，切換至不同語言的 tab 做刪除的動作，check 刪除的語言是否有跟隨 tab
- 故意傳不接受的類型或過大的檔案檢查文件上傳錯誤的訊息語言是否有跟隨 tab 更換
- 圖片的部分與上述 alarm code excel 的測試手法相同
- profileManagement 或 menuManagement 刪除 card -> 跳出 delete dialog -> 取消或確認 -> 切換系統語言反覆測試
- 開啟有 parameter 的 profile 點選刪除 parameter -> check 語言跟隨 tab -> 取消或確認 -> 切換 tab 反覆測試
- 開啟有 image upload 的 dashboard 或 profile -> 確認上傳語言-> 確認 message 語言 -> 確認刪除語言
#### [ fix ] warter profile upload error, if only one rule, bound = 1, for 0.80.007
**Purpose**:  
**Test Case**:  
- upload warter profile -> show create object profile dialog -> save -> confirm that does the item you just uploaded exists in the profile management card

### Tingwei
#### [ add ][ workorder ]Feature/error message and import element ui partially
**Purpose**:  
1. Add default error message popup
2. Minify production file size by change importing components of element-ui partially of importing globally .

**Test Case**:  
1. #/index/createOrder -> input duplicated email
2. #/index/createOrder -> stop wifi and 4G -> check if error message popup -> open wifi and 4G -> check if error message not popup
3. #/index/home -> stop wifi and 4G -> check if error message popup -> open wifi and 4G -> check if error message not popup
4. npm run build -> check file size

## Sprint 2019/10/14-2019/10/25
## 2019/10/25

### Alisa
### [ add ] date format options, class level options, unit options, x axis time, y axis unit and max, min value change
**Purpose**:  
**Test Case**:  
## 2019/10/25

### Tingwei
#### [ add ][ Fix ][ workorder ]Feature/api get history order count and fine tune style
**Purpose**:  
1. Renew get history order count from api when 
- enter /#/index/home , 
- every polling period(10 sec now), 
- change visibility from other app to /#/index/home and Date.now() - the last renewDataTimestamp > polling period
2. Fix Avaibility draw wrong color in red and yellow threshold

**Test Case**:  
1. for purpose 1
- enter /#/index/home
- add new order in other device or browser -> chech original device/browser, chech original device/browser after polling fire
- use mobile browser, enter **/#/index/home?showTestTime=1&testBarChartAutoAdd=1**, there is a timer in the bottom of page(renew every polling period) -> change to other app -> waiting for about 15~20 minites -> add new order in other device or browser -> chech original device/browser, **because response data isn't renew realtime**, we use **testBarChartAutoAdd=1 to add 1 on the value of now time bar when every polling Fire** , so we ccould check if chart is renewing
2. for purpose 2, because no availability response, use testAvailability=\[number\] to test
- enter url /#/index/home?testAvailability=30
- enter url /#/index/home?testAvailability=49
- enter url /#/index/home?testAvailability=50
- enter url /#/index/home?testAvailability=74
- enter url /#/index/home?testAvailability=75
- enter url /#/index/home?testAvailability=100

## 2019/10/24

### Tingwei 
#### [ add ][ workorder ] api number waiting
**Purpose**:  
1. Renew Peoele Ahead from api when 
- enter /#/index/createOrder , 
- every polling period(10 sec now), 
- change visibility from other app to /#/index/createOrder and Date.now() - the last renewDataTimestamp > polling period

**Test Case**:  
- enter /#/index/createOrder
- add new order in other device or browser -> chech original device/browser
- use mobile browser, enter /#/index/createOrder?showTestTime=1, there is a timer in the bottom of page(renew every polling period) -> change to other app -> waiting for about 15~20 minites -> add new order in other device or browser -> chech original device/browser, check if renew and timer restart

## 2019/10/23

### Alisa
#### [ add ] import echart and implementation
**Purpose**:  
**Test Case**:  

### Tingwei 
#### [ add ][ workorder ] create order api (has pushed to space)
**Purpose**:  
1. create order api
2. validate name A-Za-z.,auto toUpperCase in preview and submit 

**Test Case**:  
- input name include lower case
- submit -> check send request
- input name was created

## 2019/10/18

### Alisa
#### [ fix ] fix data assign error, remove show error when create, show the N/A when no data
#### [ fix ] when datapoint empty, stop draw the relative item
**Purpose**:  
**Test Case**:  

## 2019/10/17

### Tingwei 
#### [Fix] add loading when fetchData() in profileManagement
**Purpose**:  
add loading when fetchData() in profileManagement  
**Test Case**:  
- refresh browser in Profile Management page
- from other path to Profile Management page
- delete profile
- create profile -> save
- edit profile -> save

### Alisa
#### [ add ] when data list empty, show the N/A on panel, tweak class style
#### [ fix ] binding error add onRender()
#### [ fix ] 1. stop draw when no data list or no select any other switch target, 2. remove the extra throw error function, 3. move back the elem from this, 4. make sure color switching works normally
#### [ change ] upgraded version, update date, grafana version and author
#### [ fix ] text delay
**Purpose**:  
**Test Case**:  

## 2019/10/16

### Alisa
#### [ fix ] show throwError, multiple control items interfere with each other
**Purpose**:  
**Test Case**:  

#### [ fix ] the previous item has a residual value of bound
**Purpose**:  
**Test Case**:  

## 2019/10/15

### Alisa
#### [ add ] upload image and upload alarm code excel support the selectLang incoming
**Purpose**:  
1. upload excel language follows the change of choice when open (it changes followed by system language changes before)
2. upload image language follows the change of choice when open (it changes followed by system language changes before)
 
**Test Case**:  
- open profileManagement -> click create profile -> click image upload and check language -> done -> change tab -> delete image and check the dialog language -> upload image check language
- open profileManagement -> ...這個要從 object 那邊有給值才可以測

## Sprint 2019/09/30-2019/10/09
## 2019/10/9

### Tingwei 
#### [Add] sort profile card
**Purpose**:  
1. sort profile-card by name, created date, owner
2. order by asc, desc

**Test Case**:  
- enter page -> confirm if sort by Name, Asc(A -> Z) -> Desc -> Asc
- sort Cerate Date –> chech default Desc(new -> old) -> click Asc
- sort Owner –> chech default Desc(My -> Anonymous) -> click Asc
- sort name->  chech default Asc(A -> Z) -> click Desc -> Asc

### Alisa 
#### [ change ] dialog style as zeplin definition
- add description below title
- add padding, margin as zeplin definition
- hide old scorlling bar use new style when content overflow

#### [ add ] error icon, frame
- add icon before error message

#### [ change ] functional check parameterName, dataType, paramType, value
- the code that check parameter functionalization
- use old function code to check

## 2019/10/8

### Tingwei 
#### [Add] collapse menu tree
**Purpose**:  
1. Collapse menu tree by button
2. Auto expand when add page or folder into collapse item 
3. drop item into collapsed item
4. If folder no item, hide button of collapsed controller

**Test Case**:  
- click collapse button
- drag item and drop into expanded item
- drag item and drop into collapsed item
- add page into collapsed item
- add folder into collapsed item
- drap item, drop into empty item
- drap item from parent which contains only the item and drop to other place 

#### [fix] deadbandValue => float, almDelay and almRestoreDelay => positive integer
**Purpose**:  
1. deadbandValue => float
2. almDelay and almRestoreDelay => positive integer

**Test Case**: test below both in primitive and calculation  
- deadbandValue input floating number
- almDelay input not positive integer
- almRestoreDelay input not positive integer
- almDelay input positive integer -> save
- almRestoreDelay input positive integer -> save 

#### [fix] fix multiple srpframe validate pass but save in invalid basinInfo case when editType is menu
**Purpose**: Fix multiple srpframe validate pass but save in invalid basicInfo case when editType is menu

**Test Case**:   
- create srpframe -> not finish basicInfo -> click menu tab -> save
- create srpframe -> duplicate srpframe name -> click menu tab -> save


#### [add] Scroll menu-tree
**Purpose**: Scroll menu tree

**Test Case**:   
- munu not overflow
- menu empty
- menu overflow

### Alisa 
#### [ Add ] show error message dialog
- 上傳包含錯誤的 excel，檢查到錯誤時會 show dialog，並列出錯誤的 row(還沒翻譯)
- 
#### [ Fix ] fix tips message
- 更正報錯的訊息

## 2019/10/7

### Alisa 
#### [Add] Parameter Name check && [ Change ] parameter name special char check
- 上傳正常 excel 可以通過並顯示
- 上傳有重複 Parameter Name 的 excel，提示在第幾列出現重複
- 上傳 Parameter Name 打了非法字元的 excel，提示在第幾列出現非法字元輸入
- 上傳有單個/多個 Parameter Name 為空白的 excel，提示在第幾列 Name 值為空白
- 上傳無 Parameter 的 excel，可以打開並呈現 object profile information

## 2019/10/4

### Tingwei 
#### [Add] Let scroll bar style of profile be same as select option list of itself
**Purpose**:  
Let scroll bar style of profile be same as select option list of itself  
**Test Case**:
- check layout

### Tingwei 
#### [Add] fix menu id: no id, duplicate id, wrong type of id
**Purpose**:  
1. When item has no id or wrong type of id, create new id 
2. When item has same id, add '\_mPlusSecId\_\$\{timeStamp\}' after id or renew the number after '_mPlusSecId_'. Example, Find same 'a' -> replace as 'a\_mPlusSecId\_\$\{timeStamp\}'. Find same 'a_mPlusSecId_12345678' -> replace as 'a\_mPlusSecId\_\$\{timeStamp\}'  

**Test Case**:
- add JSON of configJs.menu.list on dashboard, include: 
1. same id
2. no id
3. wrong data type of id (number, array, object, null)
4. same id which has suffix id by '\_mPlusSecId\_\$\{timeStamp\}'
[Test json of configJs.menu.list](https://api.myjson.com/bins/16apy7)


## 2019/10/3
### Tingwei 
#### [Add] category sort by name
**Purpose**: category sort by name  
**Test Case**:
- add some category start from different leading letter.
- add some category which include different upper lower case but start from same leading letter.

#### [Add] validate 'Uncategorized' in category, validate maxlength:64 , validate profileCategorySpecialChar  
**Purpose**: validate profile category in cases: maxlength, special char, reserved word "Uncategorized"  
**Test Case**:
- add category which has length > 64 -> show error -> click tab or save -> check error message in subtitle of dialog -> delete error category -> click tab or save
- add category which has special char -> show error -> click tab or save -> check error message in subtitle of dialog -> delete error category -> click tab or save
- add category which is named 'Uncategorized' -> show error -> click tab or save -> check error message in subtitle of dialog -> delete error category -> click tab or save
- make any error of category -> cancel -> create profile -> check if error status was reseted

### Alisa
#### [ add ] drag from outer, folder in folder, page in folder, drag into multilevel folder, block and pass
- the outer folder can drag into the other folder, which already has page or folder
- when it drag into it will be judgment the level that some folder already has folder, can't be drop more folder, only accept folder in folder, folder in folder in folder will be reject
- page will be drop to any level folder
**Test Case**:
- 三層(Folder->Folder->Page)只能在第一層移動位置
- 二層(Folder->Folder)只能在第一層移動位置
- 二層(Folder->Page)可以移動進去第一層Folder, 可以在第二層內移動位置
- 一層(Folder)可以在第一層移動, 可以移動進去第一層Folder, 可以在第二層內移動位置
- 一層(Page)可以在第一、二、三層移動與放置
- 在Folder下新增下一層Folder or Page, 確認新增後Target有沒有移到新節點&顯示空白設定頁面讓使用者輸入
- 移動位置後->按Save->再次開啟Menu->確認是否Tree位置與Save內容相符
- 移動位置後->切換語言->按Save->再次開啟Menu->確認是否Tree位置與Save內容相符


## 2019/10/1
### Alisa
#### [ change ] inner layer drag ( 2 layer folder ok , 3 layer only page)
- drag inner folder and page can move, the folder that in the folder can't be drag into next level folder, but page is ok to drag into.

## 2019/10/1
#### [Add] multiple-srpFrame
**Purpose**: multiple srpFrame create, edit, delete, rename, duplicate name check 
**Test Case**:
- create multiple srpFrame -> save -> check on menuManagement
- create multiple srpFrame -> same srpNamename, but different upper or lower case -> save
- edit srpframe -> same srpNamename, but different upper or lower case -> save
- edit srpframe -> not change srpName -> save
- edit srpframe -> rename -> save
- delete srpframe

#### [Add] 1. Add sync menu tree 2. new menu tree layout
**Purpose**: sync menu tree in not first lang
**Test Case**:
- create srpframe -> check new layout when no menu data -> change menu data in first -> other lang -> sync -> start sync
- edit srpframe -> change menu data in first -> other lang -> sync -> cancel
- edit srpframe -> change menu data in first -> other lang -> sync -> start sync
- edit srpframe -> delete all menu in one lang -> other lang -> check new layout when no menu data

## Sprint 2019/09/16-2019/09/27
## 2019/09/27
### Tingwei 
#### [fix] Fix alarm code xlsx already exist, never reupload it when edit profile. When save, there a bug that we send undefined file to server. Fortunately, server reject this request. Fix it for safe in the future.  
**Purpose**: 修正編輯已經上傳alarm code excel，但編輯時沒有重新上傳時儲存，會送file:undefined 到後端，response 如下
![](https://i.imgur.com/F1OS66e.png)幸運的是後端並未儲存，但是還是修正掉比較安全。沒重新上傳不應該發出上傳request。
**Test Case**:
- create profile -> upload alarm code excel -> 儲存後打開確認檔案
- edit profile -> reupload alarm code excel -> 儲存後打開確認檔案
- edit profile -> not reupload alarm code excel -> 儲存 -> 確認network 不應該發出上傳request
- edit profile -> delete file -> 儲存後打開確認檔案是否已刪除
- save as profile -> 確認檔案是否與來源相符合


## 2019/09/26
### Alisa
#### [ fix ] tweak alarm ruleInfo struct (move deadbandValue, deadbandType, alarmDelay, alarmRestoreDelay, counter, schedule, rulepolicy, lastingTime into and add threshold )
- 開啟舊的 profile, 已有輸入值的 key assign 值給內層新的 key 並顯示
- 舊的 profile 若沒有既有的 key 則 assign default 給該新 key
- upload 或 新增 profile, 皆以新 key 帶入，不會有舊 key(上一層)
- 切換 export 的時候將原本 input 會轉為 string 的值 parseInt 轉換成數字 (由於 validate 的關係顯示為 string, 僅儲存至後端時才轉)
- 如果舊 key 的值為 ""，則新增新 key 時帶 default 值
- 確認Create / Edit按下SAVE後, ruleInfo內都有帶正確格式
![](https://i.imgur.com/wFWYa1o.png)

### Tingwei 
#### [fix] Fix alaem complex: error was pass on other page.  
Purpose: 現在頁面驗證不到，按 save/tab 會展開為全部都在同一頁面，進行驗證  
Test Case:
- 新增rule -> 不填寫 -> 切換到下一頁 -> 按save
- 設定同名 -> 切換到下一頁 -> 按save 
- 新增rule -> 不填寫 -> 切換到下一頁 -> 按其他編輯項目
- 設定同名 -> 切換到下一頁 -> 按其他編輯項目
- 新增rule -> 不填寫 -> 切換到下一頁 -> 按其他語言
- 設定同名 -> 切換到下一頁 -> 按其他語言
追加：修正profile 上傳 alarm code 的Label: File Name沒有多語言，切換語言即可測試 

## 2019/09/25
### Tingwei
#### [fix] fix alarm complex add on the first row
Purpose: new rule is added at the first row, clear sort, clear validate, clear search.  
Test Case:
- add rule 
- change page -> add rule
- search -> add rule
- do something in order to show a error -> add rule


#### [Add] Add object profile public/private new layout
- create profile，看預設值是不是public
- 確認profile public/private new layout
- 確認 owner 自己，public 狀況下 -> profile manegement layout 
- 確認 owner 自己，private 狀況下 -> profile manegement layout 
- 確認 owner 不是自己 -> profile manegement layout
- Menu management new layout 換 icon 沒加 for，要在 feature/multiple-srpframe 確認

#### [fix] fix calcRate multiply 1000 when save, divide 1000 when edit
- create calculation -> save -> check JSON in Network
- edit calculation -> save -> check JSON in Network
- upload object profile excel which include four kinds of calculation: 
 1. has calcRate , type discrete
 2. has calcRate , type number
 3. calcRate is null, type discrete
 4. calcRate is null, type number
  -> save -> check JSON in Network
  
## 2019/09/24
### Tingwei
#### [Fix] fix calculation always switch to formula in edit mode
- 編輯 calculation 點擊 save，原本一定會被切換到 formula，修正為不會


### Alisa
#### [ change ] update page, add first & last button and input page by user
- slotParameterToolBar 的 page 增加可以以 input 的方式跳頁
- 如果 input 輸入非數字則顯示紅框，並跳至第一頁
- 若輸入是有小數點位數之數字則會去除小數點，無條件捨去
- 若輸入超過總頁數則會跳至總頁數(最後一頁)
- 如輸入負數，則跳至第一頁
- 新增跳至第一頁及最後一頁的按鈕，點擊可轉跳，如果已經是第一頁或最後一頁，則按鈕禁止點擊
- 現在開始，按鈕的顏色會隨著 normal、hover、disabled 做變換，不會只要可以點擊就都是藍色
## 2019/09/23
### Tingwei
#### [Add] Auto focus formula editor when change editType to formula
- 切換到 formula 自動 focus (與謝榮討論後這樣對使用者比較友善，直接插入函式庫比較方便)

#### [Add] validate if name duplicate case insensitive
- object profile name create 驗證名稱輸入與別的profile相同名稱，並修改大小寫驗證
- object profile name edit 驗證名稱大小寫與別的profile相同名稱，並修改大小寫驗證，與自己原本的舊資料相同應該要可以通過
- alarmComplex rule name 驗證輸入與相同名稱，並修改大小寫重複驗證
- notificationGroup create 驗證名稱輸入與別的相同名稱，並修改大小寫重複驗證
- notificationGroup edit 驗證名稱輸入與別的相同名稱，並修改大小寫重複驗證，與自己原本的舊資料相同應該要可以通過
- srpName 要測試 feature/multiple-srpname
##### 追加一些修正：
- 修正 notificationGroup edit mode，notification Type 把勾勾全部取消不會出現紅色錯誤訊息，測試方式：編輯notificationGroup -> 把 notification type 勾全部取消
- 修正 notification type error message 一開始就出現，測試：編輯notificationGroup -> cancel or save -> create notificationGroup
- 修正 notoficationGroup edit mode，當 name 跟 description 有值時，不會再被複製到其他語言，因為現在只有編輯一種語言(en)，所以應該每次儲存都複製。驗證方式：編輯notificationGroup -> 修改 name 與 description -> 驗證JSON或在首頁切換與語言查看notificatin group list
##### Test by ITsung
- Alarm Complex 新增同名rule name, 並前後輸入空格->按save->文字會被trim但紅色框框會消失(但左上角紅字還在)->再按一次save, 紅色框框才會正常跑出
### Alisa
#### [ change ] name trim
- profile name ，在按下儲存時去除前後空白
- alarm complex，在 validate 時去除前後空白
- alarm range，在 validate 時去除前後空白
- notification group，儲存的時候去除各語言 name 前後空白
- menu dialog 的 dashboard title, west title, east title，儲存的時候去除各語言 title 前後空白
- menu dialog 內 menu page title 和 folder title 在 blur 時去除前後空白

## 2019/09/20
### Alisa
#### [ change ] no disabled add rule at other lang tab
- alarm complex 切換 tab 時不阻止它新增 rule
#### [ fix ] validate only when there is none of item in the language
- 一開始就先在 basic 切換其他語言，再點選 alarm(警報) 選擇 alarm complex，要切換到其他語言或 save 時 message 會顯示需要輸入(只有在沒有任何一個語言有填入 message 時觸發)
#### [ fix ] message * mark, still check message validate when language is not first lang
- 打開 alarm range，每個語言 header message 上要有 *
- 如果一開始不是在預設語言輸入，只在其他語言輸入 message，直接切到 basic info 點儲存，會複製有輸入語言的 message
- 如果一開始不是在預設語言輸入，只在其他語言輸入 message，這個時候可以允許在不同語言tab之間切換 (還不會複製，因為有一種語言已經輸入了，可判斷為正常)

## 2019/09/19
### TingWei
#### [Add] Modify new layout of menu-dialog with new availability design.
- new layout
- change availability and save, double check
- 如果要看警報通知設定 layout，因為目前關閉，要修改 dashboard.vue turnOnCritialAndWarningSetting 為 true

### Alisa
#### [Add] Add alarm deadband & delaytime input
- 新增deadband type / deadband value / delay time / restore delay time四個欄位
- 開啟舊的 profile 確保 component 不會壞掉 (開啟若沒有key, 預設為空字串)
- 儲存後開啟，值仍然存在
- 新增一個range alarm / complex alarm, 這四個欄位有預設值
- 新增一個code alarm, 只顯示delay time / restore delay time且這兩個欄位有預設值
- 選擇 none 的時候將已輸入/選過的值復原成預設值
- 切回 basic info 時，如果是 alarm 是 complex 的情況下，可以從number 切到 discrete ，並保留值
- 測試 deadband value / delay time / restore delay time 輸入一般文字要做提醒只能輸入數字，如果沒有輸入要輸入

## 2019/09/18
### TingWei
#### [fix] fix image not reupload with new imgId and fix alarm code xlsx not reupload when save as profile
- alarm code xlsx save as 後應該出現在新的profile
- 刪除 alarm code xlsx 後 save as 不應該刪除複製來源的alarm code xlsx
- 修改 alarm code xlsx 後 save as 不應該修改複製來源的alarm code xlsx，並且新的要使用新上傳的
- save as 時圖片要重新上傳(new property.imgId)，複製出來的 profile 刪除，不應該刪除來源profile的圖片
- 刪除 image 後 save as 不應該刪除複製來源的image
- 修改 image 後 save as 不應該修改複製來源的image，並且新的要使用新上傳的
- Save as後, 編輯該profile, 刪除圖片->直接新增圖片->Save, 圖片需要有被正確新增
- 
## 2019/09/16
### TingWei
#### [fix] fix default editLang of dialog not first lang of lang-tabs
- 去用戶管理，自己帳號修改default語言為非英文(以前預設都會顯示英文)，打開以下dialog應該為default語言：0.51 profile, 0.51 三種 parameter
#### [Add] Integrate formula check when save in other editType from version of rong.xie
- create calculation, 在 basicInfo 就按save，應該要切換到 formula 並且formula 出現紅框與訊息
- formula 編輯檢核錯誤會顯示錯誤訊息
- 編輯 formula 切換tab 會進行檢核
- 編輯 formula save 會進行檢核
- 因為中間與謝榮的分支交錯了，所以也可以看看他的，不過merge 也會把他的 merge 進去

## Profile
### Overall
#### [fix] apm domain undefined
- 放置在其他平台的M+也能正確取得Profile
#### [Add] add owner when no owner in profileData
#### [Add] fetch summary of profile (profile list) by owner (all) and not owner (public)
- 新增一筆private的Profile
- 切換到另一個帳號
- 此時應該看不到剛剛新增的那筆private profile
#### [Add] profile duplicate name validate
- 新增一筆Profile與任何一個public profile同名，應該不允許SAVE
- 新增一筆Profile與自己已存在的Private profile同名，應該不允許SAVE
- 新增一筆Profile與別的帳號的Private profile同名，應該不允許SAVE
### Dialog
#### - Delete Alarm Code file是否有清store
- 隨便開啟一個有Alarm code file的profile
- a. 刪除Alarm Code file -> 直接create一個parameter->選Alarm Code Alarm -> 開Select Alarm Code dialog -> 裡面應該要是空的
- b. Save Profile -> 開啟這個Profile -> create一個parameter->選Alarm Code Alarm -> 開Select Alarm Code dialog -> 裡面應該要是空的
#### - [Fix] get alarm code json not complete
- Edit一個已存在的Object, 若Alarm Code List超過20筆，仍要回傳完整List檔案
#### - [Fix] sort download alarm code xlsx match apm
- 檢查column順序是否有跟template一樣

### parameter
#### - 0.50 Calculation切換到別的語言不能Save
- 隨便開一個Object, Add一個Calculation
- Datatype選discrete
- 切換非第一個tab的語言
- 按Save 修正後應該要可以存檔
#### - [fix] unit to engineering_unit
- 翻譯檢查

#### - [update] Calculation can import itself as codesource
- 檢查code source dialog有沒有出現自己的parameter name
- 修改parameter name, 再次打開dialog也要能看到修改後的name

#### - [update] 0.51 alarm complex
- 檢查sort
- 檢查fuzzy search
- 檢查分頁
- 檢查SAVE parameter -> open parameter
- 檢查SAVE parameter -> Save Object -> Edit Object -> Edit該parameter
#### - [fix] wrong rules length, when loading alarm complex
- 檢查Parameter List上顯示的alarm complex個數是否符合
#### - [update] 0.51 validate alarm range
- 檢查H的值 > HH的值
- 檢查LL的值 > L的值
- 檢查(LL的值 or L的值) > (H的值 or HH的值)
- 檢查有填Number 沒填category, message
#### - [fix] alarm code list validate when save and reset validate of it when close dialog
- 忘了.................
#### - [fix] select alarm code dialog multi lang
- 忘了.............

#### - [Update] alarm code total count after 'Save' in button
- 看看選擇的個數是否與save旁邊的數字一致

#### - [Update] integrate basicinfo validate
- 檢查沒打parameter
- 檢查必填欄位沒填
#### - [Update] alarm complex validate
- 檢查rule name重複
- 檢查必填欄位沒填
- 檢查rule value不是數字
- 檢查超出分頁顯示錯誤(展開)
#### - [Update] error message on dialog subtitle 
- 檢查complex / range / code alarm, basic info, formula出錯時是否有在dialog上方subtitle顯示錯誤訊息
- 
#### - [fix] validate formula/complex alarm, 出現重名錯誤時展開為1頁, 新增一筆, 又會跳出分頁的問題
- 新增11筆資料(兩個分頁)
- 故意填入兩筆名字一樣的alarm name / code name
- validate後變成一頁 顯示錯誤的地方
- 在還沒修正前, 先新增一筆
- 此時不應該跳回兩個分頁, 應維持一個分頁且顯示錯誤位置
## Notification Group
#### - [fix] change select placeholder to grey-dark
- 檢查樣式是否有變為placeholder跟顏色為grey-dark
#### - [fix] notification lack mutiple language when show at the first time
- Create Notification Group不給存的問題，解決後，應該第一次就可以存檔
#### - [Update] Add notification group insert org, object, parameter as pure text.
- 只選到org or object or parameter要能save並填純文字
#### - [fix] In Edit mode, cannot modify alarm group/alarm user group
- 進入編輯模式，測試是否可以切換alarm group / alarm user group並SAVE
#### - [fix] fix alarm complex equal
- 確認＝改為==

## Menu Management
#### - Edit Menu Site新增第一個Folder, 若打字後按Enter, 畫面會回到主頁
- 開一個空的menu
- 新增一個Folder
- 隨便在name的地方輸入Enter
- 修正後應該不能跳轉頁面

#### - [add] add select of sys.configJs.loginLogout
- 設定為public -> 檢查dashboard的sys.config有沒有加 "loginLogout" : false
- 設定為private -> 檢查dashboard的sys.config有沒有加 "loginLogout" : true

#### - [fix] menu management name of undefined when no mplus org in navData
- 若該user手動被加到dashboard的其他org去, 但這個org並沒有對應的M+ org 則不應該顯示

#### - [update] Support select dashboard from WISE-PaaS Dashboard List directly
- 新建三層Group
- 到WISE-dashboard介面, 在每層group的資料夾下新增一張dashboard
- 回Menu Management, 開啟選擇dashboard的dialog
- 直接從WISE-PaaS Dashboard新增的dashboard應該都要能顯示出來，且資料夾結構跟WISE-PaaS Dashboard List一致
---
###### tags: `WISE.M+`