(vegaSpec: Spec, datafile: DataFile, dataRefType: DataRefType, transform: Transforms[], scheme: string)
| 83 | } |
| 84 | |
| 85 | function serializeSpec(vegaSpec: Spec, datafile: DataFile, dataRefType: DataRefType, transform: Transforms[], scheme: string) { |
| 86 | const scales = cloneScales(vegaSpec); |
| 87 | const colorScale = scales.filter(scale => scale.name === SandDance.constants.ScaleNames.Color)[0]; |
| 88 | if (scheme.indexOf('dual_') >= 0) { |
| 89 | (colorScale as ScalesWithRange).range = SandDance.colorSchemes.filter(cs => cs.scheme === scheme)[0].colors; |
| 90 | } |
| 91 | const clone = cloneData(vegaSpec); |
| 92 | const data0 = clone.data[0]; |
| 93 | if (dataRefType === DataRefType.inline) { |
| 94 | const valuesData = data0 as ValuesData; |
| 95 | valuesData.format = { parse: 'auto', type: 'json' }; |
| 96 | valuesData.values = clone.values; |
| 97 | } else if (dataRefType === DataRefType.none) { |
| 98 | const valuesData = data0 as ValuesData; |
| 99 | valuesData.values = []; |
| 100 | if (transform) { |
| 101 | if (valuesData.transform) { |
| 102 | valuesData.transform.push.apply(valuesData.transform, transform); |
| 103 | } else { |
| 104 | valuesData.transform = transform; |
| 105 | } |
| 106 | } |
| 107 | } else if (dataRefType === DataRefType.url) { |
| 108 | const urlData = data0 as UrlData; |
| 109 | urlData.url = datafile.dataUrl; |
| 110 | urlData.format = { parse: 'auto', type: datafile.type }; |
| 111 | if (transform) { |
| 112 | if (urlData.transform) { |
| 113 | urlData.transform.push.apply(urlData.transform, transform); |
| 114 | } else { |
| 115 | urlData.transform = transform; |
| 116 | } |
| 117 | } |
| 118 | } |
| 119 | return { ...vegaSpec, data: clone.data, scales }; |
| 120 | } |
| 121 | |
| 122 | function defaultDataRefType(datafile: DataFile) { |
| 123 | if (datafile.dataUrl) { |
no test coverage detected