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