Junjie
3 天以前 63b01db83d9aad8a15276b4236a9a22e4aeef065
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
window.DeviceLogReplayAdapter = {
  normalizeTimeline: function (data) {
    return {
      sessionId: data && data.sessionId ? data.sessionId : '',
      day: data && data.day ? data.day : '',
      startTimeMs: data && data.startTimeMs ? Number(data.startTimeMs) : 0,
      endTimeMs: data && data.endTimeMs ? Number(data.endTimeMs) : 0,
      maxPrefetchChunks: data && data.maxPrefetchChunks ? Number(data.maxPrefetchChunks) : 1,
      chunks: (data && data.chunks ? data.chunks : []).map(function (chunk) {
        return {
          chunkIndex: Number(chunk.chunkIndex || 0),
          startTimeMs: Number(chunk.startTimeMs || 0),
          endTimeMs: Number(chunk.endTimeMs || 0),
          estimatedSamples: Number(chunk.estimatedSamples || 0),
          firstSampleSeq: Number(chunk.firstSampleSeq || 0),
          lastSampleSeq: Number(chunk.lastSampleSeq || 0)
        };
      })
    };
  },
  normalizeTimelineSummary: function (data) {
    return {
      sessionId: data && data.sessionId ? data.sessionId : '',
      day: data && data.day ? data.day : '',
      bucketCount: Number(data && data.bucketCount || 0),
      startTimeMs: Number(data && data.startTimeMs || 0),
      endTimeMs: Number(data && data.endTimeMs || 0),
      buckets: (data && data.buckets ? data.buckets : []).map(function (bucket) {
        return {
          bucketIndex: Number(bucket && bucket.bucketIndex || 0),
          startTimeMs: Number(bucket && bucket.startTimeMs || 0),
          endTimeMs: Number(bucket && bucket.endTimeMs || 0),
          activityScore: Number(bucket && bucket.activityScore || 0),
          abnormalCount: Number(bucket && bucket.abnormalCount || 0),
          errorCount: Number(bucket && bucket.errorCount || 0),
          blockCount: Number(bucket && bucket.blockCount || 0),
          hasReplayData: Boolean(bucket && bucket.hasReplayData),
          hasCrnData: Boolean(bucket && bucket.hasCrnData),
          hasStationData: Boolean(bucket && bucket.hasStationData),
          hasRgvData: Boolean(bucket && bucket.hasRgvData),
          anchorChunkIndex: Number(bucket && bucket.anchorChunkIndex != null ? bucket.anchorChunkIndex : -1),
          anchorFrameIndex: Number(bucket && bucket.anchorFrameIndex != null ? bucket.anchorFrameIndex : -1),
          firstAbnormalChunkIndex: Number(bucket && bucket.firstAbnormalChunkIndex != null ? bucket.firstAbnormalChunkIndex : -1),
          firstAbnormalFrameIndex: Number(bucket && bucket.firstAbnormalFrameIndex != null ? bucket.firstAbnormalFrameIndex : -1),
          topEventType: bucket && bucket.topEventType ? String(bucket.topEventType) : ''
        };
      })
    };
  },
  normalizeChunk: function (data) {
    return {
      chunkIndex: Number(data && data.chunkIndex || 0),
      startTimeMs: Number(data && data.startTimeMs || 0),
      endTimeMs: Number(data && data.endTimeMs || 0),
      frameCount: Number(data && data.frameCount || 0),
      baseState: this.normalizeFrameState(Object.assign({
        timestamp: Number(data && data.baseState && data.baseState.timestamp || 0),
        sampleSeq: Number(data && data.baseState && data.baseState.sampleSeq || 0)
      }, data && data.baseState ? data.baseState : {})),
      frames: (data && data.frames ? data.frames : []).map((frame, index) => {
        return this.normalizeFrameState(Object.assign({
          _frameIndex: index,
          timestamp: Number(frame && frame.timestamp || 0),
          sampleSeq: Number(frame && frame.sampleSeq || 0),
          stationStates: [],
          crnStates: [],
          dualCrnStates: [],
          rgvStates: [],
          abnormalList: [],
          targets: [],
          summary: {}
        }, frame || {}));
      })
    };
  },
  normalizeFrameState: function (frame) {
    var normalizedFrame = Object.assign({}, frame || {});
    normalizedFrame.stationStates = (normalizedFrame.stationStates || []).map(function (item) {
      return Object.assign({}, item || {});
    });
    normalizedFrame.crnStates = (normalizedFrame.crnStates || []).map(function (item) {
      return window.DeviceLogReplayAdapter.normalizeCrnState(item);
    });
    normalizedFrame.dualCrnStates = (normalizedFrame.dualCrnStates || []).map(function (item) {
      return window.DeviceLogReplayAdapter.normalizeCrnState(item);
    });
    normalizedFrame.rgvStates = (normalizedFrame.rgvStates || []).map(function (item) {
      return window.DeviceLogReplayAdapter.normalizeRgvState(item);
    });
    return normalizedFrame;
  },
  normalizeCrnState: function (item) {
    var normalizedItem = Object.assign({}, item || {});
    if (normalizedItem.crnNo == null && normalizedItem.crnId != null) {
      normalizedItem.crnNo = normalizedItem.crnId;
    }
    if (!normalizedItem.deviceStatus && normalizedItem.crnStatus) {
      normalizedItem.deviceStatus = normalizedItem.crnStatus;
    }
    return normalizedItem;
  },
  normalizeRgvState: function (item) {
    var normalizedItem = Object.assign({}, item || {});
    if (!normalizedItem.deviceStatus && normalizedItem.rgvStatus) {
      normalizedItem.deviceStatus = normalizedItem.rgvStatus;
    }
    return normalizedItem;
  },
  findMatchingTarget: function (frame, targetLike) {
    if (!frame || !targetLike) {
      return null;
    }
    var targets = frame.targets ? frame.targets : [];
    for (var i = 0; i < targets.length; i++) {
      var item = targets[i];
      if (String(item.type || '') !== String(targetLike.type || '')) {
        continue;
      }
      if (String(item.deviceNo || '') !== String(targetLike.deviceNo || '')) {
        continue;
      }
      if (String(item.stationId || '') !== String(targetLike.stationId || '')) {
        continue;
      }
      return item;
    }
    return null;
  },
  findTargetByStation: function (frame, stationId) {
    if (!frame || stationId == null) {
      return null;
    }
    var targets = frame.targets ? frame.targets : [];
    for (var i = 0; i < targets.length; i++) {
      var item = targets[i];
      if (String(item.type || '') !== 'Devp') {
        continue;
      }
      if (String(item.stationId || '') === String(stationId)) {
        return item;
      }
    }
    return null;
  },
  resolveTarget: function (frame, clickedTarget) {
    return this.findMatchingTarget(frame, clickedTarget) || clickedTarget || null;
  },
  buildDeviceLogsUrl: function (anchor, replayBackUrl) {
    var query = '?_v=20260424_workbench_v10';
    query += '&day=' + encodeURIComponent(anchor.day || '');
    query += '&type=' + encodeURIComponent(anchor.type || '');
    query += '&deviceNo=' + encodeURIComponent(anchor.deviceNo || '');
    if (anchor.stationId != null && anchor.stationId !== '') {
      query += '&stationId=' + encodeURIComponent(anchor.stationId);
    }
    if (anchor.timestamp) {
      query += '&timestamp=' + encodeURIComponent(anchor.timestamp);
    }
    if (replayBackUrl) {
      query += '&replayBackUrl=' + encodeURIComponent(replayBackUrl);
    }
    return 'deviceLogs.html' + query;
  }
};