{"version":3,"file":"seriesToRows.cjs","sources":["../../../../src/transformations/transformers/seriesToRows.ts"],"sourcesContent":["import { omit } from 'lodash';\nimport { map } from 'rxjs/operators';\n\nimport { MutableDataFrame } from '../../dataframe/MutableDataFrame';\nimport { sortDataFrame } from '../../dataframe/processDataFrame';\nimport { isTimeSeriesFrames } from '../../dataframe/utils';\nimport { getFrameDisplayName } from '../../field/fieldState';\nimport {\n  Field,\n  FieldType,\n  TIME_SERIES_METRIC_FIELD_NAME,\n  TIME_SERIES_TIME_FIELD_NAME,\n  TIME_SERIES_VALUE_FIELD_NAME,\n} from '../../types/dataFrame';\nimport { DataTransformerInfo } from '../../types/transformations';\n\nimport { DataTransformerID } from './ids';\n\nexport interface SeriesToRowsTransformerOptions {}\n\nexport const seriesToRowsTransformer: DataTransformerInfo<SeriesToRowsTransformerOptions> = {\n  id: DataTransformerID.seriesToRows,\n  name: 'Series to rows',\n  description: 'Combines multiple series into a single serie and appends a column with metric name per value.',\n  defaultOptions: {},\n  operator: (options) => (source) =>\n    source.pipe(\n      map((data) => {\n        if (!Array.isArray(data) || data.length === 0) {\n          return data;\n        }\n\n        data = data.filter((frame) => frame.length > 0);\n        if (!isTimeSeriesFrames(data)) {\n          return data;\n        }\n\n        const timeFieldByIndex: Record<number, number> = {};\n        const targetFields = new Set<string>();\n        const dataFrame = new MutableDataFrame({\n          refId: `${DataTransformerID.seriesToRows}-${data.map((frame) => frame.refId).join('-')}`,\n          fields: [],\n        });\n        const metricField: Field = {\n          name: TIME_SERIES_METRIC_FIELD_NAME,\n          values: [],\n          config: {},\n          type: FieldType.string,\n        };\n\n        for (let frameIndex = 0; frameIndex < data.length; frameIndex++) {\n          const frame = data[frameIndex];\n\n          for (let fieldIndex = 0; fieldIndex < frame.fields.length; fieldIndex++) {\n            const field = frame.fields[fieldIndex];\n\n            if (field.type === FieldType.time) {\n              timeFieldByIndex[frameIndex] = fieldIndex;\n\n              if (!targetFields.has(TIME_SERIES_TIME_FIELD_NAME)) {\n                dataFrame.addField(copyFieldStructure(field, TIME_SERIES_TIME_FIELD_NAME));\n                dataFrame.addField(metricField);\n                targetFields.add(TIME_SERIES_TIME_FIELD_NAME);\n              }\n              continue;\n            }\n\n            if (!targetFields.has(TIME_SERIES_VALUE_FIELD_NAME)) {\n              dataFrame.addField(copyFieldStructure(field, TIME_SERIES_VALUE_FIELD_NAME));\n              targetFields.add(TIME_SERIES_VALUE_FIELD_NAME);\n            }\n          }\n        }\n\n        for (let frameIndex = 0; frameIndex < data.length; frameIndex++) {\n          const frame = data[frameIndex];\n\n          for (let valueIndex = 0; valueIndex < frame.length; valueIndex++) {\n            const timeFieldIndex = timeFieldByIndex[frameIndex];\n            const valueFieldIndex = timeFieldIndex === 0 ? 1 : 0;\n\n            dataFrame.add({\n              [TIME_SERIES_TIME_FIELD_NAME]: frame.fields[timeFieldIndex].values[valueIndex],\n              [TIME_SERIES_METRIC_FIELD_NAME]: getFrameDisplayName(frame),\n              [TIME_SERIES_VALUE_FIELD_NAME]: frame.fields[valueFieldIndex].values[valueIndex],\n            });\n          }\n        }\n\n        return [sortDataFrame(dataFrame, 0, true)];\n      })\n    ),\n};\n\nconst copyFieldStructure = (field: Field, name: string): Field => {\n  return {\n    ...omit(field, ['values', 'state', 'labels', 'config', 'name']),\n    name: name,\n    values: [],\n    config: {\n      ...omit(field.config, ['displayName', 'displayNameFromDS']),\n    },\n  };\n};\n"],"names":["DataTransformerID","map","isTimeSeriesFrames","dataFrame","MutableDataFrame","TIME_SERIES_METRIC_FIELD_NAME","FieldType","TIME_SERIES_TIME_FIELD_NAME","TIME_SERIES_VALUE_FIELD_NAME","getFrameDisplayName","sortDataFrame","omit"],"mappings":"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"}