---
# System prepended metadata

title: WISE.M+ Portal RD Test scenario 2020/07~2020/09
tags: [WISE.M+]

---

# WISE.M+ Portal RD Test scenario 2020/07~2020/09
---
###### tags: `WISE.M+`
## 2020/09/28
### Tingwei
#### [Change]BI Header

**Purpose**:
1. [Change]BI Header
2. [Change]Hide Avatar when Start Trial.
3. [Change]cursor set 'default' when trial or path is '/home'.

**Test Case**:
1. test purpose 1
    - [x] Login by account has user avatar -> check whether image show
    - [x] check header style
    - [x] Login by account has no user avatar -> check whether Name show
    - [x] Start Trial -> check avatar in application process
    - [x] Start Trial -> mouse hover logo in application process
    - [x] login -> mouse hover logo at '/home'
    - [x] -> go to organizationManagement -> mouse hover logo

### Alice
#### feature/log-in-page-update
1. [BI-Login][Add] sso Login page renew and CSS fix
2. [BI-Login][Add] add different size background and update logo
3. [BI-Login][Change] vertical adjustment margin center
**Test Case**:
1. resize the browser windows
    - [x] check background will zoom in and out
    - [x] make sure the middle pattern will not be cut
    - [x] check the login form will resized according to browser window size
    - [x] logo changed
    - [x] input border, text, placeholder font size correct
    - [x] input border turn red when error
    - [x] ellipsis when link and word is too long

## 2020/09/25
### Alice
#### feature/water statistic function type select

**Purpose**:
1. [Add] add function type select for SRP Dashboard water statistic panel setting
2. [SRPDashbaord][Add] 1.disable other setting except editing the first parameter  2. add the second parameter

**Test Case**:
1. new blank -> add water statistic panel -> edit item -> check function type list -> select ringratio or YoY or verticalRatio as function type -> save -> preview dashboard -> checking the datasource function type was changed
2. for panel test
    - [x] Feature: add parameter -> Normal
    - [x] Feature: delete the second parameter -> Normal
    - [x] Feature: change second parameter -> Normal
    - [x] Function Type: YoY -> single parameter -> Normal
    - [x] Function Type: YoY -> multiple parameter -> Show the first data
    - [x] Function Type: Ringratio -> single parameter -> Normal
    - [x] Function Type: Ringratio -> multiple parameter -> Show the first data
    - [x] Function Type: Verticalratio -> single parameter -> No show
    - [x] Function Type: Verticalratio -> multiple parameter -> Normal
    - [x] Exception: stop user added third parameter 
    - [x] Exception: delete all datasource in grafana -> edit dashboard in DashboardDesigner -> add parameter -> save -> preview check
    - [x] Exception: add the third datasource in grafana -> edit dashboard in DashboardDesigner -> edit/delete parameter -> save  -> preview check

### feature/style fix

**Purpose**:
[SRPDashboard][Fix] 
1. multiple panel setting table-column  width fix
2. subTitleDropdownPropSetting style fix and test
3. [SRPDashboard][Fix] multistat use subTitleDropdownPropSetting component

**Test Case**:
1. check panel setting
    - [x] inforgraphic
    - [x] saas composer
    - [x] water level pump status
    - [x] ene world map card
    - [x] ene log chart
    - [x] pie chart
    - [x] progerss bar
    - [x] grouped bar chart
2. check import subTitleDropdownPropSetting's component
    - [x] inforgraphic
    - [x] saas composer
    - [x] ene log chart
    - [x] ene world map card
    - [x] manage item template
    - [x] pie chart
    - [x] grouped bar chart
    - [x] progerss bar
    - [x] value threshold
    - [x] dashboard (menu management)
    - [x] share with me

### Tingwei
#### [Add]nodepageBI Box and tabs

**Purpose**:
1. [Add]nodepageBI
2. [Add]nodepageBITabs

**Test Case**:
1. test purpose 1
    - [x] go to index/organizationManagement
    - [x] check org basic info which has desc
    - [x] check org basic info which has no desc
    - [x] create root org -> save
    - [x] create child org -> save
    - [x] edit org -> save
    - [x] delete org
2. test purpose 2
    - [x] change tab
    - [x] change edit type to Users -> scrolling it

## 2020/09/23
### Alice
### feature/style fix

**Purpose**:
1. [DashboardDesigner][Fix] align content with title arrow (follow the padding from design draft)
2. [CreateAlarmGroup][Fix] style fix
3. [SRPDashboard][Fix] unify the select parameter index width

**Test Case**:
1. open dashboard designer check the rightmost column input padding left is 24px and align with title arrow
2. add id #CreateAlarmGroup in front, prevent CSS from polluting
3. check index column unify
    - [x] multistat
    - [x] water flow in out
    - [x] water achieving rate
    - [x] singlestat gauge
    - [x] singlestat text
    - [x] data table

## 2020/09/22
### Tingwei
### [Change]Hide "All" option in Rows Per Page and Add "200, 500" into options.

**Purpose**:
1. [Change]Hide "All" option in Rows Per Page and Add "200, 500" into options. Apply to ObjectList, selectParameter, paramList, parameterList, selectAlarmCodeDialog.

**Test Case**:
1. check "Rows Per Page" in below conditions
    - [x] organizationManage -> object list -> check "Rows Per Page"
    - [x] create object from profile -> select profile -> check "Rows Per Page"
    - [x] -> next -> skip -> check "Rows Per Page" in Setup Object Dialog
    - [x] Edit Object
    - [x] Edit group
    - [x] preview profile detail
    - [x] edit profile
    - [x] -> create primitive and data type is string -> select alarm code dialog
2. check work fine below
    - [x] formula -> add "a+b+c+e+f+g+h+i+j+k+m+n" -> but don't select code source -> click save -> check whether show all rows 
    - [x] alarm complex -> add 11 rows -> fill all required field in page 1, but don't fill page 2 -> click save -> check whether show all rows


## 2020/09/21
### Tingwei
### [Change][SRPDashboard]Delete GET_FLAT_MACHINE_DATA from formatAllParamPath, because we set $store.state.objListDataOrigin as object List Data. Also, remove async-await relate to it.

**Purpose**:
1. [Change][SRPDashboard]Delete GET_FLAT_MACHINE_DATA from formatAllParamPath, because we set $store.state.objListDataOrigin as object List Data. Also, remove async-await relate to it.

**Test Case**:
1. check below panel path from below cases: 1."Dedicated Object and Parameter" mode, 2.changing to "Fixed Parameter" and changing back
    - [x] Water Pump Status
    - [x] Water Flow In-Out
    - [x] Progress Bar
    - [x] Pie Chart
    - [x] Log Chart
    - [x] Water Achieving Rate
    - [x] Donut Chart
    - [x] Grouped Bar Chart
    - [x] Multistat
    - [x] Singlestat (Gauge)
    - [x] Singlestat (Text)
    - [x] Infographic
    - [x] Advanced Datatable
    - [x] Water Statistic
    - [x] Monitor

### Alice
### feature/panel-time-interval-setting

**Purpose**:
1. [SRPDashboard][Change] change option content, 
2. [SRPDashboard][Change] fix time interval setting wasn't loaded when edit

**Test Case**:
1. add log chart/group bar chart panel -> check X axis time interval setting tips and options was changed
2. edit existing dashboard that has log chart/group bar chart -> check time interval setting was correct

## 2020/09/16
### Alice
### feature/panel-time-interval-setting (for Group Bar Chart)

**Purpose**:
1. [SRPDashboard][Add] add X axis setting dialog (include time interval setting ) in group bar chart
2. [SRPDashboard][Change] fix the group bar chart timeinterval when dashboard save

**Test Case**:
1. add a group bar chart panel -> save -> preview
2. add a data source in Left Y -> save -> preview
3. edit the dashboard -> add the two datasource in RightY ->  save -> preview
4. edit the dashboard -> add the second datasource in Left Y -> change timeinterval setting -> save -> preview
5. change 3 different timeinterval for datasource in grafana -> edit dashboard -> open x axis setting -> change timeinterval setting -> save -> preview
 
### Tingwei
### [Fix][SRPDashboard]1.Fix Selecting child org in "selectTagDialog" but object data do not change. 2.Add async-await on formatAllParamPath to prevent does not use cache in the future.

**Purpose**:
1. [Fix][SRPDashboard]1.Fix Selecting child org in "selectTagDialog" but object data do not change. 2.Add async-await on formatAllParamPath to prevent does not use cache in the future.

**Test Case**:
1. test purpose 1
    - [x] Create new srpdashboard from waterManagement  -> add Flow In Out and Monitor panel -> select children orgs, like South, North... -> check whether object list renewed
    - [x] -> select their object and parameter -> save -> check path

### [Fix][SRPDashboard]1.Fix in selectTagDialog, select child org, loading showing was delayed 2.All children objectList use rootState.objListDataOrigin if rootState.objListDataOrigin exist.

**Purpose**:
1. Fix in selectTagDialog, select child org, loading showing delayed.
2. All children objectList use rootState.objListDataOrigin if rootState.objListDataOrigin exist.

**Test Case**:
1. test purpose 1
    - [x] Create new srpdashboard from waterManagement  -> add Flow In Out and Monitor panel -> select children orgs, like South, North... -> check whether object list renewed and whether loading delay
    - [x] -> select their object and parameter -> save -> check path

## 2020/09/15
### Alice
### feature/panel-time-interval-setting (for Ene Log Chart)

