Skip to main content

Point Search (/ui/point) — Time Series Data Query

This screen queries the collected time series data for a specific tag over a time range and lets you download the results as a table or CSV. Operators use it for quick inspections such as whether PLC values stayed within the normal range between 09:00 and 11:00 yesterday.

Click the Database icon (fa-database) in the left sidebar, or go directly to http://<gateway>/ui/point.


1. Screen Layout

┌────────────────────────────────────────────────────────────────┐
│ ⊙ 포인트 검색 — 시계열 데이터 조회 · TM_TAG_POINT [←] [↻] │
├────────────────────┬───────────────────────────────────────────┤
│ [검색 조건] │ [포인트 목록 — 최신 순] [CSV 다운로드] │
│ ─ 검색 기간 │ ┌──────────────────────────────────────┐ │
│ ─ OPC ID * │ │ 시각 │ 태그 ID │ 값 │ 타입 │ 품질 │ 에러 │ │
│ ─ 태그 ID * │ └──────────────────────────────────────┘ │
│ [검색] │ … │
└────────────────────┴───────────────────────────────────────────┘

The left panel is 50 px wider than the standard col-md-2 to keep labels and combo boxes from being clipped.


2. Top Bar

ButtonAction
← (fa-arrow-left)Return to /ui/main
↻ (fa-sync)Call point.search() again (keeps the current conditions; used to refresh)

3. Search Conditions (Left Panel)

3.1 Search Period (s_date_range)

  • Based on daterangepicker — format YYYY-MM-DD HH:mm ~ YYYY-MM-DD HH:mm
  • Automatically filled with the last hour when the screen opens (moment().subtract(1, 'hours') ~ moment())
  • Click to open the calendar + time picker popup

3.2 OPC ID (required)

  • Combo box populated from the POST /connect/opc/list result — sorted by opc_id alphabetically ASC
  • Label format: OPC_ID (OPC_NAME) — if name is empty, only OPC_ID is shown
  • Changing the selection reloads the Tag ID combo below with the tags belonging to that OPC

3.3 Tag ID (required)

  • Before an OPC is selected: disabled plus the guidance option — Loads after OPC selection —
  • After an OPC is selected, populated from the POST /connect/tag/list { opc_id } result — sorted by tag_id ASC
  • Label format: TAG_ID (TAG_NAME) — if name is empty, only TAG_ID
  • On load failure, the — Load failed — option appears along with an error toast
If you press Search without choosing a tag

The modal "Please select an OPC and a tag first." appears (bootbox alert) — a guard that prevents wasting time on an empty result caused by missing data.


4. Result Table (6 Columns)

DataTables renders the GET /point/search response. The default sort is timestamp desc (most recent first).

#ColumnWidthSortDisplay / Meaning
1Timestamp180pxdesc defaulttimestamp.iso or raw timestamp — center aligned
2Tag ID180pxThe tag ID that was searched — center aligned
3Value* (variable)Alignment depends on the type — integer/long/float/double are right aligned, boolean/string and similar are center aligned (per the table value alignment rules in UI-DESIGN) — bold
4Type100pxColor badge produced by formatTypeBadge() (e.g. STRING / INT / DOUBLE / BOOL)
5Quality70pxOPC quality code (e.g. 192=Good). Blank if empty
6Error70px (gray) if error_code is 0/null; otherwise the code is shown in red

Page lengths: 10 / 20 / 50 / 100 / 1000 — default 100. Korean interface (Korean.json).


5. CSV Download

The CSV Download button at the top right calls point.csv().

  • Local export — the last search result (point._lastData) is converted to CSV on the client side and downloaded immediately. No additional server call
  • File name: point_<TAG_ID>_<TIMESTAMP>.csv format (e.g. point_TAG_LS_XBC_0001_20260510_1530.csv)
  • Columns: Timestamp / Tag ID / Value / Type / Quality / Error — identical to the UI table
Pressing CSV with no search results

The guidance modal "Please run a search first." appears — prevents issuing an empty CSV.


6. Data Source

The backend flow this screen queries:

PLC → Collector → PointProcessor → Cassandra: tm_tag_point (TTL = edge.ttl 일)

/point/search?tag_id&from&to
  • Data whose TTL has expired can no longer be queried. edge.ttl in app.properties defaults to 30 days.
  • Rows in tm_tag_point are clustered by (tag_id, time_bucket, time) — searches over short periods are fast. Pulling a month or more at once can slow the response, so ranges of tens of minutes to a few hours are recommended.

7. Operating Tips

  • Tracking abnormal values: put the time the alarm fired inside the search period and query that tag — sudden spikes, zero values, or quality changes become visible
  • PLC communication loss: if the Error column for the same tag is filled with red codes for a stretch of time, that is a PLC response failure window — cross-check with collection status in /ui/connect/list
  • CSV then Excel: open the downloaded CSV in Excel/LibreOffice and chart the Value column for a quick trend visualization — for full charting use Monitor Real-time Values or View Tag Value Trends