先把查詢條件與設備操作分開
操作員在警報清單選了第二產線與未確認警報,進入一筆詳情後再回上一頁,通常希望看到原本的篩選。若每次都清空,必須重新找資料;若連設備寫入草稿也默默恢復,卻可能把過期意圖帶回來。先畫出你要保存的狀態,分成查詢條件、顯示位置、資料快照與操作草稿。
查詢條件可以包含設備識別、警報狀態、起訖時間、排序方向與欄位顯示。顯示位置包含頁碼與捲動位置。資料快照則有資料版本、取得時間與分頁游標。這三組資訊可以一起保存,但效期與恢復方式不同,不能把一個舊游標當作永遠有效。
本文使用一般Web監控畫面示範,沒有指定HMI廠牌。瀏覽器History與sessionStorage是Web介面能力,不是PLC指令;原生HMI若沒有這些API,仍可依同樣的狀態分類設計,但必須使用廠商文件支援的儲存方式。
先建立回頁契約:同一帳號在同一分頁內從詳情返回,保留已套用的篩選與排序;重新取得資料後,再依穩定事件識別定位原列。尚未按搜尋的輸入草稿另外標示,不能顯示新篩選文字卻仍使用舊查詢結果。
選擇儲存位置並定義有效範圍
適合分享的非敏感篩選可放在URL,例如產線識別與排序;包含內部設備名稱、使用者資料或敏感事件內容的條件,先評估是否適合出現在網址、歷史紀錄及代理日誌。不要把登入token或設備寫入參數塞進URL。
只服務一次導覽的狀態可放History條目。需要同一分頁重新整理後保留的條件,可按實際瀏覽器環境使用sessionStorage。它按來源與分頁工作階段隔離,但不能把它視為加密保險箱,也不能假定所有終端的儲存容量與政策相同。
保存結構加上schema版本、使用者識別、頁面識別、設備範圍與保存時間。恢復時先核對版本及目前帳號,再驗證各欄型別與允許值。儲存內容可能被修改或來自舊版本,因此仍需經過與新輸入相同的驗證。
不要只靠清除本機資料作權限控制。即使上一位使用者留下產線B的篩選,下一位使用者的查詢仍必須由服務端按目前權限判定。登出或換帳號時清除原使用者的私有篩選,並取消尚未完成的查詢回呼。
保存失敗時讓畫面正常運作,同時提示條件可能無法在返回時恢復。容量不足、私密模式或政策禁止儲存都應有降級路徑;不能因寫入sessionStorage失敗而把當前資料清成空白。
時間範圍與分頁最容易恢復錯誤
假設十點選「最近一小時」,實際查詢九點到十點;十點十分回頁時,產品要選擇恢復原本九點到十點,或重新計算九點十分到十點十分。兩種都合理,但不能用同一個模糊標籤。本文把相對模式與已解析的UTC起訖一起保存。
返回時若選保持原查詢,就顯示固定九點到十點;若選持續追蹤最近一小時,就重新解析時間並顯示資料已刷新。查詢使用半開區間,起點包含、終點不含,讓相鄰區間不重複計算邊界事件。
分頁游標通常依查詢、排序與資料快照產生。資料已更新或游標到期時,保留篩選但重新從有效起點查詢,不把舊游標搭配新條件。若支援快照續查,需確認快照仍存在;不存在時明確告知清單已更新。
捲動位置也不能只保存第十五列,因為新警報加入後,第十五列可能是另一個事件。保存原事件的穩定識別,資料回來後尋找它;找不到就停在合理位置並提示原事件已不在目前條件內,不能選取外觀相似的另一筆。
為避免返回的慢查詢覆蓋後來修改的篩選,每次套用條件建立新的查詢世代。回覆需比對頁面實例、條件識別與世代;取消網路請求可以節省資源,但正確性仍靠回覆接受條件。
用一段操作實際驗收保存政策
先選產線A、未確認、固定九點到十點,套用後記下條件摘要與清單中的事件E42。進入E42詳情,再返回清單,預期條件完全相同,畫面可顯示刷新中,完成後才解除舊資料標記。
接著在詳情期間讓E42被確認。返回後,它不再符合未確認條件,因此不應強行插回清單;顯示原事件已不符合篩選即可。這個測試能區分保留查詢與保留舊結果,避免為了回到原位置而展示過期狀態。
再測更換帳號、重新整理、開第二個分頁、儲存被禁止、舊schema、游標過期與慢回覆。逐項記錄哪些狀態保留、哪些被清除以及原因。新分頁的初始複製行為可能受開啟方式影響,不能把分頁隔離誤解成任何方式都完全無初始資料。
失敗時先查看保存的條件結構,再比較實際送出的查詢。畫面顯示正確但結果不對,通常要查已套用條件與輸入草稿是否混用;回頁位置不對則查資料快照與事件識別,最後才調整捲動程式。
清除篩選按鈕應回到文件定義的預設值,並讓保存區同步失效。只清空輸入框卻保留URL或History舊狀態,下一次返回又會恢復舊條件,操作員便無法理解清除到底做了什麼。
完成結果 練習與常見問題
完成後,操作員應知道目前用哪一組條件、資料何時刷新,以及返回時有沒有因權限或版本而重設。驗收證據包含導覽前後條件摘要、查詢識別、快照版本與事件定位結果,不只是一張看似相同的畫面。
練習把時間模式由固定區間改為最近十五分鐘,在離頁五分鐘後返回。先寫下你選擇的政策,再推算起訖;若採重新計算,兩端都應往後五分鐘,並重新查詢,不能只改畫面時間文字。
FAQ1:上一頁一定要保留所有狀態嗎?不必。查詢條件與操作草稿分開制定政策,已送出的操作結果另由操作識別追蹤。
FAQ2:保存篩選等於保存當時清單嗎?不是。要重現當時資料還需要可用的快照或資料版本。
FAQ3:sessionStorage可以取代權限嗎?不行。它是客戶端保存方式,服務端仍驗證身分、範圍與條件。
FAQ4:找不到原來那一列怎麼辦?保留目前有效清單並提示原因,不以列號選取另一筆。
參考:WHATWG HTML:History介面與工作階段歷史。
參考:WHATWG HTML:Web storage及sessionStorage範圍。