**Purpose**:
1. [SRPDashboard][Add] add timeinterval.js
2. [SRPDashboard][Change] remove log chart timeinterval key when save dashboard
3. [SRPDashboard][Change] 1. import timeInterval.js(log cgart), 2. add timeinterval option and tip

**Test Case**:
1. add a datasource -> save -> preview -> check timeinterval (log chart default is min)
2. change timeinterval in x/y setting -> save -> preview -> checking timeinterval was changed
3. add multiple datasource (total 3 for test) -> save -> preview -> checking timeinterval was same as the first
4. change 3 different timeinterval in grafana -> edit dahboard -> select log chart panel -> add a datasource -> save -> checking timeinterval was changed (same as the first)
5. change 3 different timeinterval in grafana -> edit dahboard -> select log chart panel -> edit x/y settings -> save -> checking timeinterval was changed (same as the first)

### Tingwei
### [SRPDashboard][Change]1. new version path 2. get objListData from objListDataOrigin 3.Fix something

**Purpose**:
1. [SRPDashboard][Change]1. new version path 2. get objListData from objListDataOrigin 3.Fix something

**Test Case**:
1. check below panel path from below cases: 1."Dedicated Object and Parameter" mode, 2.changing to "Fixed Parameter" and changing back, 3.reading the old version srpdashboard created from develop the current version
    - [x] Water Pump Status
    - [x] Water Flow In-Out
    - [x] Progress Bar
    - [x] Pie Chart
    - [x] Log Chart
    - [x] Water Achieving Rate
    - [x] Donut Chart
    - [x] Grouped Bar Chart
    - [x] Multistat
    - [x] Singlestat (Gauge)
    - [x] Singlestat (Text)
    - [x] Infographic
    - [x] Advanced Datatable
    - [x] Water Statistic
    - [x] Monitor

## 2020/09/11
### Alice
### feature/dashboard-refresh-rate-setting

**Purpose**:
1. [Add] refresh time options

**Test Case**:
1. add new dashbard from designer -> select refresh time -> save -> preview dahboard -> check refresh setting
2. edit exist dashboard -> check refresh time settging -> change refresh time settging -> save -> view dashboard

## 2020/09/10
### Tingwei
#### [Fix]"Create from profile" format recRate wrong... etc.

**Purpose**:
1. [Fix]"Create from profile" format recRate wrong
2. [Fix]Save as Profile format recRate
3. [Change]Update profile excel.

**Test Case**:
1. purpose 1, upload profile excel, save profile, create from profile, edit below parameters, check their saveFreq or recordingData
    - [x] Constant, dataType String, recRate 1
    - [x] Constant, dataType String, recRate 0
    - [x] Constant, dataType Number, recRate 0
    - [x] Constant, dataType Discrete, recRate 900
    - [x] Primitive, dataType String, recRate 1
    - [x] Primitive, dataType String, recRate 0
    - [x] Primitive, dataType Number, recRate 600
    - [x] Primitive, dataType Discrete, recRate 600
    - [x] Calculation, dataType Number, recRate 600
    - [x] Calculation, dataType Discrete, recRate 300
2. purpose 2
    - [x] edit object -> save as profile -> check network json recRate
    - [x] edit the profile just saved before
3. purpose 3, download them and upload one time

#### [Fix]Profile support recordingData.

**Purpose**:
1. [Fix]Profile support recordingData.
2. [Fix][Profile]Uploading profile excel support Recording Data

**Test Case**:
1. purpose 1
    - [x] create Constant -> dataType String -> set Recording Data  to Yes -> save -> re-edit it
    - [x] -> set Recording Data to No -> save -> re-edit it
    - [x] create Primitive -> dataType String -> set Recording Data  to Yes -> save -> re-edit it
    - [x] -> set Recording Data to No -> save -> re-edit it
2. purpose 2 upload profile excel contains below content and check them
    - [x] Constant, dataType String, recRate 1
    - [x] Constant, dataType String, recRate 0
    - [x] Constant, dataType String, recRate 600 (auto parse to 0)
    - [x] Primitive, dataType String, recRate 1
    - [x] Primitive, dataType String, recRate 0
    - [x] Primitive, dataType String, recRate 600 (auto parse to 0)
    - [x] check model
    - [x] check organization

### Alice
#### feature/water statistic function type select

**Purpose**:
1. [Add] add function type select for SRP Dashboard water statistic panel setting

**Test Case**:
1. new blank -> add water statistic panel -> edit item -> check function type list -> select ringratio or YoY or verticalRatio as function type -> save -> preview dashboard -> checking the datasource function type was changed

## 2020/09/09
### Tingwei
#### [Change][Object]show parameter name behind the dialog title when creating a parameter

**Purpose**:
1. [Change][Object]show parameter name behind the dialog title when creating a parameter. 
2. Correct updateParameterNameBehindTitle function name and move it into src/util/

**Test Case**:
1. purpose 1 & 2 in Object
    - [x] edit const -> validate name behind the dialog title
    - [x] create const -> input parameter name -> validate name behind the dialog title
    - [x] edit calculation -> validate name behind the dialog title
    - [x] create calculation -> input parameter name -> validate name behind the dialog title
    - [x] -> click formula -> validate name behind the dialog title
    - [x] -> click alarm -> validate name behind the dialog title
    - [x] edit primitive -> validate name behind the dialog title
    - [x] create Primitive -> input parameter name -> validate name behind the dialog title
    - [x] -> click alarm -> validate name behind the dialog title

## 2020/09/08
### Alice
#### feature/excel-alarminfo-check-and-default

**Purpose**:
1. [Fix][Profile] revise alarmInfo error check

**Test Case**:
1. upload profile excel for alarminfo test -> checking error message is correct

### Tingwei
#### [Fix][SRPDashboard]Assign wrong nameLangId and descLangId when previewing the dashboard.

**Purpose**:
1. [Fix][SRPDashboard]Assign wrong nameLangId and descLangId when previewing the dashboard.
2. [Fix]Validate when previewing the dashboard.

**Test Case**:
1. purpose 1 & 2
    - [x] create srpdashboard from designer -> didn't fill any data -> preview dashboard
    - [x] -> save
    - [x] -> fill valid name & desc -> preview
    - [x] -> save
    - [x] -> re-edit srpdashboard -> preview dashboard -> remember response nameLangId & descLangId -> preview dashboard again -> check whether network request nameLangId & descLangId are the same as the last response
    - [x] -> cancel -> check whether srpdashboard name disappeared


#### [Change][Profile]show parameter name behind the dialog title when editing a parameter

**Purpose**:
1. Refer to the title

**Test Case**:
1. purpose 1
    - [x] edit const -> validate name behind the dialog title
    - [x] -> change parameter name -> validate name behind the dialog title
    - [x] edit calculation -> validate name behind the dialog title
    - [x] -> change parameter name -> validate name behind the dialog title
    - [x] -> click formula -> validate name behind the dialog title
    - [x] -> click alarm -> validate name behind the dialog title
    - [x] edit primitive -> validate name behind the dialog title
    - [x] -> change parameter name -> validate name behind the dialog title
    - [x] -> click alarm -> validate name behind the dialog title

## 2020/09/07
### Alice
#### feature/parameter-list-column-fix

**Purpose**:
1. [Fix][Profile] parameter list short name value show
2. [Add][Profile] add header setting for show
3. profile detail short name column has disappeared, lead the layout messy

**Test Case**:
1. preview with object detail, check the column correct

#### feature/designer typo fix

**Purpose**:
1. [Fix][DashboardDesigner] button tooltips content correct
2. [Add][DashboardDesigner] add multilanguage limit height tip
3. [Fix][DashboardDesigner] dropdown typo fix

**Test Case**:
1. open dashboard designer -> check button tooltips changed
2. add panel -> drag to resize the panel size to max -> duplicate -> check limit tips
3. checking the dropdown option was changed to 'New Blank'

## 2020/09/04
### Tingwei
#### [Fix][Profile]Fix error Message, "showParseExcelFailErrorMsg" is not defined in profileManagement.

**Purpose**:
1. Refer to the title

**Test Case**:
1. test purpose 1 to 5
    - [x] Launch chrome dev-tool and select "Console" -> go to profileManagement -> check whether there is error message ```"Property or method "showParseExcelFailErrorMsg" is not defined ..."```

### Alice
#### Feature/excel alarminfo check and default

**Purpose**:
1. [Add][Profile] add alarm info default value when use upload excel import
2. [Add][Profile] alarmInfo parameterName filter (duplicate & not exit parameter name)
3. [Add][Profile] functional description language key detect
4. [Add][Profile] AlarmInfo Page - Alarm Type check

**Test Case**:
1. default value
    - [x] deadbandType : 'absolute'
    - [x] deadbandValue : 0
    - [x] almDelay: 0
    - [x] almRestoreDelay : 0
    - [x] isEnable : 1
2. check/validate normal column
    - [x] check if the parameterName duplicate
    - [x] check if the parameterName isn't exist in parameter list
    - [x] check if the description language key is exist in system language
    - [x] check the deadbandType only accept absolute/percentage
    - [x] check the deadbandValue data type is number not string or other
    - [x] check the almDelay only can accept integer
    - [x] check the almRestoreDelay only can accept integer
    - [x] check the deadbandType only accept 0/1
3. check/validate alarmType
    - [x] check the parameter data type is accept by parameter type
    - [x] check the alarm tye is accept by parameter type
    - [x] check the parameter type is in the dictionary as key
    - [x] check the data type is in the dictionary as key
    - [x] check the alarm tye is in the dictionary as value

**Test Data**:

https://trello-attachments.s3.amazonaws.com/5bd7d123e20df464aaf9854d/5f4f3e8071cb252f22f3f029/b032945ec3e6042e38edd420552e91ab/object_profile_template_testdata_for_alarminfo.xlsx

## 2020/09/03
### Tingwei
#### [Change][Profile]1.Validate whether levels and categories exist when upload alarm code excel ... etc

**Purpose**:
1. Validate whether levels and categories exist when uploading alarm code excel 
2. Save parseHeaderLetterData function as a standalone js. 
3. Only import showErrorMsgDialog.vue in uploadDialog 
4. Remove showErrorMsgDialog.vue and codes related to it from profileManagement.0.51.vue 
5. Fine-tune showErrorMsgDialog.vue 
6. Change below upload profile error alarm messages: mismatch level, mismatch category, mismatch alarm range rule name, duplicate rule name

**Test Case**:
1. test purpose 1 to 5
    - [x] upload mismatch level and category alarm code excel in profile
    - [x] upload mismatch level and category alarm code excel in object
    - [x] upload default alarm code template excel

2. test purpose 2 to 6
    - [x] upload mismatch level and category profile excel
    - [x] upload mismatch alarm range rule name profile excel
    - [x] upload duplicate alarm rule name profile excel

## 2020/09/02
### Tingwei
#### [Change][Profile]In discrete parameter, alarm complex rule1 symbol always is '==' , rule1 threshold must be from the Discrete Mapping List, disable rule2...etc

**Purpose**:
1. [Change][Profile]In discrete parameter, alarm complex rule1 symbol always is '==' , rule1 threshold must be from the Discrete Mapping List, disable rule2. 
2. [Change]In src/components/utilComponent/parameter/basicInfo.vue, disable dataType radio when alarmType !== 'none'. 
3. [Fix]In src/util/data-format/profileParameterFormat.js, state is not changing to Number when discreteScopePaser() from edit_format_basicInfo_data(). This bug was not causing problem before, but fixing it is necessary in this feature. 

**Test Case**:
1. test purpose 1 & 3 calculation
    - [x] create discrete calculation parameter -> set discrete -> set formula -> set alarm complex -> save
    - [x] -> edit discrete calculation parameter -> change discrete value which was assigned in alarm complex -> save -> check whether shown error
    - [x] -> correct the error -> save
    - [x] -> edit discrete calculation parameter -> delete discrete value which was assigned in alarm complex -> save -> check whether shown error
    - [x] -> correct the error -> save
2. test purpose 1 & 3 primitive
    - [x] create discrete primitive parameter -> set discrete -> set alarm complex -> save
    - [x] -> edit discrete primitive parameter -> change discrete value which was assigned in alarm complex -> save -> check whether shown error
    - [x] -> correct the error -> save
    - [x] -> edit discrete primitive parameter -> delete discrete value which was assigned in alarm complex -> save -> check whether shown error
    - [x] -> correct the error -> save
3. test purpose 2
    - [x] -> edit discrete parameter -> check whether data type was disabled
    - [x] edit alarm range parameter -> check whether data type was disabled
    - [x] edit alarm code parameter -> check whether data type was disabled
4. test purpose 1 & 3 for adding rule symbols
    - [x] -> edit discrete primitive parameter -> add rule check whether symbols is '='


### Alice
#### Feature/parameter list column fix

**Purpose**:
1. [Fix][Profile] limit short name display timing
2. [Fix][Profile] update date, remove the mistake props from bindDataSource

**Test Case**:
1. test for profile and select code source
    - [x] open profile check short name column
    - [x] open select code source dialog check short name column was hidden

## 2020/08/27
### Alice
#### feature/arrow-function-fix

**Purpose**:
1. [Fix][Alarm] arrow function fix

**Test Case**:
1. edit the primitive parameter that with alarm complex, it must go smoothly

#### feature/excel-parameter-default-value

**Purpose**:
1. [Add][Profile] excel parameter page default value

**Test Case**:
1. when data type equal 'Number' and value empty add default value
    - [x] spanHi: 200
    - [x] spanLo: 0
    - [x] decimalPrecision : 2
    - [x] recType : Current
    - [x] maxChangeRatePerMin: 100

2. when value empty, add default value
    - [x] groupRec: 0
    - [x] recRate: 60
    - [x] dataKeptDays: 30

3. when parameter type equal 'calculation' and value empty add default value
    - [x] calcRate: 60

**Test Data**:
1. [test data for parameter](https://trello-attachments.s3.amazonaws.com/5bd7d123e20df464aaf9854d/5dc4e73cf85f590cc3c058d9/ae79d9d8a142a16c07dae8b707c60330/object_profile_template_testdata_for_parameter.xlsx)

### Tingwei
#### [Fix]1. Loading is not closed when this is no org at organization 2. Loading is not closed when this is no menu at menuManagement.

**Purpose**:
1. [Fix]Loading is not closed when this is no org at organization 
2. [Fix]Loading is not closed when this is no menu at menuManagement.

**Test Case**:
1. Purpose 1 & 2: login with no org account
- [x] go to organizationManagement
- [x] go to menuManagement
2. Purpose 1 & 2: login with having orgs account
- [x] go to organizationManagement
- [x] go to menuManagement

#### [Fix] 1. Turn on sourceMap. 2. import "@/../node_modules/quill/dist/quill.core.css"; in formula.vue.

**Purpose**:
1. [Fix]Turn on sourceMap.
2. [Fix] import "@/../node_modules/quill/dist/quill.core.css"; in formula.vue

**Test Case**:
1. Purpose 1 
- [x] `npm run prod-test-report` and test it in portal_mplus_release `npm run prod-test`
2. from 1, Purpose 2
- [x] edit calculator parameter -> click formula editor -> check whether there is no focus outline( no focus outline is correct)

## 2020/08/26
### Tingwei
#### [Fix]Fix load .worker.js failed

**Purpose**:
1. Fix load .worker.js failed

**Test Case**:
1. Purpose 1
- [x] upload default object profile excel
- [x] -> upload default alarm code excel
- [x] -> save profile
- [x] edit profile

### Tingwei
#### [Fix][NotificationGroup] Error message did not show when launched for the first time -> add notification -> do not input anything -> click save... etc

**Purpose**:
1. [Fix][NotificationGroup] Error message did not show when launched for the first time -> add notification -> do not input anything -> click save
2. [Fix] Fix "npm run dev" error, when there is no dist folder.
3. [Fix][NotificationGroup] When Using language is lacks languages of system setting languages, saving notification group error message did not show. ( e.g. "cn" is not in system setting languages )

**Test Case**:
1. Purpose 1
    - [x] launched for the first time -> add notification -> do not input anything -> click save
    - [x] -> fill all fields with valid content -> save
2. Purpose 2
    - [x] clone a clean new project from git -> npm i -> npm run dev
3. purpose 3
    - [x] launched for the first time -> add notification -> use cn as language -> do not input anything -> click save
    - [x] -> fill all fields with valid content -> save

## 2020/08/25
### Tingwei
#### [Change]Upgrading to webpack 4 and Optimization

**Purpose**:
1. Upgrade to webpack 4
2. Dynamic import
3. Dynamic import error handle
4. Fix notification group message color wrong found at webpack version.

**Test Case**:
1. Purpose 1 & 2
- [x] go to develop portal
- [x] login
- [x] go to profileManagement
- [x] go to organizationManagement
- [x] edit notification group -> check color of message
2. Purpose 3, run `npm run prod-test-report` in portal_mplus, run `npm run prod-test` in portal_mplus_release
- [x] when the project built successfully, replace filename 'profileManagement_0p51.xxx.css' to '_profileManagement_0p51.xxx.css' and then go to profile from another page -> check whether error message shown

### Alice
#### feature/excel-information-page

**Purpose**:
1. [Add][Profile] excel profile import - information page check and fill the default value

**Test Case**:
1. test for profileName
    - [x] trim
    - [x] special symbols
    - [x] length < 64
    - [x] null
2. test for type
    - [x] trim
    - [x] !== 'object'
    - [x] null
3. test for category
    - [x] trim
    - [x] special symbols(1 tag)
    - [x] length < 64
4. test for mode
    - [x] null
    - [x] public
    - [x] private
5. test for description
    - [x] trim
    - [x] string
    - [x] object - wrong key
    - [x] object - right language key
6. test for version
    - [x] trim
    - [x] length < 16
7. test for orangization
    - [x] trim
    - [x] length < 16
8. test for blocktype
    - [x] trim
    - [x] special symbols
    - [x] length < 64
9. test for model
    - [x] trim
    - [x] length < 16

https://trello-attachments.s3.amazonaws.com/5bd7d123e20df464aaf9854d/5dc4e16ff86c652bf5a78ffa/cf554aadedb7b048197b6945b4d437c3/object_profile_template_testdata.xlsx

## 2020/08/19
### Alice
#### feature/fix-multi-language-typo

**Purpose**:
1. [fix] fix multi language typo

**Test Case**:
1. test for Dashboard Designer
    - [x] change system language(use jp for test) -> add datatable panel -> edit Column Style Setting item -> checking 'Column Header' was translated
    - [x] change system language(use jp for test) -> add SaaS Composer Viewer -> edit add item -> check File Indicator select list placeholder text was the language of the system

## 2020/08/18
### Alice
#### feature/short name and css tweak
**Purpose**:
1. [Add] [Profile] Parameter List add short name table
2. 
3. [Fix][Profile] fix the category text line height
4. [Change][DashboardDesigner] hide ' SAVE AS TEMPLATE ' button
5. [Change][DashboardDesigner] icon and divider tweak

**Test Case**:  
1. test for profile
    - [x] edit profile that paramter list isn's null -> checking the short name column was added -> try to use short name sort list data
    - [x] edit profile -> add category tag -> check category tag text was vertically centered
2. test for dashboard designer
    - [x] open dashboard designer -> check icon postion/padding/margin was changed and 'SAVE AS TEMPLATE' was hide


## 2020/08/14
### Alice
#### feature/log-chart-tag-fix

**Purpose**:
1. [SRPDashboard][LogChart]  fix  that after delete all / several / single style in grafana, match error style when add datasource

**Test Case**:  
1. test for SRP Dashboard
    - [x] add Equipment 2.4 from template -> preview and delete all datasource in grafana -> save -> edit this dashboard on m+ -> add the same parameter that before delete -> check style is correct
    - [x] delete one/several datasource(the second) in grafana -> save -> edit this dashboard on m+ -> active log chart panel and check data correct

## 2020/08/13
### Alice
#### feature/minetype-limit

**Purpose**:
1. [UploadImage] limit file type by js file MIME type

**Test Case**:  
1. test for proflie
    - [x] upload jpg test -> ✓
    - [x] upload png test -> ✓
    - [x] upload svg test -> ✓
    - [x] upload gif test -> ✗
    - [x] upload xlsx test -> ✗
    - [x] upload pptx test -> ✗


### Tingwei
#### [Change][Profile]Handling response error code: 1.share code 400002(Unused Share Code) 2.share code 400003(Duplicate Share Code) 3. Profile 400001(Duplicate profile name)

**Purpose**:
Handling response error code: 
1. share code 400002(Unused Share Code) 
2. share code 400003(Duplicate Share Code) 
3. Profile 400001(Duplicate profile name)

**Test Case**:  
1. test purpose 1 & 2 in Add Shared Profile
    - [x] Add Shared Profile -> click save -> cancel
    - [x] -> Add Shared Profile -> input more than 16 letters -> click save -> cancel
    - [x] -> Add Shared Profile -> input unused share code -> click save -> cancel
    - [x] -> Add Shared Profile -> input duplicate share code -> click save -> cancel
    - [x] -> Add Shared Profile -> input valid share code -> save
2. test purpose 1 & 2 in manage code
    - [x] input more than 16 letters -> click `+`
    - [x] input unused share code -> click `+`
    - [x] input duplicate share code -> click `+`
    - [x] input valid share coed -> click `+`
3. test purpose 3
    - [x] create a profile -> input duplicate name -> save
    - [x] edit a profile -> input duplicate name -> save

## 2020/08/12
### Alice
#### feature/fake-tab-bottom-border

**Purpose**: 
1. [Fix][SRPDashboard][Profile] fakeTab bottom border fix

**Test Case**:  
1. test for language tab
    - [x] edit advantech water achieving rate item check tabs border bottom
    - [x] edit advantech water pump status panel-machine & waterlevel check tabs border bottom
    - [x] create/edit object profile check tabs border bottom

## 2020/08/11
### Tingwei
#### [Add][Profile]Adding uploadProfile.worker.js and uploadAlarmCode.worker.js.

**Purpose**: 
1. [Add][Profile]Adding uploadProfile.worker.js 
2. [Add][Profile]Adding uploadAlarmCode.worker.js. 
3. [Add]Upgrading webpack-dev-server node memory limit to 4096 MB and adding cross-env.


**Test Case**:  
1. test for puppose 1, test in `npm run prod-test` with regular template and [5k-parameter-3-alarm-range.xlsx](https://trello.com/1/cards/5f1a45b4e1fcef702a79ccf7/attachments/5f2ccd221c8c856bb1279be5/download/5k%263-alarm-range.xlsx?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE1OTcxMzI4MDAsImV4cCI6MTU5NzEzODIwMCwicmVzIjoiNWYxYTQ1YjRlMWZjZWY3MDJhNzljY2Y3OjVmMmNjZDIyMWM4Yzg1NmJiMTI3OWJlNSIsImF1ZCI6IlRyZWxsbyIsImlzcyI6IlRyZWxsbyJ9.j8olTaqWFr9gP5I0C549rGZ0bdd5Slw8jflEBS7S1mc)
     - [x] [測試報告PDF](https://trello.com/1/cards/5f1a45b4e1fcef702a79ccf7/attachments/5f324d1ee6bfc725cefe6d7d/download/Upload_Profile_Worker_Test.pdf?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE1OTcxMjkyMDAsImV4cCI6MTU5NzEzNDYwMCwicmVzIjoiNWYxYTQ1YjRlMWZjZWY3MDJhNzljY2Y3OjVmMzI0ZDFlZTZiZmM3MjVjZWZlNmQ3ZCIsImF1ZCI6IlRyZWxsbyIsImlzcyI6IlRyZWxsbyJ9.PFBEf6NY66PVunSno6SHzpl1PyBZHR_pi85YqKmE_VE)
    - Failed : Saving `5k-parameter-3-alarm-range.xlsx`
2. test for puppose 2, test in `npm run prod-test` with regular template and [5k-alarm-code-template.xlsx](https://trello.com/1/cards/5f1a45b4e1fcef702a79ccf7/attachments/5f325659810c18074602665f/download/5k-alarm_code_template-windows.xlsx?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE1OTcxMzI4MDAsImV4cCI6MTU5NzEzODIwMCwicmVzIjoiNWYxYTQ1YjRlMWZjZWY3MDJhNzljY2Y3OjVmMzI1NjU5ODEwYzE4MDc0NjAyNjY1ZiIsImF1ZCI6IlRyZWxsbyIsImlzcyI6IlRyZWxsbyJ9.RdmaCGd2hTmowo59aGsh2s_IA8yawgRW3VdP7ityHhY)
    - [x] Upload alarm Code excel successfully -> create primative -> select alarm code dialog
    - [x] Upload alarm Code excel and Press Cancel
    - [x] Delet alarm Code excel and reupload it.
    - Failed : Saving `5k-alarm-code-template.xlsx`
2. test for puppose 3
    - [x] npm run dev

## 2020/08/10
### Alice
### feature/ruler-adjust

**Purpose**: 
[Change][Dashboard Designer] top ruler
[Change][Dashboard Designer] left ruler code update
[Fix][Dashboard Designer] parseInt dynamic length


**Test Case**:  
1. test for designer
     - [x] check the ruler wasn't all using symbol composition, to avoid layout messed up when font-family change
     - [x] open designer dialog and checking the ruler is aligned in horizontal mode
     - [x] change mode and checking the ruler is aligned in straight mode
     - [x] add panel and height was 12, and duplicate 3 times this panel, check the ruler was growed dynamic
     - [x] no console error when add panel

#### feature/grafana-save-active-confuse
**Purpose**:
[Fix][Dashboard Designer] give a panel active index when edit ( first list item )

**Test Case**:  
1. test for designer
     - [x] add 3 different panel -> move the first item of the list to the center ->  save -> edit -> check the acitve panel was the first item
     - [x] preview the dashobard and save in grafana -> edit the dashboard in M+ -> check the acitve panel was the first item

## 2020/08/04
### Alice
#### Feature/hot-key-copy-delete

**Purpose**:  
[add][Dashboard Designer] Hot-key copy & delete
[add][Dashboard Designer] add button tooltips
[change][Dashboard Designer] fix button tool tips text

**Test Case**:  
1. test for designer
     - [x] add a panel
     - [x] click panel -> press ctrl + V -> copy panel
     - [x] click panel -> press delete -> copy panel
2. test hover designer button show tool tips
3. Copy -> Duplicate, DLETE -> Delete

## 2020/08/03
### Alice
#### Feature/fix-notification-group

**Purpose**:  
[change][NotificationGroup] 
1. change getAllOrgNode way
2. assign disabled style when the Org/Group role Id null or '' and interrupt object list fetch
3. add setLoading when change Org

**Test Case**:  
1. test for 0.85.002 NotificationGroup
     - [x] test notification group page open speed
     - [x] sequence of component appearing
     - [x] new & save & edit 
2. test for selectVariableDialog
     - [x] click other -> show dialog
     - [x] click org -> wait loading
     - [x] check error/objlist
     - [x] check light grey item no response
     - [x] check select path correct
     - [x] save 

### Tingwei
#### [Fix][Menu]1. Fix selected languages were not reset when adding a new menu. 2. A redundant border showed under Earth dropdown Title.

**Purpose**:  
1. Fix selected languages were not reset when adding a new menu. 
2. A redundant border showed under Earth dropdown Title.

**Test Case**:  
1. test purpose 1
     - [x] menuManagement -> edit old menu -> select only en in language dropdown -> cancel -> add a new menu -> check whether languages were reset
2. test purpose 2, `npm run prod-test` in git/portal_mplue, `npm run prod-test` in git/portal_mplue_release
     - [x] check whether a redundant border showed under Earth dropdown Title.

## 2020/07/31
#### [Fix]Fix wrong ja delete wording with replacing "are_you_sure_you_want_to_delete" with "are_you_sure_you_want_to_delete_keyword".

**Purpose**:  
1. Refer to the title

**Test Case**:  
1. checking below delete wording in ja and another lang condition:
     - [x] menuManagement -> delete menu
     - [x] profileManagement -> delete profile
     - [x] tagList.vue in bindDataSource.vue: deleteParameter function will not be called, because v-if="false" on cell, not modify
     - [x] parameterList: edit profile -> delete parameter
     - [x] uploadAlarmCodeExcel.vue: delete alarm excel from edit Object dialog
     - [x] uploadAlarmCodeExcel.vue: delete alarm excel from edit Profile dialog
     - [x] uploadImage.vue: delete image from edit Profile dialog
     - [x] alarmCategoryTable.vue: systemSetting -> delete alarm category from edit alarm category dialog
     - [x] alarmLevelTable.vue: systemSetting -> delete alarm level from edit alarm level dialog
     - [x] alarmCode.vue: delete a rule from Object Parameter
     - [x] alarmComplex.vue: delete a rule from Object Parameter
     - [x] srodashboard.js: delete a item from grouped bar chart

## 2020/07/30
### Tingwei
#### [Fix][SRPDashboard][Grouped Bar Chart] Define initial this.timeInterval when panel is active and replace all timeinterval of targets when $emit panelData

**Purpose**:  
1. Assign this.timeInterval by the first valid timeinterval of targets
2. From 1, if in condition: no valid timeInterval, currentDashTempId exist and the dashboard was not created from designer, we define timeInterval by dashboard template ID( 0 is created from designer ) 
3. From 2, At last, find no timeInterval , assign it with 'Hour'
4. When add/edit item or Y Axix and save them, use timeinterval edited in grafana.

**Test Case**:  
1. test: create, add item and save -> check query TimeInterval, X Axis Time Interval, X Axis Format in grafana
     - [x] Hour, water, 1.2 
     - [x] Hour, water, 2.2
     - [x] Hour, water, 3.1
     - [x] Hour, water, 3.2
     - [x] Hour, water, 3.3
     - [x] Hour, water, 3.6
     - [x] Hour, Equipment, 1.2
     - [x] Hour, Equipment, 2.2
     - [x] Minute, Equipment, 2.1
     - [x] Minute, Equipment, 2.4
2. test: delete all query from grafana, add item in m+ -> check query TimeInterval in grafana
     - [x] Hour, water, 1.2 
     - [x] Hour, water, 2.2
     - [x] Hour, water, 3.1
     - [x] Hour, water, 3.2
     - [x] Hour, water, 3.3
     - [x] Hour, water, 3.6
     - [x] Hour, Equipment, 1.2
     - [x] Hour, Equipment, 2.2
     - [x] Minute, Equipment, 2.1
     - [x] Minute, Equipment, 2.4
3. test timeinterval below special cases in equip 2.4 -> save  -> check query TimeInterval in grafana
     - [x] set a gg and the other timeinterval is Minute in grafana Query TimeInterval, edit left y axis and save
     - [x] set $TimeInterval in grafana , add item in m+ -> check query TimeInterval in grafana
     - [x] set Month in grafana , add item in m+ -> check query TimeInterval in grafana
     - [x] set gg and tt in grafana Query TimeInterval, add item
- Failed:
    - water 3.3 Dateformat 後面有空白，導致 panel 繪圖不是使用HH:mm 之後再行驗證


### Alice
#### Feature/fix-log-chart-timeinterval

**Purpose**: 
[fix][SRPDashboard][Log Chart]
Define timeInterval when panel is active and replace all timeinterval of targets when $emit panelData

**Test Case**:  
1. test from template
    - [x] add a parameter -> save -> preview -> check last datasource time interval equal the first
    - [x] delete all parameter at first -> add a parameter -> save -> preview -> check the time interval was default (Minute)
1. test from grafana
    - [x] delete all query -> mplus edit -> add parameter -> save -> preview -> check the time interval was default (Minute)
    - [x] change all querys time interval -> mplus edit -> edit parameter that was exist -> save -> preview -> check all querys time interval was fllow with the first  legally time interval

## 2020/07/29
### Alice
#### feature/log chart fix

**Purpose**:  
[fix][SRPDashboard][LogChart] 
1. hide the x/y axis tips
2. replace the added parameters time interval to 'Minutes'

**Test Case**:  
1. test from template
     - [x] add a template that has log chart -> checking the tips that behind x/y axis title was hided
     - [x] add a parameter -> save dashboard -> preveiw -> check the new added data sources time interval was changed to 'Minutes'

### Tingwei
#### [Change][SRPDashboard]Host of Preview/Copy dashboard URL always assigns by Conf.DaashboardUrl... etc.

**Purpose**:  
1. [Change][SRPDashboard]Host of Preview/Copy dashboard URL always assigns by Conf.DaashboardUrl.
2. [Fix][SRPDashboard]Delete preview dashboard when window/tab closed or reloaded.

**Test Case**:  
1. test purpose 1 by `npm run dev`: 
     - [x] preview dashboard from main page srp-dashboard dropdown
     - [x] copy dashboard url from main page srp-dashboard dropdown
     - [x] preview dashboard from Right-Top button of  Desinger dialog 
     - [x] preview dashboard from Left-Bottom button of From Template dialog 
2. test purpose 1 by `npm run prod-test` in another computer: 
     - [x] preview dashboard from main page srp-dashboard dropdown
     - [x] copy dashboard url from main page srp-dashboard dropdown
     - [x] preview dashboard from Right-Top button of  Desinger dialog 
     - [x] preview dashboard from Left-Bottom button of From Template dialog 
2. test purpose 2 , check whether preview dashboard was deleted in below cases
     - [x] preview dashboard from dialog -> reload page
     - [x] preview dashboard from dialog -> close tab
     - [x] preview dashboard from dialog -> cloae window

#### [Change][Profile]1. Correcting Availability wording. 2. Hiding share core tooltips description

**Purpose**:  
1. Refer to the title
1. Refer to the title

**Test Case**:  
1. purpose 1, waiting for updating to DB is necessary, but can review wording in [雲端文件](https://docs.google.com/spreadsheets/d/11nZyjyBx9ewp7I964hN1H492V0q9Hyo0EGo8Oa_ucCA/edit#gid=0)
2. check share core tooltips description

#### [Change][Profile] Replace the share code description by wording offered by Jack.

**Purpose**:  
1. Refer to the title

**Test Case**:  
1. purpose 1, waiting for updating to DB is necessary, but can review wording in [雲端文件](https://docs.google.com/spreadsheets/d/11nZyjyBx9ewp7I964hN1H492V0q9Hyo0EGo8Oa_ucCA/edit#gid=0)

## 2020/07/28
### Tingwei
#### [Fix][SRPdashboard] Setting "tr td:last-child { text-overflow: clip }" to fix ellipses was showed in some device... etc

**Purpose**:  
1. [Fix][SRPdashboard] Setting "tr td:last-child { text-overflow: clip }" to fix ellipses was showed in some device.
2. [Fix][groupList] Moving ".el-table { ... }" into #groupList.

**Test Case**:  
1. test purpose 1: check below panels whether `td:last-child .cell` apply `text-overflow: clip`
     - [x] worldmap
     - [x] water acheiving rate
     - [x] water statistic
     - [x] singlestat
     - [x] grouped bar chart
     - [x] SaaS Composer
     - [x] monitor
     - [x] water level pump status
     - [x] water flow in out
     - [x] multistat
     - [x] progress bar
2. test purpose 2: `npm run prod-test` in git/portal_mplus , `npm run prod-test` in git/portal_mplus_release
    - [x] check whether datatable panel input width is 100%

#### Defect #21590 [Fix][Profile][Upload Profile] The Formula was not formatting to String when filling formula cell with a Number(0,1...) .

**Purpose**:  
1. Refer to the title

**Test Case**:  
1. test purpose 1: upload profile template with below parameter cases，then go to Edit Parameter -> Formula check them
     - [x] calculation, type: Number, formula: 0 
     - [x] calculation, type: Number, formula: 1
     - [x] calculation, type: Number, formula: a+b
     - [x] calculation, type: Discrete, formula: 0
     - [x] calculation, type: Discrete, formula: if(a,1,0)
     - [x] Creating Object by this profile -> check formula

#### [Change]For convenience, in PROD_TEST mode, support setting cookie not only in localhost. (support using another computer to connect prod-test local server and login)

**Purpose**:  
1. [Change]For convenience, in PROD_TEST mode, support setting cookie not only in localhost. (support using another computer to connect prod-test local server and login)

**Test Case**:  
1. test purpose 1: 
    - [x] go to https://portal-wise-mplus-develop-eks002.hz.wise-paas.com.cn/ and login -> check cookie domain
    - [x] Start portal_mplus_release Server in mac, connect http://your-IP:8080 , and login -> check cookie domain

## 2020/07/27
### Tingwei
#### [Fix][Notification Group]Clone default name and desc to all lang (store.state.staticLangTypeList) data.

**Purpose**:  
1. [Fix][Notification Group]Clone default name and desc to all lang (store.state.staticLangTypeList) data.

**Test Case**:  
1. test
     - [x] create notification group from a account has no ja -> save -> use another account check whether notification group has name in ja lang condition

#### [Fix][SRPDashboard]Select parameter error message text align should be left (found in production) ... etc

**Purpose**:  
1. [Fix][SRPDashboard]Select parameter error message text-align should be left (found in production) .
2. [Change][style] assign text-stroke-width on dropdown-item in .el-dropdown-menu--0-51 when hover and focus

**Test Case**:  
1. test purpose 1,`npm run prod-test` in git/portal_mplus , `npm run prod-test` in git/portal_mplus_release
     - [x] select grouped bar chart panel -> add item -> check whether error message under select parameter button is **text-align:left**
1. test purpose 2, this case can be test at all site dropdowns use .el-dropdown-menu--0-51, e.g. header, profile management, srpdashboard, menu tree...
     - [x] select grouped bar chart panel -> click \"..." button -> hover dropdown item

## 2020/07/22
### Tingwei
#### [Fix][Profile][Manage Shared Codes Dialog]Reset Search and Refetch profiles when dialog was closed.

**Purpose**:  
1. [Fix][Profile][Manage Shared Codes Dialog]Reset Search and Refetch profiles when dialog was closed.

**Test Case**:  
1. test
     - [x] click Manage Code -> delete share code -> click Done 
     - [x] click Manage Code -> add share code -> press Esc
    
#### [Fix][Profile]Count of "Me" should not add share count in search dropdown... etc

**Purpose**:  
1. Refer to the title
2. [change][Profile]In profile searcher dropdown, adding more indent in front of share checkbox and if only select share, private show "-" in the checkbox.

**Test Case**:  
1. test purpose 1
     - [x] check sum of Me in profile search dropdown
2. test purpose 2 at Me checkbox group
     - [x] share checkbox indent
     - [x] public (✓) private (✓) share(✓)
     - [x] -> private (x) -> check whether share(x)
     - [x] -> share(✓) -> check whether private(-)
     - [x] -> private (✓)
     - [x] -> private (x) -> share(✓) -> share(x) -> check whether private(x)
     - [x] -> private (✓)
     - [x] -> public (x)
     - [x] -> private (x) -> check whether share(x)
     - [x] -> share(✓) -> check whether private(-) Me(-)
     - [x] -> private (✓)
     - [x] -> private (x) -> share(✓) -> share(x) -> check whether private(x)
     - [x] -> Me (✓)
     - [x] -> Me (x)

#### [Fix][SRPDashboard][SaaS Composer]In edit display dialog, Organization6 select should not appear when fill value in Organization1~5

**Purpose**:  
1. Refer to the title

**Test Case**:  
1. test purpose 1
     - [x] edit display -> fill Organization1~5 as /WaterManagement/Midway Island-tingwei test/airport/A1/A1-Base and Object as A1-Base -> check whether Organization6 select appear

### Alice
#### feature/water-achieving-rate-fix

**Purpose**:
1. [fix] [Water Achieving Rate] sample picture error & tips frame disappear

**Test Case**:
1. test from template
    - [x] add 1.2 from template -> save -> preview
    - [x] add 1.2 from template -> change parameter -> change title & color -> save -> preview -> check setting correct
    - [x] add 1.2 from template -> change edit language -> checking the sample picture is no problem -> activated the title and check the tips was shown

#### feature/panel-duplicate

**Purpose**:
1. [add] [Dashboard Designer] panel duplicate
2. [fix] [Dashboard Designer] separate switch panel create/save/delete check and duplicate check

**Test Case**:
1. test from designer
    - [x] panel duplicate
    - [x] duplicate new add panel
    - [x] duplicate panel that changed width & height panel
    - [x] duplicate panel that was assigned the parameter and changed setting
    - [x] duplicate switch panel when grid already have switch panel 
    - [x] after duplicate switch panel save

## 2020/07/21
### Alice
#### [Dashboard Designer] [整合測試] advantech-water-achieving-rate | advantech-water-flow-in-out | progress-bar-panel + switch panel

**Purpose**:
1. water achieving rate & water flow in out & progress bar panel test

**Test Case**:
1. test from designer
    - [x] add 2 achieving rate & flow in out & progress bar panel each
    - [x] select parameter
    - [x] change edit language for test flow in out & achieving rate
    - [x] test change threshold -> save
    - [x] edit normal and style setting
    - [x] add switch panel and change panels to fix parameter only
    - [x] delete switch panel check the radio disabled

### Tingwei
#### [Fix][SRPDashboard][SaaS Composer]Fix: 1. The timing of updateData() was wrong 2. Init data only when created. It should be called when edit display dialog shows every time. 3. delete clearable( x button )

**Purpose**:  
1. The timing of updateData() was wrong
2. Equipment 1.2 edit Neihu can not save
3. Init data only when created. It should be called when edit display dialog shows every time.
4. delete clearable( x button )

**Test Case**:  
1. test Purpose 1
    - [x] add Equipment 1.2 -> add/edit display -> group choose WaterManagement/south and object choose MBUnit -> group 2 choose back to select group -> save item -> check whether MBUnit was deleted
2. test puppose 2
    - [x] add Equipment 1.2 -> edit Neihu -> select 'AirHnd-1' -> save item
3. test puppose 3
    - [x] -> edit Linkuo -> set Object different from Neihu -> save dastboard -> edit again -> edit Neihi -> cancel -> edit Linkuo -> check object
4. test purpose 4
    - [x] edit a display -> check whether a x button on File source, select Organization/Object

## 2020/07/20
### Alice
#### feature/preview-button-width-fix

**Purpose**:
1. [fix] [Dashboard Designer] preview button width fix

**Test Case**:
1. test from designer
    - [x] open new -> check if preview button content overflow

#### [Dashboard Designer] [整合測試] advantech-datatable-panel (單一) + switch panel

**Purpose**:
1. datatable panel test

**Test Case**:
1. test from designer
    - [x] add two datatable panel and a multistat panel
    - [x] select parameter for panels -> change column style setting
    - [x] switch in same type panel  -> check data correct
    - [x] switch in different type panel -> check data correct
    - [x] save dashboard -> check data correct
    - [x] add switch panel -> save -> change switch panel Organization check data correct
    - [x] change panels to fix parameter only -> save -> check datasource path is value and data correct
    - [x] delete switch panel -> check disabled fix parameter only -> save -> check datasource change

#### [Dashboard Designer] [整合測試] monitor-panel | advantech-infographic-panel + switch panel

**Purpose**:
1. monitor and infographic panel test

**Test Case**:
1. test from designer
    - [x] add two infographic panel and two monitor panel
    - [x] select parameter for panels -> change panel setting -> save
    - [x] switch in same type panel  -> check data correct
    - [x] switch in different type panel -> check data correct
    - [x] save dashboard -> check data correct
    - [x] add switch panel -> save -> check data correct
    - [x] change panels to fix parameter only -> save -> check datasource path is value and data correct
    - [x] delete switch panel -> check disabled fix parameter only -> save -> check datasource change

### Tingwei
#### [Fix][SRPDashboard][Worldmap]1.mapcardequipid was not deleted when save as...

**Purpose**:  
1. mapcardequipid was not deleted when save as template.
2. Fix item management table css.

**Test Case**:  
1. test Purpose 1 & 2
    - [x] sava as a new template -> create card -> use the template -> save dashboard -> check in grafana
    - [x] check Manage Item Template style in Windows


#### [Fix][SRPDashboard][Worldmap]Fix css in Setup Item Dialog/Item template Dialog: 1. when error, select group should not show underline. 2.Card Title dropdown css 3. select parameter css 4.Parameter Value Mapping css... etc

**Purpose**:  
1. refer to the title
2. [Fix][SRPDashboard][Worldmap] Item Template Management css: padding, dropdown position ... etc
3. [Change][SRPDashboard][WorldMap]table cella add word-break and fine-tune edit icon cell padding-left.

**Test Case**:  
1. test purpose 1
    - [x] create card -> check whether there is no underline in Select Group button
    - [x] -> check Card Tiele
    - [x] edit item template -> click monitoring Item -> check select parameter
    - [x] -> check Parameter Value Mapping
2. test purpose 2 & 3
    - [x] click Manage Template -> check padding
    - [x] -> clickm "..." icon -> check dropdown 
    - [x] add a very long name template and check in template management dialog

## 2020/07/17
### Alice
#### feature/fix-icon-name-type

**Purpose**:
1. [fix] [Dashboard Designer] fix-icon-name-typo | Alarm Panle -> Alarm Panel

**Test Case**:
1. test from designer
    - [x] add a Alarm Panel -> check no error

#### feature/bug-fix-for-designer

**Purpose**:
1. iconType removed when dashboard validate error
2. show / hide switch panel title
3. save displayMode into dashboard data

**Test Case**:
1. test from designer
    - [x] add panel -> no input dashboard name -> save -> confirmation panel list icon still exists
    - [x] add switch panel -> save -> preview dashboard -> check if panel title show -> edit panel -> delete panel name -> preview dashboard -> check if panel title hide
    - [x] add new dashboard -> select 'horizontal' mode -> save -> edit check displayMode is 'horizontal' -> change displayMode to 'straight' -> save -> edit check displayMode is 'straight'

#### feature/background-color-change-for-designer

**Purpose**:
1.[add] [Dashboard Designer] title background color change follow displayMode

**Test Case**:
1. test from designer
    - [x] create new dashboard -> add three different type panel -> save -> preview -> check title background color no change
    - [x] edit dashboard -> change dashboard displayMode -> save -> preview -> check title background color was change
    - [ ] 
### Tingwei
#### [Fix][SRPDashboard][Worldmap] Fix Worldmap panel Monitoring Index

**Purpose**:  
1. Fix Add Monitoring Index item -> select discrete parameter -> click Value in Parameter Value Mapping but radio did not change. 
2. "showParmType" was not updated when changed the key to "showParamType".

**Test Case**:  
1. test Purpose 1 and 2
    - [x] create water 1.1 dashboard from WaterManagement -> add card "South" with Classic template -> change "param01" to "South/status" or another discrete parameter -> choose Value in Parameter Value Mapping block, check whether changing radio is success
    - [x] -> Add item into Monitoring Index -> select "South/status" -> choose Value in Parameter Value Mapping block, check whether changing radio is success
    - [x] -> choose back to Descriptor, check whether changing radio is success
    - [x] -> add or reselect South/FlowInSum into Monitoring Index -> check Parameter Value Mapping block
    - [x] -> save dashboard -> preview in Grafana -> check whether the first South/status show type Value result, the second one show type Descriptor result and South/FlowInSum also work correctly

## 2020/07/16
### Alice
#### feature/limit-number-of-switch-panel

**Purpose**:
1. [add] [Dashboard Designer] [Switch Panel] switch panel number out of range notify
2. [ add ] [Dashboard Designer] [SwitchPanel] add sub title tips

**Test Case**:
1. test from designer
    - [x] add a second switch panel -> check the notify show and grid is no two switch panel
    - [x] edit the dashboard that has two switch panel(from grafana edit) -> check the notify show and sub title error tips
    - [x] delete dahboard name -> check sub title still prompts the switch panel error
    - [x] save the dashboard that has two switch panel -> check the notify show and sub title error tips correct
    - [x] delete switch panel until one is left -> check sub title error tip return to the 'required' -> save

### Tingwei
#### [Fix][SRPDashboard][grouped bar chart]Fix: unit was not assigned when re-editing the dashboard in the condition saving the template directly before switching to the group bar chart panel.

**Purpose**:  
1. Refer to title

**Test Case**:  
1. test 
    - [x] create water 1.2 -> click grouped bar chart -> check title and unit
    - [x] create another water 1.2 -> save dashboard directly -> edit the dashboard -> switch to grouped bar chart -> check title and unit
    - [x] -> change unit -> save -> check in grafana

#### [Fix][SRPDashboard]Fix bug found in water 1.2

**Purpose**:  
1. [Fix][SRPDashboard][Singlestat] Fix show (No Data Source) but expect parameter name when New From Template and never select parameter.
2. Merge branch 'feature/fix-grouped-bar-chart-unit-was-assign-to-title'

**Test Case**:  
1. test purpose 1
    - [x] create water 1.2 -> click singlestat -> check path in select parameter table
    - [x] -> select parameter -> check path in select parameter table

## 2020/07/15
### Tingwei
#### [Change][SRPDashboard]Handle invalid Dashboard name: 1.show subtitle error 2.open collapse 3.scroll tempRightDesigner to top.

**Purpose**:  
1. Handle invalid Dashboard name: 1.show subtitle error 2.open collapse 3.scroll tempRightDesigner in designer mode(the right side block) to top.

**Test Case**:  
1. test from designer
    - [x] create dashboard from designer -> don't fill dashboard name and close Basic Information -> add Monitor panel and scroll Panel Information to bottom -> click save -> check purpose 1
    - [x] -> fill 'preview-dashboard-' in dashboard name -> blur -> check subtitle of dialog
    - [x] -> click save -> will be reject
    - [x] -> fill correct dashboard name -> save
    - [x] empty dashboard name -> save -> cancel -> create another dashboard from designer -> check whether error subtitle and error message are removed
2. test from template
    - [x] create from template -> empty dashboard name -> click save -> check subtitle of dialog
    - [x] -> fill 'preview-dashboard-' in dashboard name -> blur -> check subtitle of dialog
    - [x] -> click save -> will be reject
    - [x] -> fill correct dashboard name -> save

#### [Fix][SRPDashboard][Designer]Fix assigning "from_object" logic is wrong when adding a panel. This causes assigning the wrong default group(always assign at the current nav group) in select group dialog when re-editing the dashboard.

**Purpose**:  
1. Refer to the title

**Test Case**:  
1. test from designer
    - [x] create fron designer -> add worldmap -> add a Neihu card -> save dashboard -> edit the dashboard -> edit Neihu -> click Select Group buttom -> check whether active group in select group dialog is Neihu

## 2020/07/14
### Alice
### [fix][b-0.85.001][World Map] when template list is empty, show multi-language no data tips

**Purpose**:  
1. fix the issue reported by Eden that when template list no data, tips must be multi-language changed with system

**Test Case**:  
1. test 
    - [x] add select group -> classic-> edit item -> save as template -> add select group -> choose the template that you just saved from My Templates -> select group -> check the selected group can no longer be selected

### [fix][b-0.85.00][WorldMap] delete map card json id, when save as template

**Purpose**:  
1. avoid the selected target id corresponding to the template id

**Test Case**:  
1. test
    - [x] after add a group card, use template add card -> select group -> check groups that have already been selected can not be selected again 

### Tingwei
#### [Change][SRPDashboard][SaaS Composer Viewer]SaaS Composer Viewer support designer

**Purpose**:  
1.  Add Tips under Displays table
2.  Add Tips under File Indicator
3.  Disable selects of File Indicator when there is no Switch Panel in this panel.

**Test Case**
1. test 
    - [x] no switch, add a saas composer -> add display(Neihu) -> save dashboard & check in grafana
    - [x] -> add a switch -> save dashboard & check in grafana
    - [x] -> edit the display, set up EquipmentOperations/Neihu to File Indicator & add another displays (EquipmentOperations/Linkou) -> save dashboard & check in grafana
    - [x] -> add another SaaS Composer & add display (WaterManagement/South) -> switch to original SaaS Composer -> check displays
    - [x] -> save dashboard & check in grafana 
    - [x] -> delete switch panel -> edit any display -> check whether selects of File Indicator are disabled
    - [x]  -> save dashboard & check in grafana
    - [x]  -> add a singlestat -> save dashboard & check in grafana

#### [Change][SRPDashboard][Water Statistic]Water Statistic support designer

**Purpose**:  
1. add default Json
2. Fix show "select device parameter" before a parameter was selected and error was not show

**Test Case**
1. test 
    - [x] no switch, add a Water Statistic -> select parameter -> save dashboard & check in grafana
    - [x] -> add another water statistic & select parameter -> switch to original Water Statistic -> check parameter
    - [x] -> save dashboard & check in grafana
    - [x] -> add a switch -> save dashboard & check in grafana
    - [x] -> delete switch panel -> save dashboard & check in grafana
    - [x] -> add a singlestat -> save dashboard & check in grafana
    - [x] decimals
    - [x] unit
    - [x] prefix
    - [x] alarm value threshold
    - [x] manual value threshold
    - Fail: change language from cookie or set up in SRPFrame was not working.

## 2020/07/13
### Alice
#### feature/multistat-for-designer
**Purpose**:  
1. [ add ] multistat json

**Test Case**:  
1. test 
    - [x] add multiple multistat in dashboard, switch two panel check data no problem
    - [x] add different type panel and switch multistat and the other panel check data no problem
    - [x] add one and two tag to different multistat and add dissimilar setting
    - [x] save & view dashboard check setting & data are correct 

#### feature/worldmap-for-designer
**Purpose**:  
1. [Change][SRPDaashboard][Worldmap]Support designer

**Test Case**:  
1. test 
    - [x] add select group -> classic -> select group -> check when confirming editing, it will point to the previously selected group/parameter -> check monitoring descriptor & value can be used -> save group -> save -> view dashboard
    - [x] add a second card -> use my template -> select group -> change monitoring item and other parameter -> save -> pin card -> save -> view dashboard
    - [x] add a two card -> add other panel -> switch panel to other panel -> switch back this panel -> check card is exist
    - [x] add two world map panel -> each add 1 group -> save group -> switch at each other -> check data correct -> save -> view dashboard
    - [x] add from template water 1.1 -> check target is empty -> add card -> save -> view dashboard for check -> open in edit mode, to ensure data return correct
    - [x] fix the problem of residual pictures (use template to create and then designer will leave pictures)

### Tingwei
#### [Fix][SRPDashboard][Grouped Bar Chart]Fix Y posfix(Y unit) was assign to title when title is empty.

**Purpose**:  
1. [Fix][SRPDashboard][Grouped Bar Chart]Fix Y posfix(Y unit) was assign to title when title is empty.

**Test Case**
1. test 
    - [x] empty title & exist unit -> check in grafana -> edit in m+ and check
    - [x] empty title & empty unit -> check in grafana -> edit in m+ and check
    - [x] exist title & empty unit -> check in grafana -> edit in m+ and check
    - [x] exist title & exist unit -> check in grafana -> edit in m+ and check

#### [Add][SRPDashboard][Grouped Bar Chart]Add default JSON... etc.

**Purpose**:  
1. [Add][SRPDashboard][Grouped Bar Chart]Add default JSON.
2. [Change][ValueThreshold] Replace id by class in valueThreshold.vue, valueThresholdFromAlarm.vue and valueThreshold_All_In_One.vue. (seatch `#xxx`, there is no css use them)
3. [Change][ValueThreshold] Correct ifHideThreshold Logic is not match 'ifHideThreshold meaning'. Also fix in dataTable.
4. [Fix][SRPDashboard][Grouped Bar Chart]Fix threshold input css. Change threshold input padding-right(All) and padding-left(only grouped bar chart now) to 8px.

**Test Case**
1. test 
    - [x] two grouped bar chart in a dashboard
    - [x] test with flow in out in a dashboard
    - [x] Only from Parameter 
    - [x] dedicate from Object and Parameter
    - [x] Add threshold
    - [x] set parameter = "AirVolume/Status", function type = objectStatusOccurrence and stateType = Run
2. test Purpose 3
    - [x] edit datatable -> edit column 3(default header is Running time & health Situation) -> check whether no thershold input and only color in manual threshold table
3. purpose 4
    - [x] edit item chech -> manual alarm -> chech threshold input


## 2020/07/10
### Alice
#### [ add ] 1. complete icon, 2. code sorting & format
**Purpose**:  
1. complete the null icon
2. code sorting for read more clearly

**Test Case**:
1. test panel list & grid item's icon status change (normal, hover, active)
    - [x] advantech-datatable-panel
    - [x] advantech-ene-dashboard-switch-panel
    - [x] advantech-infographic-panel
    - [x] advantech-multistat-panel
    - [x] advantech-saascomposer-panel
    - [x] advantech-water-achieving-rate
    - [x] advantech-water-flow-in-out
    - [x] advantech-water-level-pump-status
    - [x] advantech-water-statistic
    - [x] bessler-pictureit-panel
    - [x] ene-alarm-panel
    - [x] ene-log-chart-panel
    - [x] ene-worldmapcard-panel
    - [x] grafana-piechart-panel-donut
    - [x] grafana-piechart-panel-pie
    - [x] grouped-bar-chart-panel
    - [x] monitor-panel
    - [x] progress-bar-panel
    - [x] singlestat-gauge
    - [x] singlestat-text
2. re-sort scss @include code by panel type name 
## 2020/07/09
### Alice
#### feature/multistat-bug-fix

**Purpose**:  
### [ fix ] 
1. title cover by old default value
2. fix undefined when user select  paramName title but data none deviceparam

**Test Case**:
1. test json change
    - [x] open default -> change title -> save -> active other type panel -> back to the original active panel -> check  datasource list title data -> save dashboard -> preview
    - [x] select parameter -> change title -> save -> active other type panel -> back to the original active panel -> check datasource list title data -> save dashboard -> preview
    - [x] open default -> select paramName title -> check datasource list title -> save dashboard -> preview


### Tingwei
#### [Change][SRPDaashboard][Infographic]Support designer

**Purpose**:  
1. [Change][SRPDaashboard][Infographic]Add default Json
2. [Change][SRPDaashboard][Infographic]Set Default image width as "Auto"

**Test Case**
1. test 
    - [x] multiple infographic in a dashbpoard
    - [x] assign image width

## 2020/07/08
### Tingwei
#### [Change][Water Flow In Out]Water Flow In Out support designer etc.

**Purpose**:  
1. [Change][Water Flow In Out]1.Add default panel json for designer 
2. [Change][Water Flow In Out]Support multiple panels in a dashboard. 
3. [Change][Water Achieving Rate]move "this.panelData.isCheckUnit = true" from created() to watch activePanelIndex.

**Test Case**
1. test water flow in out
    - [x] multiple water flow in out in a dashbpoard

### Alice
#### feature/fix notification group multilang

**Purpose**:  
1. [ Fix ] fix notification group multilang

**Test Case**:
1. add notification group when system language is jp
2. change system language -> edit notification group
    - [x] check form item title, placeholder language
    - [x] check alarm group name
    - [x] check alarm user group
    - [x] check Notification Message -> Others Variable -> Group Name
    - [x] check error message language

## 2020/07/07
### Tingwei
#### [Change][SRPDashboard][Designer]Add monitor, water level pump, water acheiving rate default json etc

**Purpose**:  
1. [Change][SRPDashboard][monitor]Change monitor default json. When panelData.targets is [] or Display match no target, assign default target automatically.
2. [Change][SRPDashboard][monitor]ClearValidate when close edit item dialog.
3. [change][SRPDashboard]Fix keyin space key in the end of dashboard name always call trim() is not convenient . Change timming of call trim() to @blur and change validate "preview-dashboard-" Regexp.
4. [Add][SRPDashboard][Water Level Pump status]add default panel
5. [Add][SRPDashboard][Water Acheiving Rate]Add default panel json
6. [Change][SRPDashboard][Water Achieving Rate]Support Designer: Support multiple advantech_water_achieving_rate in a dashboard.
7. merge 0.85.001 to this branch


**Test Case**
1. Purpose 1, test all monitor panel in one dashboard
    - [x] set only center status in a panel
    - [x] set only center circle in a panel
    - [x] set only center left in a panel
    - [x] set only center right in a panel
    - [x] set only left top in a panel
    - [x] set only left middle in a panel
    - [x] set only left bottom in a panel
    - [x] set only right top in a panel
    - [x] set only right middle in a panel
    - [x] set only right bottom in a panel
    - [x] set all position in a panel
2. Purpose 2, check clear error message except parameter
    - [x] edit empty center-circle -> cancel edit center-circle -> check clear error message except select parameter
    - [x] valid save -> edit another item
3. Purpose 5&6, water achieving rate
    - [x] two achieving rate in one dashboard with different org/parameter
4. Purpose 4, water level pump
    - [x] two water level pump in one dashboard with different org/parameter
5. Purpose 3, test dashbopard name input and validate
    - [x] input "xxx "
    - [x] input "preview-dashboard-" -> save
    - [x] input " preview-dashboard-" -> save
    - [x] input "preview-dashboard- " -> save

#### [Fix][Menu]1.Support change language in System Configure in Grafana. 2. Save() does not check whether at least one language select.

**Purpose**:  
1. If find default srpframe or the first exist srpframe, set it as sample srpframe which can be assign to empty srpframe. 
2. If there is no sample language srpframe(Set "language": [] in System Configure in Garafana), only update orgId and srpName, other fields use default json.
3. Save() does not check whether at least one language select.

**Test Case**
1. test in default language cn
    - [x] updated only ja language in System Configure in grafana -> edit this srpframe in M+ -> add “繁體中文” -> save srpframe -> check in grafana
    - [x] -> updated only ja and zh_tw(default: true) in System Configure in grafana -> edit this srpframe in M+ -> Add “English” -> save srpframe -> check in grafana
    - [x] -> updated only en, ja and zh_tw with default:false in System Configure in grafana -> edit this srpframe in M+ -> save srpframe -> check in grafana
    - [x] updated no language(Set "language": [] ) in System Configure in grafana -> edit this srpframe in M+ -> save srpframe -> check in grafana
    - [x] select no language in earth icon -> save


## 2020/07/06
### Tingwei
#### [Fix][SRPDashboard][Water Achieving Rate][Water Flow In out]Fix select parameter choose cancel, but parameter was still updated.

**Purpose**:  
1. [Fix][SRPDashboard][Water Achieving Rate]Fix select parameter choose cancel, but parameter was still updated.
2. [Fix][SRPDashboard][Water Flow In out]Fix select parameter choose cancel, but parameter was still updated.
3. [Fix][SRPDashboard][Water Flow In out]Fix decimals is not rendering real-time when keyin before select parameter

#### [Fix][menu]Fix update.

**Purpose**:  
1. merge to a branch created from 0.85.001, npm run prod-test, test in release `npm run prod-test`


**Test Case**
1. test
    - [x] hover sync button

**Test Case**
1. test
    - [x] Edit Water Achieving Rate -> edit Item -> select Parameter -> click Cancel -> check parameter
    - [x] Edit Water Achieving Rate -> edit Item -> select Parameter -> click Save -> check parameter
    - [x] Edit Water Flow In out -> edit Item -> select Parameter -> click Cancel -> check parameter
    - [x] Edit Water Flow In out -> edit Item -> select Parameter -> click Save -> check parameter
    - [x] create Water 3.1 -> edit water Flow In Out -> edit item -> keyin decimals

#### [Fix][menu]Fix sync button background-image is repeat because css is overwrite by element-ui.

**Purpose**:  
1. [Fix][menu]Fix sync button background-image is repeat because css is overwrite by element-ui.


**Test Case**
1. merge to a branch created from 0.85.001, npm run prod-test, test in release `npm run prod-test`
    - [x] hover sync button


## 2020/07/2
### Tingwei
#### [Add][SRPDashboard]Adding fake response of 'paneltemplate/fineone/' into fake-axios-server for develop defaultPanelJson...etc

**Purpose**:  
1. [Add][SRPDashboard]Adding fake response of 'paneltemplate/fineone/' into fake-axios-server for develop defaultPanelJson
2. [Change][SRPDashboard]set PictureIt Default Json(Monitor Json is just sample) 
3. [Dev]npm install --save-dev cross-env to set env cross OS 
4. [Dev]add main-dev.js to maintain code only in process.env.NODE_ENV !== 'production'


**Test Case**
1. test fake-server and pictureIt
    - [x] npm run dev-fake-server -> add from designer -> add panel -> select pictureIt panel
    - [x] -> check url is empty
    - [x] -> input url -> save dashboard -> check in grafana
    

## 2020/07/1
### Tingwei
#### [Add]"npm run prod-test" build local test production dist(call api is the same as dev-server)

**Purpose**:  
1. Run `npm run prod-test` will build local test dist, default path is '../../portal_mplus_release/app-local-test'(This path can be change in build/build-prod-test.js). After builded, you can go to portal_mplus_release and run `npm run prod-test`


**Test Case**
1. test with portal_mplus_release.git feature/prod-local-test
    - [x] npm run prod-test，dist was builded in '../../portal_mplus_release/app-local-test'
    - [x] After builded, you can go to portal_mplus_release and run `npm run prod-test`
    - [x] npm run build，check dist path is '../dist'


#### portal_mplus_release.git - [Add]Add app-local-test
**Purpose**:  
1. Refer the title


**Test Case**
1. refer portal_mplus.git - [Add]"npm run prod-test" build local test production dist(call api is the same as dev-server)
2. deploy to develop space by `~/code/build/K8S/imagebuilder/dockerfiles_develop_test/dockerfile_portal_develop_test.df`

