@dra2020/dra-types 1.8.136 → 1.8.138
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dra-types.js +9 -0
- package/dist/dra-types.js.map +1 -1
- package/lib/schemas.ts +10 -0
- package/package.json +2 -2
- package/dist/colordata.d.ts +0 -35
- package/dist/gencolor.d.ts +0 -1
package/dist/dra-types.js
CHANGED
|
@@ -2240,6 +2240,15 @@ exports.Schemas = {
|
|
|
2240
2240
|
},
|
|
2241
2241
|
KeySchema: { createdBy: 'HASH', id: 'RANGE' },
|
|
2242
2242
|
},
|
|
2243
|
+
'operations': {
|
|
2244
|
+
FileOptions: { map: true },
|
|
2245
|
+
Schema: {
|
|
2246
|
+
id: 'S',
|
|
2247
|
+
createdBy: 'S',
|
|
2248
|
+
createTime: 'S',
|
|
2249
|
+
},
|
|
2250
|
+
KeySchema: { createdBy: 'HASH', id: 'RANGE' },
|
|
2251
|
+
},
|
|
2243
2252
|
'cull': {
|
|
2244
2253
|
FileOptions: { map: true },
|
|
2245
2254
|
Schema: {
|
package/dist/dra-types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dra-types.js","mappings":"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,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAC;AAEW,0BAAkB,GAAQ;IACrC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;I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","sources":["webpack://dra-types/webpack/universalModuleDefinition","webpack://dra-types/./lib/alldt.ts","webpack://dra-types/./lib/bucketmap.ts","webpack://dra-types/./lib/cities.ts","webpack://dra-types/./lib/colormgr.ts","webpack://dra-types/./lib/csv.ts","webpack://dra-types/./lib/datasets.ts","webpack://dra-types/./lib/dra-types.ts","webpack://dra-types/./lib/groups.ts","webpack://dra-types/./lib/landmark.ts","webpack://dra-types/./lib/layer.ts","webpack://dra-types/./lib/packedfields.ts","webpack://dra-types/./lib/precincts.ts","webpack://dra-types/./lib/reverse.ts","webpack://dra-types/./lib/schemas.ts","webpack://dra-types/./lib/splittogeofeature.ts","webpack://dra-types/./lib/stateinfo.ts","webpack://dra-types/./lib/stats.ts","webpack://dra-types/./lib/vfeature.ts","webpack://dra-types/./lib/workqueue.ts","webpack://dra-types/external commonjs \"@dra2020/baseclient\"","webpack://dra-types/external commonjs \"object-hash\"","webpack://dra-types/webpack/bootstrap","webpack://dra-types/./lib/all.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dra-types\"] = factory();\n\telse\n\t\troot[\"dra-types\"] = factory();\n})(global, () => {\nreturn ","export * from './dra-types';\nexport * from './schemas';\nexport * from './bucketmap';\nexport * from './vfeature';\nexport * from './csv';\nexport * from './stats';\nexport * from './layer';\nexport * from './stateinfo';\nexport * from './workqueue';\nexport * from './landmark';\nexport * from './splittogeofeature';\nexport * from './reverse';\nexport * from './groups';\nexport * from './datasets';\nexport * from './precincts';\nexport * from './cities';\n","export const BucketMap: any =\n {\n 'default': 'dev-dra-us-west-2-723398989493',\n 'development': 'dev-dra-us-west-2-723398989493',\n 'production': 'dra-us-west-2-723398989493',\n 'state': 'dra-us-west-2-723398989493',\n 'state-dev': 'dev-dra-us-west-2-723398989493',\n 'logs': 'dra-uswest-logs',\n 'logs-dev': 'dra-uswest-logs',\n 'logs-archive': 'dra-uswest-logs-archive',\n 'logs-archive-dev': 'dra-uswest-logs-archive',\n 'memsqs': 'dra-uswest-memsqs',\n 'memsqs-dev': 'dra-uswest-memsqs',\n 'images': 'dra-uswest-images',\n 'images-dev': 'dra-uswest-images',\n 'datasets': 'dra-uswest-datasets',\n 'datasets-dev': 'dra-uswest-datasets',\n 'layers': 'dra-uswest-layers',\n 'layers-dev': 'dra-uswest-layers',\n 'data': 'dra-us-west-datafiles',\n 'data-dev': 'dra-us-west-datafiles-dev',\n 'splits': 'dra-block-cache',\n 'splits-dev': 'dra-block-cache-dev',\n 'counties': 'dra-county-cache',\n 'counties-dev': 'dra-county-cache-dev',\n 'geojson': 'dra-uswest-geojson',\n 'geojson-dev': 'dra-uswest-geojson',\n 'transfers': 'dra-transfers',\n 'transfers-dev': 'dra-transfers-dev',\n 'downloads': 'dra-uswest-downloads',\n 'downloads-dev': 'dra-uswest-downloads',\n 'editcache': 'dra-uswest-editcache',\n 'editcache-dev': 'dra-uswest-editcache-dev',\n }\n","export interface Cities\n{\n id?: string,\n state?: string,\n datasource?: string,\n geoids?: string[],\n name?: string,\n description?: string,\n labels?: string[],\n createdBy?: string,\n createTime?: string,\n modifyTime?: string,\n publishTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean,\n supersets?: string[],\n subsets?: string[],\n conflicts?: string[],\n}\n\nexport type CitiesIndex = { [id: string]: Cities };\n","// App libraries\nimport * as PF from \"./packedfields\";\nimport {isColorBy, parseColorBy, DatasetColor, DatasetFormat} from './datasets';\nimport {Util, Colors, Detail} from '@dra2020/baseclient'\n\n// All Groups Mosaic has 16 colors\n// Index values into the 16 colors\nexport const ColorBySolidWhite = 0;\nexport const ColorBySolidBlack = 1;\nexport const ColorBySolidHispanic = 2;\nexport const ColorBySolidAsian = 3;\nexport const ColorByMostlyWhite = 4;\nexport const ColorByMostlyBlack = 5;\nexport const ColorByMostlyHispanic = 6;\nexport const ColorByMostlyAsian = 7;\nexport const ColorByMostlyNative = 8;\nexport const ColorByMix = 9;\nexport const ColorByHispanicWhite = 10;\nexport const ColorByBlackWhite = 11;\nexport const ColorByHispanicBlack = 12;\nexport const ColorByAsianWhite = 13;\nexport const ColorByAsianHispanic = 14;\nexport const ColorByBlackAsian = 15;\n\n// Text color for All Groups Mosaic (Legend)\nexport const EthnicTextColor: string[] = [\n '#ffffff',\n '#ffffff',\n '#ffffff',\n '#ffffff',\n '#000000',\n '#000000',\n '#000000',\n '#000000',\n '#000000',\n '#000000',\n '#000000',\n '#000000',\n '#ffffff',\n '#000000',\n '#000000',\n '#ffffff',\n ];\n\nexport const ColorByGreatR = 0;\nexport const ColorByGoodR = 1;\nexport const ColorByFairR = 2;\nexport const ColorByEven = 3;\nexport const ColorByFairD = 4;\nexport const ColorByGoodD = 5;\nexport const ColorByGreatD = 6;\n\n\n// ****************** Colors, Color Stops and Color Functions for \"classic\" palettes *******************\nconst PartisanFewStops = [\n 0.00, // Carmine\n 0.20, // \n 0.30, // \n 0.40, // \n 0.45, //\n 0.50, // pale red\n 0.50, // pale blue\n 0.55, // \n 0.60, // \n 0.70, // \n 0.80, // \n 1.00, // Dark blue\n];\n\n// Like PartisanFewStops, but lose the gradient at two buckets at each edge to focus on competitive district differentiation\nexport let PartisanDistrictStops = [\n // Dark red\n //{ stop: 0.00, color: '#8B0000' }, // Dark red\n //{ stop: 0.40, color: '#8B0000' }, // .00 <= .40\n\n // Crimson\n //{ stop: 0.00, color: '#DC143C' }, // Crimson\n //{ stop: 0.40, color: '#DC143C' }, // .00 <= .40\n\n // Chilli Red\n //{ stop: 0.00, color: '#C21807' }, // Chilli Red\n //{ stop: 0.40, color: '#C21807' }, // .00 <= .40\n\n // Carmine\n 0.00, // Carmine\n 0.40, // .00 <= .40\n\n 0.40, // \n 0.45, // .40 <= .45\n 0.45, //\n 0.50, // .45 <= .50\n 0.50, // \n 0.55, // .50 <= .55\n 0.55, // \n 0.60, // .55 <= .60\n 0.60, // \n 1.00, // .60 <= 1.0\n];\n\n/*export let PartisanCustomStops = [\n { stop: 0.00, color: '#FF0000' }, // Dark red\n { stop: 0.20, color: '#FF0000' }, // \n { stop: 0.30, color: '#FF0000' }, // \n { stop: 0.40, color: '#CD5C5C' }, // Indian red\n { stop: 0.45, color: '#DB7093' }, // Pale Violet Red\n { stop: 0.499, color: '#DB7093' }, // Light Pink\n { stop: 0.50, color: '#FFFFFF' }, // white\n { stop: 0.501, color: '#87CEFA' }, // Light Sky Blue\n { stop: 0.55, color: '#00bFFF' }, // Deep Sky Blue\n { stop: 0.60, color: '#002366' }, // Royal Blue\n { stop: 0.70, color: '#0000CD' }, // Medium Blue\n { stop: 0.80, color: '#191970' }, // \n { stop: 1.00, color: '#191970' }, // Midnight Blue\n];*/\n\nexport let PartisanPrecinctStops = PartisanFewStops;\n\nexport let EthnicFewStops = [\n 0.00, // \n 0.40, // \n 0.50, //\n 1.00, // \n];\n\nexport type PaletteDefaults = { [key: string]: string };\nexport const DefaultPaletteDefaults: PaletteDefaults = {\n partisanScale: 'partisanclassic',\n partisanDistrictsScale: 'partisandistrictsclassic',\n demographicsScale: 'demographicsclassic',\n demographicsAllGroups: 'allgroupsclassic',\n };\n\nexport function makeStops(stops: number[], colors: string[]): Util.Stop[]\n{\n // Lengths should be equal\n const len: number = stops.length <= colors.length ? stops.length : colors.length;\n let result: Util.Stop[] = []\n for (let i = 0; i < len; i++)\n result.push({stop: stops[i], color: colors[i]});\n return result;\n}\n\nfunction partisanStops(stops: number[], pd: PaletteDefaults): Util.Stop[]\n{\n const palette: PaletteName = pd['partisanScale'] as PaletteName;\n return makeStops(stops, colorsFromStopsPartisan(palette, 'partisanScale', stops));\n}\n\nfunction partisanDistrictStops(stops: number[], pd: PaletteDefaults): Util.Stop[]\n{\n const palette: PaletteName = pd['partisanDistrictsScale'] as PaletteName;\n return makeStops(stops, colorsFromStopsPartisan(palette, 'partisanDistrictsScale', stops));\n}\n\nfunction ethnicStops(stops: number[], pd: PaletteDefaults): Util.Stop[]\n{\n const palette: PaletteName = pd['demographicsScale'] as PaletteName;\n if (palette === 'demographicsclassic')\n return makeStops(stops, Colors.EthnicFewClassicColors);\n return makeStops(stops, colorsFromStops(palette, stops, Colors.EthnicFewClassicColors));\n}\n\nexport function ethnicBackgroundColor(index: number, pd: PaletteDefaults): string\n{\n const palette: PaletteName = pd['demographicsAllGroups'] as PaletteName;\n const colors: string[] = allGroups16Colors(palette, Colors.getPalette(palette));\n if (index < colors.length)\n return colors[index];\n return '#ffffff';\n}\n\nexport function ToAllEthnicColor(agg: PF.PackedFields, dc: PF.DatasetContext, pd: PaletteDefaults): number\n{\n // Use VAP/CVAP if it exists\n const did = dc.primeVDS ? dc.primeVDS : dc.primeDDS\n const builtin = dc.dsMeta[did]?.builtin || did;\n return AggregateEthnicColor(PF.ToGetter(agg, dc, did), pd, builtin.endsWith('NH'));\n}\n\nexport function ToPartisanColorStr(agg: PF.PackedFields, dc: PF.DatasetContext, pd: PaletteDefaults): string\n{\n return ToPartisanColor(agg, dc, partisanStops(PartisanPrecinctStops, pd));\n}\n\nexport function ToPartisanDistrictColor(agg: PF.PackedFields, dc: PF.DatasetContext, pd: PaletteDefaults): string\n{\n return ToPartisanColor(agg, dc, partisanDistrictStops(PartisanDistrictStops, pd));\n}\n\nfunction ToPartisanColor(agg: PF.PackedFields, dc: PF.DatasetContext, stops: Util.GradientStops): string\n{\n const getter = PF.ToGetter(agg, dc, dc.primeEDS);\n return AggregatePartisanColorStr(getter, stops);\n}\n\nexport function ToPartisanShiftColor(agg: PF.PackedFields, dc: PF.DatasetContext, datasets: string[], pd: PaletteDefaults, isDistrict?: boolean): string\n{\n if (!datasets || datasets.length < 2)\n return '';\n\n const shift: number = PF.calcShift(agg, dc, datasets[0], datasets[1]);\n if (shift == null)\n return null;\n\n const defaultIsDistrict = isDistrict ?? false; // make the optional isDistrict parameter to false by default\n \n const rep: number = 0.5 - (shift / 2);\n const dem: number = 0.5 + (shift / 2);\n const stops: Util.GradientStops = defaultIsDistrict ? partisanDistrictStops(PartisanDistrictStops, pd) : partisanStops(PartisanPrecinctStops, pd);\n const color: string = ColorFromRGBPcts(rep, 0, dem, stops);\n // console.log('Shift (r, d, color): (' + rep + ', ' + dem + ', ' + color + ')');\n return color;\n}\n\nexport function ToEthnicColorStr(agg: PF.PackedFields, dc: PF.DatasetContext, pd: PaletteDefaults, detail: string): string\n{\n let ethnic: string = 'Wh';\n let total: string = 'Tot';\n let bInvert: boolean = false;\n const did = dc.primeVDS ? dc.primeVDS : dc.primeDDS;\n const builtin = dc.dsMeta[did]?.builtin || did;\n switch (detail)\n {\n case null: case '': case 'all':\n let c = ToAllEthnicColor(agg, dc, pd); // special case \n return c >= 0 ? ethnicBackgroundColor(c, pd) : '#ffffff';\n case 'white': ethnic = 'Wh'; break;\n case 'nonwhite': ethnic = 'Wh'; bInvert = true; break;\n case 'black': ethnic = builtin.endsWith('NH') ? 'Bl' : 'BlC'; break;\n case 'hisp': ethnic = 'His'; break;\n case 'native': ethnic = builtin.endsWith('NH') ? 'Nat' : 'NatC'; break;\n case 'asianpi': ethnic = 'AsnPI'; break;\n case 'asian': ethnic = builtin.endsWith('NH') ? 'Asn' : 'AsnC'; break;\n case 'pac': ethnic = builtin.endsWith('NH') ? 'Pac' : 'PacC'; break;\n case 'other': ethnic = 'OthAl'; break;\n case 'mix': ethnic = 'Mix'; break;\n default: break;\n }\n\n const getter = PF.ToGetter(agg, dc, did);\n let den = getter(total);\n let num = getter(ethnic);\n if (den === undefined || isNaN(den) || num === undefined || isNaN(num))\n return '#ffffff';\n\n if (den == 0)\n return '#ffffff';\n const pct = bInvert ? 1 - (num / den) : num / den;\n return Util.execGradient(ethnicStops(EthnicFewStops, pd), pct);\n}\n\n// All Groups Mosaic\nexport function AggregateEthnicColor(getter: PF.FieldGetter, pd: PaletteDefaults, nhAlone: boolean): number\n{\n // Dataset should have 'Tot' field\n let totField = 'Tot';\n let totalPop = getter(totField);\n if (totalPop == 0) return -1;\n\n // Field names hard-coded\n let white: number = getter('Wh') / totalPop;\n let hisp: number = getter('His') / totalPop;\n let black: number = 0;\n let native: number = 0;\n let asianPI: number = 0;\n if (nhAlone)\n {\n black= getter('Bl') / totalPop;\n native = getter('Nat') / totalPop;\n asianPI = (getter('Asn') + getter('Pac')) / totalPop;\n }\n else\n {\n black= getter('BlC') / totalPop;\n native = getter('NatC') / totalPop;\n asianPI = (getter('AsnC') + getter('PacC')) / totalPop;\n }\n\n if (white >= 0.75)\n return ColorBySolidWhite;\n if (black >= 0.75)\n return ColorBySolidBlack;\n if (hisp >= 0.75)\n return ColorBySolidHispanic;\n if (asianPI >= 0.75)\n return ColorBySolidAsian;\n if (white >= 0.5 && black < 0.3 && hisp < 0.3 && native < 0.3 && asianPI < 0.3)\n return ColorByMostlyWhite;\n if (black >= 0.5 && white < 0.3 && hisp < 0.3 && native < 0.3 && asianPI < 0.3)\n return ColorByMostlyBlack;\n if (hisp >= 0.5 && white < 0.3 && black < 0.3 && native < 0.3 && asianPI < 0.3)\n return ColorByMostlyHispanic;\n if (asianPI >= 0.5 && white < 0.3 && black < 0.3 && native < 0.3 && hisp < 0.3)\n return ColorByMostlyAsian;\n if (native > 0.5)\n return ColorByMostlyNative;\n if (hisp >= 0.3 && white >= 0.3 && hisp + white > 0.75)\n return ColorByHispanicWhite;\n if (black >= 0.3 && white >= 0.3 && black + white > 0.75)\n return ColorByBlackWhite;\n if (hisp >= 0.3 && black >= 0.3 && hisp + black > 0.75)\n return ColorByHispanicBlack;\n if (asianPI >= 0.3 && white >= 0.3 && asianPI + white > 0.75)\n return ColorByAsianWhite;\n if (asianPI >= 0.3 && hisp >= 0.3 && asianPI + hisp > 0.75)\n return ColorByAsianHispanic;\n if (black >= 0.3 && asianPI >= 0.3 && black + asianPI > 0.75)\n return ColorByBlackAsian;\n return ColorByMix;\n}\n\n// This is used only for 2016_BG analytics, seemingly only for values, not colors (dave 12/9/21)\nexport function AggregatePartisanColor(getter: PF.FieldGetter): number\n{\n // Dataset should have 'Tot' field\n let totField = 'Tot';\n let presTot = getter(totField);\n if (presTot == 0) return -1;\n\n // TODO: Field names hard-coded\n let presR = getter('R');\n let presD = getter(' D');\n\n if (presTot === undefined || presD === undefined || presR === undefined || presTot <= 0)\n return -1;\n\n let pctD = presD / presTot;\n let pctR = presR / presTot;\n let diff = pctD - pctR;\n if (diff < -0.20)\n return ColorByGreatR;\n if (diff < -0.10)\n return ColorByGoodR;\n if (diff < -0.02)\n return ColorByFairR;\n if (diff > 0.20)\n return ColorByGreatD;\n if (diff > 0.10)\n return ColorByGoodD;\n if (diff > 0.02)\n return ColorByFairD;\n return ColorByEven;\n}\n\nexport function AggregatePartisanColorStr(getter: PF.FieldGetter, stops: Util.GradientStops): string\n{\n // Dataset should have 'Tot' field\n let totField = 'Tot';\n let presTot = getter(totField);\n if (presTot == 0) return '';\n\n // TODO: Field names hard-coded\n let presR = getter('R');\n let presD = getter('D');\n\n if (presTot === undefined || presD === undefined || presR === undefined || presTot <= 0)\n return '';\n\n let pctD: number = presD / presTot;\n let pctR: number = presR / presTot;\n let pctOth: number = (presTot - presD - presR) / presTot;\n const color: string = ColorFromRGBPcts(pctR, pctOth, pctD, stops);\n //console.log('Agg (r, d, color): (' + pctR + ', ' + pctD + ', ' + color + ')');\n return color;\n}\n\n// This is the new gradient code\nexport function ColorFromRGBPcts(pctRed: number, pctGreen: number, pctBlue: number, stops: Util.GradientStops): string\n{\n let pctTot = pctRed + pctBlue;\n if (pctTot == 0) return '#ffffff';\n pctBlue /= pctTot;\n return Util.execGradient(stops, pctBlue);\n}\n\n// ****************** End of \"classic\" palettes *****************\n\nexport type ColorUse = 'districts' | 'partisanScale' | 'demographicsScale' | 'demographicsAllGroups' | 'partisanDistrictsScale';\n\n// Currently supported palettes\nexport const PaletteNames = ['jet_r', 'turbo_r', 'inferno_r', 'viridis_r', 'magma_r', 'plasma_r', 'Greys', 'bone_r',\n 'draclassic', 'demographicsclassic', 'partisanclassic', 'allgroupsclassic', 'partisandistrictsclassic'] as const;\nexport type PaletteName = typeof PaletteNames[number];\n\nexport function colorsFromStops(palette: PaletteName, stops: number[], classicColors: string[]): string[]\n{\n // Use classicColors to see where there are duplicate colors\n const allColors: string[] = Colors.getPalette(palette);\n let colors: string[] = [];\n for (let i = 0; i < stops.length; i++)\n {\n const stop: number =\n (i + 1 < classicColors.length && classicColors[i] == classicColors[i + 1]) ? (stops[i] + stops[i + 1]) / 2 :\n (i > 0 && i < classicColors.length && classicColors[i - 1] == classicColors[i]) ? (stops[i - 1] + stops[i]) / 2 : stops[i];\n \n let inx: number = Math.floor(allColors.length * stop);\n if (inx >= allColors.length) inx = allColors.length - 1;\n colors.push(allColors[inx]);\n }\n return colors;\n}\n\nexport function colorsFromStopsPartisan(palette: PaletteName, colorUse: ColorUse, stops: number[]): string[]\n{\n if (palette === 'partisanclassic')\n return Colors.PartisanPrecinctClassicColors;\n if (palette === 'partisandistrictsclassic')\n return Colors.PartisanDistrictClassicColors;\n\n // For partisanScale and partisanDistrictsScale; indexes match classic color pattern\n const allColors: string[] = Colors.getPalette(palette);\n if (allColors.length < Colors.MaxColors)\n return Colors.PartisanPrecinctClassicColors; // Safety check; shouldn't happen\n\n let colors: string[] = [];\n\n const indexes: number[] = colorUse === 'partisanScale' ?\n [15, 27, 37, 47, 57, 67, 82, 92, 102, 112, 122, 134] : [15, 15, 37, 37, 47, 67, 82, 102, 122, 122, 134, 134];\n for (let i = 0; i < stops.length; i++)\n {\n colors.push(allColors[indexes[i]]);\n }\n return colors;\n}\n\nexport function allGroups16Colors(palette: PaletteName, colors: string[])\n{\n let modColors: string[] = [];\n //if (palette === 'allgroupsclassic') // Only support classic for now\n {\n modColors.push(Colors.EthnicBackgroundColor[ColorBySolidWhite]); // pos 0\n modColors.push(Colors.EthnicBackgroundColor[ColorBySolidBlack]); // pos 1\n modColors.push(Colors.EthnicBackgroundColor[ColorBySolidHispanic]);// pos 2\n modColors.push(Colors.EthnicBackgroundColor[ColorBySolidAsian]); // pos 3\n modColors.push(Colors.EthnicBackgroundColor[ColorByMostlyWhite]); // pos 4\n modColors.push(Colors.EthnicBackgroundColor[ColorByMostlyBlack]); // pos 5\n modColors.push(Colors.EthnicBackgroundColor[ColorByMostlyHispanic]);// pos 6\n modColors.push(Colors.EthnicBackgroundColor[ColorByMostlyAsian]); // pos 7\n modColors.push(Colors.EthnicBackgroundColor[ColorByMostlyNative]); // pos 8\n modColors.push(Colors.EthnicBackgroundColor[ColorByMix]); // pos 9\n modColors.push(Colors.EthnicBackgroundColor[ColorByHispanicWhite]);// pos 10\n modColors.push(Colors.EthnicBackgroundColor[ColorByBlackWhite]); // pos 11\n modColors.push(Colors.EthnicBackgroundColor[ColorByHispanicBlack]);// pos 12\n modColors.push(Colors.EthnicBackgroundColor[ColorByAsianWhite]); // pos 13\n modColors.push(Colors.EthnicBackgroundColor[ColorByAsianHispanic]);// pos 14\n modColors.push(Colors.EthnicBackgroundColor[ColorByBlackAsian]); // pos 15\n }\n /*else if (palette === 'viridis_r' || palette === 'plasma_r')\n {\n modColors.push(colors[149]);\n modColors.push(colors[129]);\n modColors.push(colors[109]);\n modColors.push(colors[89]);\n modColors.push(colors[139]);\n modColors.push(colors[119]);\n modColors.push(colors[99]);\n modColors.push(colors[79]);\n modColors.push(colors[0]);\n modColors.push(colors[9]);\n modColors.push(colors[29]);\n modColors.push(colors[19]);\n modColors.push(colors[49]);\n modColors.push(colors[39]);\n modColors.push(colors[69]);\n modColors.push(colors[59]); \n }\n else if (palette === 'magma_r')\n {\n modColors.push(colors[134]);\n modColors.push(colors[116]);\n modColors.push(colors[98]);\n modColors.push(colors[80]);\n modColors.push(colors[125]);\n modColors.push(colors[107]);\n modColors.push(colors[89]);\n modColors.push(colors[71]);\n modColors.push(colors[0]);\n modColors.push(colors[8]);\n modColors.push(colors[26]);\n modColors.push(colors[17]);\n modColors.push(colors[44]);\n modColors.push(colors[35]);\n modColors.push(colors[62]);\n modColors.push(colors[53]); \n }*/\n return modColors;\n}\n\nexport interface DistrictCache\n{\n colorElection?: string;\n colorEthnic?: string;\n colorExtended?: string;\n colorSolid?: string;\n}\n\n// Color property we need out of the full DistrictProps\nexport interface ColorProp\n{\n color: string,\n}\nexport type ColorProps = Array<ColorProp>;\n\nexport interface DistrictColorParams\n{\n datasetContext: PF.DatasetContext,\n mapColors: ColorProps,\n aggregates: PF.PackedFields[],\n paletteDefaults: PaletteDefaults,\n useFirstColor: boolean,\n usePalette: string,\n colorDistrictsBy: string,\n shiftDatasets?: string[],\n}\n\nfunction safeNumber(n: any): number { n = Number(n); return typeof n !== 'number' || isNaN(n) ? 0 : n }\nfunction safeStops(s: string): number[]\n{\n if (!s) return EthnicFewStops;\n return s.split(',').map(safeNumber);\n}\nfunction safeColors(s: string): string[]\n{\n if (!s) return ['#fafafa', '#aaaaaa', '#666666', '#111111'];\n return s.split(',').map(s => s.trim());\n}\n\nexport function ToExtendedColor(agg: PF.PackedFields, dc: PF.DatasetContext, colorBy: string): string\n{\n // compute pct\n const {datasetid, field} = parseColorBy(colorBy);\n if (!datasetid || !field || !dc.dsMeta || !dc.dsMeta[datasetid])\n return '#ffffff';\n const meta = dc.dsMeta[datasetid];\n const dsfield = meta.fields ? meta.fields[field] : null;\n const dscolor = meta.colors ? meta.colors.find((c: DatasetColor) => c.shortCaption === field) : null;\n if (!dsfield && !dscolor)\n return '#ffffff';\n if (dscolor)\n {\n let stops = safeStops(dscolor.stops);\n let colors = safeColors(dscolor.colors);\n if (stops.length != colors.length)\n {\n stops = EthnicFewStops;\n colors = safeColors('');\n }\n let o: any = {};\n let getter = PF.ToGetter(agg, dc, datasetid);\n Object.keys(meta.fields).forEach(f => o[f] = getter(f));\n let formatter = new Detail.FormatDetail(dscolor.expr);\n let result = formatter.format(Detail.FormatDetail.prepare(o));\n let intensity = Math.min(Math.max(result.n || 0, 0), 1);\n return Util.execGradient(makeStops(stops, colors), intensity);\n }\n else\n {\n let getter = PF.ToGetter(agg, dc, datasetid);\n let fields = PF.sortedFieldList(meta);\n let den = 0;\n if (meta.fields['Tot'])\n den = getter('Tot');\n else\n fields.forEach(f => { den += getter(f) });\n let num = getter(field);\n\n // Careful...\n if (den == 0 || den === undefined || isNaN(den) || num === undefined || isNaN(num))\n return '#ffffff';\n\n return Util.execGradient(makeStops(EthnicFewStops, Colors.EthnicFewClassicColors), num / den);\n }\n}\n\nexport function computeDistrictColors(params: DistrictColorParams): DistrictCache[]\n{\n let dcNew: DistrictCache[] = [];\n for (let i: number = 0; i < params.aggregates.length; i++)\n {\n let agg = params.aggregates[i];\n let mapColor = i < params.mapColors.length ? params.mapColors[i].color : Colors.genColor(i, params.useFirstColor, params.usePalette);\n let dc: DistrictCache = {};\n\n // Compute election color and partisan color\n dc.colorEthnic = mapColor;\n dc.colorElection = ToPartisanDistrictColor(agg, params.datasetContext, params.paletteDefaults);\n\n switch (params.colorDistrictsBy)\n {\n case 'election':\n dc.colorSolid = dc.colorElection;\n break;\n case 'nonwhite':\n case 'hisp':\n case 'black':\n case 'native':\n case 'asian':\n case 'pac':\n case 'all':\n dc.colorEthnic = ToEthnicColorStr(agg, params.datasetContext, params.paletteDefaults, params.colorDistrictsBy);\n dc.colorSolid = dc.colorEthnic;\n break;\n case 'elecshift':\n if (params.shiftDatasets && params.shiftDatasets.length == 2) \n {\n dc.colorSolid = ToPartisanShiftColor(agg, params.datasetContext, params.shiftDatasets, params.paletteDefaults, true);\n } \n else \n {\n dc.colorSolid = mapColor;\n }\n break;\n default:\n if (isColorBy(params.colorDistrictsBy))\n {\n dc.colorExtended = ToExtendedColor(agg, params.datasetContext, params.colorDistrictsBy);\n dc.colorSolid = dc.colorExtended;\n }\n else\n dc.colorSolid = mapColor;\n break;\n }\n dcNew.push(dc);\n }\n return dcNew;\n}\n\n// Dotmap support\nexport interface RGB { r: number, g: number, b: number };\n\nexport const BinRed = 0\nexport const BinOrangeRed = 1;\nexport const BinBrown = 2;\nexport const BinOrange = 3;\nexport const BinGold = 4;\nexport const BinYellow = 5;\nexport const BinGreenish = 6;\nexport const BinChartreuse = 7;\nexport const BinLime = 8;\nexport const BinMediumSpringGreen = 9;\nexport const BinCyan = 10;\nexport const BinLightBlue = 11;\nexport const BinBlue = 12;\nexport const BinBlueViolet = 13;\nexport const BinDarkViolet = 14;\nexport const BinMagenta = 15;\nexport const BinDeepPink = 16;\nexport const BinBlack = 17;\n\n// Ethnic colors\nexport const BinEthnicWhite = BinLightBlue;\nexport const BinEthnicBlack = BinGreenish;\nexport const BinEthnicAsian = BinRed;\nexport const BinEthnicHispanic = BinOrange;\nexport const BinEthnicOther = BinBrown;\n\nexport const BinColorLookup: RGB[] = [\n { r: 0xff, g: 0x00, b: 0x00 }, // 0 - red\n { r: 0xff, g: 0x45, b: 0x00 }, // 1 - orange red\n { r: 0x99, g: 0x66, b: 0x33 }, // 2 - brown\n { r: 0xff, g: 0xaa, b: 0x00 }, // 3 - orange\n { r: 0xff, g: 0xd7, b: 0x00 }, // 4 - gold\n { r: 0xff, g: 0xd7, b: 0x00 }, // 5 - yellow\n { r: 0x9f, g: 0xd4, b: 0x00 }, // 6 - greenish\n { r: 0x7f, g: 0xff, b: 0x00 }, // 7 - chartreuse\n { r: 0x00, g: 0xff, b: 0x00 }, // 8 - lime\n { r: 0x00, g: 0xfa, b: 0x9a }, // 9 - medium spring green\n { r: 0x00, g: 0xff, b: 0xff }, // 10 - cyan\n { r: 0x73, g: 0xb2, b: 0xff }, // 11 - light blue\n { r: 0x00, g: 0x00, b: 0xff }, // 12 - blue\n { r: 0x8a, g: 0x2b, b: 0xe2 }, // 13 - blue violet\n { r: 0x94, g: 0x00, b: 0xd3 }, // 14 - dark violet\n { r: 0xff, g: 0x00, b: 0xff }, // 15 - magenta\n { r: 0xff, g: 0x14, b: 0x93 }, // 16 - deep pink\n { r: 0x00, g: 0x00, b: 0x00 }, // 17 - black\n];\n\n// Map ordering to Bin* lookup values\nconst ColorOrderEthnic = 'wbaho'; // abcde\n\n// Map number of fields to color selection\nexport const FieldCountToColors: { [nfields: number]: number[] } = {\n [1]: [ BinBrown ],\n [2]: [ BinRed, BinBlue ],\n [3]: [ BinRed, BinBlue, BinBrown ],\n [4]: [ BinRed, BinBlue, BinBrown, BinGreenish ],\n [5]: [ BinLightBlue, BinGreenish, BinRed, BinOrange, BinBrown ],\n [6]: [ BinRed, BinBrown, BinGold, BinGreenish, BinLightBlue, BinBlueViolet ],\n [7]: [ BinRed, BinBrown, BinGold, BinBlueViolet, BinMagenta , BinGreenish, BinLightBlue ],\n [8]: [ BinRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta , BinGreenish, BinLightBlue ],\n [9]: [ BinRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta , BinGreenish, BinLightBlue, BinBlue ],\n [10]: [ BinRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta , BinGreenish, BinCyan, BinLightBlue, BinBlue ],\n [11]: [ BinRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta , BinGreenish, BinLime, BinCyan, BinLightBlue, BinBlue ],\n [12]: [ BinRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta, BinDeepPink, BinGreenish, BinMediumSpringGreen, BinCyan, BinLightBlue, BinBlue ],\n [13]: [ BinRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta, BinDeepPink, BinGreenish, BinLime, BinMediumSpringGreen, BinCyan, BinLightBlue, BinBlue ],\n [14]: [ BinRed, BinOrangeRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta, BinDeepPink, BinGreenish, BinLime, BinMediumSpringGreen, BinCyan, BinLightBlue, BinBlue ],\n [15]: [ BinRed, BinOrangeRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinDarkViolet, BinMagenta, BinDeepPink, BinGreenish, BinLime, BinMediumSpringGreen, BinCyan, BinLightBlue, BinBlue ],\n [16]: [ BinRed, BinOrangeRed, BinBrown, BinOrange, BinGold, BinYellow, BinBlueViolet, BinDarkViolet, BinMagenta, BinDeepPink, BinGreenish, BinLime, BinMediumSpringGreen, BinCyan, BinLightBlue, BinBlue ],\n};\nexport const MaxFields = 16;\n\n\nexport function colorindexToRGB(colorindex: number): RGB\n{\n return BinColorLookup[colorindex] || BinColorLookup[BinBrown];\n}\n\nexport const ColorFlags = 'abcdefghijklmnopqrstuvwxyz';\n\nexport function colorflagToColorindex(nfields: number, colorflag: string): number\n{\n let i = ColorFlags.indexOf(colorflag);\n return i >= 0 && nfields > 0 && nfields <= MaxFields ? FieldCountToColors[nfields][i] : BinBrown;\n}\n\nexport function colororderToColorindex(nfields: number, order: number): number\n{\n return order >= 0 && nfields > 0 && nfields <= MaxFields ? FieldCountToColors[nfields][order] : BinBrown;\n}\n","// Public libraries\nimport { Util, CSV, G } from '@dra2020/baseclient';\n\n// Local library\nimport * as VF from './vfeature';\n\n// Used internally to index into District Properties Array\nexport type BlockMap = { [id: string]: number };\n\n// Used more generically and allows string districtIDs\nexport type BlockMapping = { [id: string]: string };\n\nexport type RevBlockMapping = { [id: string]: string[] };\n\n// Alternate block mapping (only supports <1 std>: <Many alt>)\nexport type AltBlockMapping = { [blockid: string]: {[blockid: string]: number} }; // {stdblock: {altblock1: pop1, altblock2: pop2, ...}}\n\nlet reNumeric = /^(\\D*)(\\d*)(\\D*)$/;\nlet reDistrictNumber = /^\\d+$/;\nlet reDistrictNumeric = /^\\d/;\n\n// Normalize any numeric part to have no padded leading zeros\nexport function canonicalDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n if (a[2].length > 0)\n a[2] = String(Number(a[2]));\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\nfunction reverseSubMapping(mbm: G.MultiBlockMapping, n: number): G.ReverseBlockMapping\n{\n let rev: any = {};\n\n mbm.forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nfunction reverseBlockgroupMapping(mbm: G.MultiBlockMapping): G.ReverseBlockMapping\n{\n return reverseSubMapping(mbm, 12);\n}\n\n// Normalize any numeric part to have four digits with padded leading zeros\n// so alphabetic sorting will result in correct numeric sort for mixed alphanumber\n// district labels.\nexport function canonicalSortingDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n {\n switch (s.length)\n {\n case 1: s = `000${s}`; break;\n case 2: s = `00${s}`; break;\n case 3: s = `0${s}`; break;\n }\n a[2] = s;\n }\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\n// Return numeric part of districtID (or -1 if there is none)\nexport function canonicalNumericFromDistrictID(districtID: string): number\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n return Number(s);\n }\n return -1;\n}\n\nexport function canonicalDistrictIDFromNumber(districtID: string, n: number): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n a[2] = String(n);\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n else\n districtID = String(n);\n return districtID;\n}\n\n// Numbers start at 1\nexport type DistrictOrder = { [districtID: string]: number };\n\n// If purely numeric districtIDs and we are missing some number of IDs less than\nexport function canonicalDistrictIDGapFill(keys: string[]): string[]\n{\n if (keys == null || keys.length == 0) return keys;\n let nonNumeric = keys.find((s: string) => !reDistrictNumber.test(s)) !== undefined;\n if (nonNumeric) return keys;\n let max = Number(keys[keys.length-1]);\n if (max == keys.length || (max - keys.length) > keys.length) return keys; // no gaps or too many gaps\n\n // OK, finally going to fill some gaps\n for (let i: number = 0; i < keys.length; i++)\n {\n let here = Number(keys[i]);\n while (here > i+1)\n {\n keys.splice(i, 0, canonicalSortingDistrictID(String(i+1)));\n i++;\n }\n }\n\n return keys;\n}\n\nexport function canonicalDistrictIDOrdering(order: DistrictOrder): DistrictOrder\n{\n let keys = Object.keys(order);\n let i: number;\n let a: any = [];\n let template: string = undefined;\n\n keys = keys.map((s: string) => canonicalSortingDistrictID(s));\n\n // Let's omit this. Some official maps have odd numbering schemes and we don't\n // want to generate anomalous spurious extra districts.\n //keys = canonicalDistrictIDGapFill(keys);\n\n keys.sort();\n order = {};\n for (i = 0; i < keys.length; i++)\n order[canonicalDistrictID(keys[i])] = i+1;\n\n // Remove water districts\n if (order['ZZZ']) delete order['ZZZ'];\n if (order['ZZ']) delete order['ZZ'];\n\n return order;\n}\n\nexport interface OneCSVLine\n{\n geoid: string;\n districtID: string;\n}\n\nlet reArray = [\n // comma-delimited\n /^(\\d\\d[^\\s,']*)[\\s]*,[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s,\"]*)[\\s]*,[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n\n // pipe-delimited, new 2020 Census Bureau format\n /^(\\d\\d[^\\s\\|']*)[\\s]*\\|[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s\\|\"]*)[\\s]*\\|[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n ];\nlet reStart = 0; // last successful regex\n\nexport function parseCSVLine(line: string): OneCSVLine\n{\n if (line == null || line == '') return null;\n\n // start at last successful parse so we don't have to\n // iterate through all the regex's for each line.\n for (let i = reStart; i < reArray.length; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n for (let i = 0; i < reStart; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n return null;\n}\n\nexport function csvLine(coder: Util.Coder, line: string): OneCSVLine\n{\n if (!coder || !line) return null;\n let parse = new CSV.ParseOne(coder, line);\n if (parse.length != 2) return null;\n let re = /^\\d\\d/;\n if (!re.exec(parse.fields[0])) return null;\n return { geoid: parse.fields[0], districtID: parse.fields[1] };\n}\n\nexport interface ConvertResult\n{\n inBlockMap: BlockMapping;\n inMbm: G.MultiBlockMapping;\n outMbm: G.MultiBlockMapping;\n outValid: boolean;\n outState: string;\n outMap: BlockMapping;\n outOrder: DistrictOrder;\n outDistrictToSplit: VF.DistrictToSplitBlock;\n nFeatures: number;\n nSplitFromFeatures: number;\n nSplitToFeatures: number;\n nBlocks: number;\n nSplitBlocks: number;\n}\n\nexport function blockmapToState(blockMap: BlockMapping): string\n{\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n return geoidToState(id);\n return null;\n}\n\nexport function blockmapToVTDmap(blockMap: BlockMapping, mbm: G.MultiBlockMapping, altBlocks: AltBlockMapping): ConvertResult\n{\n return blockmapToVTDmapCustom(blockMap, mbm, mbm, altBlocks);\n}\n\n// blockToVTD:\n// Take BlockMapping (simple map of GEOID to districtID) and a per-state map of block-level GEOID to VTD\n// and return the output mapping of VTD to districtID, as well a data structure that describes any VTD's\n// that need to be split between districtIDs. Also returns the DistrictOrder structure that defines the\n// districtIDs that were used by the file.\n//\n// The state (as specified by the first two digits of the GEOID) is also determined. If the GEOID's do\n// not all specify the same state, the mapping is considered invalid and the outValid flag is set to false.\n//\n\nexport function blockmapToVTDmapCustom(\n blockMap: BlockMapping,\n inMbm: G.MultiBlockMapping,\n outMbm: G.MultiBlockMapping,\n altBlocks: AltBlockMapping): ConvertResult\n{\n let res: ConvertResult = {\n inBlockMap: blockMap,\n inMbm: inMbm,\n outMbm: outMbm,\n outValid: true,\n outState: null,\n outMap: {},\n outOrder: {},\n outDistrictToSplit: {},\n nFeatures: 0,\n nSplitFromFeatures: 0,\n nSplitToFeatures: 0,\n nBlocks: 0,\n nSplitBlocks: 0,\n };\n\n let bmGather: { [geoid: string]: { [district: string]: { [blockid: string]: boolean } } } = {};\n\n let revBG: RevBlockMapping; // lazy create on demand\n\n function isBlockID(b: string): boolean { return b.length >= 15 && (!inMbm || !!inMbm.map(b)) }\n\n if (altBlocks)\n {\n // Create reverse of altBlocks if they exist {altBlockid: {stdBlockid, pop}, ...}\n let revAltBlocks: {[altBlockid: string]: {blockid: string, pop: number}} = {};\n Object.keys(altBlocks).forEach(blockid =>\n {\n Object.keys(altBlocks[blockid]).forEach(altBlockid =>\n {\n revAltBlocks[altBlockid] = {blockid: blockid, pop: altBlocks[blockid][altBlockid]}\n })\n });\n // Now walk input and build new blockMap with altBlocks replaced with stdBlocks\n let blockMapP: BlockMapping = {};\n let bestAlt: {[blockid: string]: {dist: string, pop: number}} = {};\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let n: number = id.length;\n if (isBlockID(id) && revAltBlocks[id])\n {\n if (!bestAlt[revAltBlocks[id].blockid] || bestAlt[revAltBlocks[id].blockid].pop < revAltBlocks[id].pop)\n {\n bestAlt[revAltBlocks[id].blockid] = {dist: blockMap[id], pop: revAltBlocks[id].pop};\n blockMapP[revAltBlocks[id].blockid] = blockMap[id];\n }\n }\n else\n {\n blockMapP[id] = blockMap[id];\n }\n }\n blockMap = blockMapP;\n }\n\n // First aggregate into features across all the blocks\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let state = geoidToState(id);\n if (res.outState == null)\n res.outState = state;\n else if (res.outState !== state)\n {\n res.outValid = false;\n break;\n }\n\n let districtID: string = canonicalDistrictID(blockMap[id]);\n\n // Just ignore ZZZ (water) blocks\n if (districtID === 'ZZZ')\n continue;\n\n if (res.outOrder[districtID] === undefined)\n res.outOrder[districtID] = 0;\n\n let n: number = id.length;\n let geoids: string[];\n let ids: string[];\n res.nBlocks++;\n\n // Simple test for block id (vs. voting district or block group) id\n // Also skip longer custom precinct ids\n if (isBlockID(id))\n {\n ids = [id];\n if (outMbm && outMbm.map(id) !== undefined)\n geoids = [outMbm.map(id)];\n else\n {\n geoids = [id.substr(0, 12)];\n if (outMbm && !outMbm.rev(geoids[0]))\n {\n res.outValid = false;\n break;\n }\n }\n }\n else if (n == 12)\n {\n if (!revBG) revBG = reverseBlockgroupMapping(outMbm);\n if (revBG[id])\n {\n ids = revBG[id];\n geoids = ids.map(id => outMbm.map(id));\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n }\n else if (inMbm.rev(id))\n {\n // Map down to blockids and then back up to geoids to handle both custom and default geoids\n ids = inMbm.rev(id);\n geoids = ids.map(blockid => outMbm.map(blockid));\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n\n ids.forEach((id: string, i: number) => {\n let geoid = geoids[i];\n let districtToBlocks: { [districtID: string]: { [blockid: string]: boolean } } = bmGather[geoid];\n if (districtToBlocks === undefined)\n bmGather[geoid] = { [districtID]: { [id]: true } };\n else\n {\n let thisDistrict: { [blockid: string]: boolean } = districtToBlocks[districtID];\n if (thisDistrict === undefined)\n {\n thisDistrict = { };\n districtToBlocks[districtID] = thisDistrict;\n }\n thisDistrict[id] = true;\n }\n });\n }\n\n // Now determine actual mapping of blocks to features, looking for split features\n for (let geoid in bmGather) if (bmGather.hasOwnProperty(geoid))\n {\n let districtToBlocks = bmGather[geoid];\n let bWhole = false;\n if (Util.countKeys(districtToBlocks) == 1)\n {\n let blocks = Object.keys(districtToBlocks[Util.nthKey(districtToBlocks)]);\n if (blocks[0] === geoid || (outMbm.rev(geoid) && blocks.length === outMbm.rev(geoid).length))\n bWhole = true;\n }\n if (bWhole)\n {\n res.outMap[geoid] = Util.nthKey(districtToBlocks);\n res.nFeatures++;\n }\n else\n {\n for (let districtID in districtToBlocks) if (districtToBlocks.hasOwnProperty(districtID))\n {\n let split: VF.SplitBlock = { state: '', datasource: '', geoid: geoid, blocks: Object.keys(districtToBlocks[districtID]) };\n res.nSplitBlocks += split.blocks.length;\n let splits = res.outDistrictToSplit[districtID];\n if (splits === undefined)\n {\n splits = [];\n res.outDistrictToSplit[districtID] = splits;\n }\n splits.push(split);\n res.nFeatures++;\n res.nSplitToFeatures++;\n }\n res.nSplitFromFeatures++;\n }\n }\n\n res.outOrder = canonicalDistrictIDOrdering(res.outOrder);\n\n return res;\n}\n\nexport const StateIdToStateCode: any = {\n '01': 'AL',\n '02': 'AK',\n '04': 'AZ',\n '05': 'AR',\n '06': 'CA',\n '08': 'CO',\n '09': 'CT',\n '10': 'DE',\n '11': 'DC',\n '12': 'FL',\n '13': 'GA',\n '15': 'HI',\n '16': 'ID',\n '17': 'IL',\n '18': 'IN',\n '19': 'IA',\n '20': 'KS',\n '21': 'KY',\n '22': 'LA',\n '23': 'ME',\n '24': 'MD',\n '25': 'MA',\n '26': 'MI',\n '27': 'MN',\n '28': 'MS',\n '29': 'MO',\n '30': 'MT',\n '31': 'NE',\n '32': 'NV',\n '33': 'NH',\n '34': 'NJ',\n '35': 'NM',\n '36': 'NY',\n '37': 'NC',\n '38': 'ND',\n '39': 'OH',\n '40': 'OK',\n '41': 'OR',\n '42': 'PA',\n '44': 'RI',\n '45': 'SC',\n '46': 'SD',\n '47': 'TN',\n '48': 'TX',\n '49': 'UT',\n '50': 'VT',\n '51': 'VA',\n '53': 'WA',\n '54': 'WV',\n '55': 'WI',\n '56': 'WY',\n '72': 'PR',\n};\n\nexport const StateCodeToStateId: any = {\n 'AL': '01',\n 'AK': '02',\n 'AZ': '04',\n 'AR': '05',\n 'CA': '06',\n 'CO': '08',\n 'CT': '09',\n 'DE': '10',\n 'DC': '11',\n 'FL': '12',\n 'GA': '13',\n 'HI': '15',\n 'ID': '16',\n 'IL': '17',\n 'IN': '18',\n 'IA': '19',\n 'KS': '20',\n 'KY': '21',\n 'LA': '22',\n 'ME': '23',\n 'MD': '24',\n 'MA': '25',\n 'MI': '26',\n 'MN': '27',\n 'MS': '28',\n 'MO': '29',\n 'MT': '30',\n 'NE': '31',\n 'NV': '32',\n 'NH': '33',\n 'NJ': '34',\n 'NM': '35',\n 'NY': '36',\n 'NC': '37',\n 'ND': '38',\n 'OH': '39',\n 'OK': '40',\n 'OR': '41',\n 'PA': '42',\n 'RI': '44',\n 'SC': '45',\n 'SD': '46',\n 'TN': '47',\n 'TX': '48',\n 'UT': '49',\n 'VT': '50',\n 'VA': '51',\n 'WA': '53',\n 'WV': '54',\n 'WI': '55',\n 'WY': '56',\n 'PR': '72',\n};\n\nexport function geoidToState(geoid: string): string\n{\n let re = /^(..).*$/;\n\n let a = re.exec(geoid);\n if (a == null || a.length != 2) return null;\n return StateIdToStateCode[a[1]];\n}\n\nexport type StateUrls = (\n 'alabama' |\n 'alaska' |\n 'arizona' |\n 'arkansas' |\n 'california' |\n 'colorado' |\n 'connecticut' |\n 'delaware' |\n 'district-of-columbia' |\n 'florida' |\n 'georgia' |\n 'hawaii' |\n 'idaho' |\n 'illinois' |\n 'indiana' |\n 'iowa' |\n 'kansas' |\n 'kentucky' |\n 'louisiana' |\n 'maine' |\n 'maryland' |\n 'massachusetts' |\n 'michigan' |\n 'minnesota' |\n 'mississippi' |\n 'missouri' |\n 'montana' |\n 'nebraska' |\n 'nevada' |\n 'new-hampshire' |\n 'new-jersey' |\n 'new-mexico' |\n 'new-york' |\n 'north-carolina' |\n 'north-dakota' |\n 'ohio' |\n 'oklahoma' |\n 'oregon' |\n 'pennsylvania' |\n 'rhode-island' |\n 'south-carolina' |\n 'south-dakota' |\n 'tennessee' |\n 'texas' |\n 'utah' |\n 'vermont' |\n 'virginia' |\n 'washington' |\n 'west-virginia' |\n 'wisconsin' |\n 'wyoming' |\n 'puerto-rico'\n);\n\nexport type ValidStateNamesForUrlType =\n{\n readonly [stateUrl in StateUrls]: boolean;\n};\n\nconst ValidStateNamesForUrl: ValidStateNamesForUrlType = {\n 'alabama': true,\n 'alaska': true,\n 'arizona': true,\n 'arkansas': true,\n 'california': true,\n 'colorado': true,\n 'connecticut': true,\n 'delaware': true,\n 'district-of-columbia': true,\n 'florida': true,\n 'georgia': true,\n 'hawaii': true,\n 'idaho': true,\n 'illinois': true,\n 'indiana': true,\n 'iowa': true,\n 'kansas': true,\n 'kentucky': true,\n 'louisiana': true,\n 'maine': true,\n 'maryland': true,\n 'massachusetts': true,\n 'michigan': true,\n 'minnesota': true,\n 'mississippi': true,\n 'missouri': true,\n 'montana': true,\n 'nebraska': true,\n 'nevada': true,\n 'new-hampshire': true,\n 'new-jersey': true,\n 'new-mexico': true,\n 'new-york': true,\n 'north-carolina': true,\n 'north-dakota': true,\n 'ohio': true,\n 'oklahoma': true,\n 'oregon': true,\n 'pennsylvania': true,\n 'rhode-island': true,\n 'south-carolina': true,\n 'south-dakota': true,\n 'tennessee': true,\n 'texas': true,\n 'utah': true,\n 'vermont': true,\n 'virginia': true,\n 'washington': true,\n 'west-virginia': true,\n 'wisconsin': true,\n 'wyoming': true,\n 'puerto-rico': true,\n};\n\nexport function isValidStateNameForUrl(s: any): s is StateUrls\n{\n return (typeof s === 'string' && s in ValidStateNamesForUrl);\n}\n\n// StateCodes in state name alphabetically order\nexport const StateCodesOrdered: string[] = [\n \"AL\",\n \"AK\",\n \"AZ\",\n \"AR\",\n \"CA\",\n \"CO\",\n \"CT\",\n \"DE\",\n \"DC\",\n \"FL\",\n \"GA\",\n \"HI\",\n \"ID\",\n \"IL\",\n \"IN\",\n \"IA\",\n \"KS\",\n \"KY\",\n \"LA\",\n \"ME\",\n \"MD\",\n \"MA\",\n \"MI\",\n \"MN\",\n \"MS\",\n \"MO\",\n \"MT\",\n \"NE\",\n \"NV\",\n \"NH\",\n \"NJ\",\n \"NM\",\n \"NY\",\n \"NC\",\n \"ND\",\n \"OH\",\n \"OK\",\n \"OR\",\n \"PA\",\n \"RI\",\n \"SC\",\n \"SD\",\n \"TN\",\n \"TX\",\n \"UT\",\n \"VT\",\n \"VA\",\n \"WA\",\n \"WV\",\n \"WI\",\n \"WY\",\n \"PR\",\n];\n\nexport const StateNameMap : {[key: string] : string} = {\n \"AL\": \"Alabama\",\n \"AK\": \"Alaska\",\n \"AZ\": \"Arizona\",\n \"AR\": \"Arkansas\",\n \"CA\": \"California\",\n \"CO\": \"Colorado\",\n \"CT\": \"Connecticut\",\n \"DE\": \"Delaware\",\n \"FL\": \"Florida\",\n \"GA\": \"Georgia\",\n \"HI\": \"Hawaii\",\n \"ID\": \"Idaho\",\n \"IL\": \"Illinois\",\n \"IN\": \"Indiana\",\n \"IA\": \"Iowa\",\n \"KS\": \"Kansas\",\n \"KY\": \"Kentucky\",\n \"LA\": \"Louisiana\",\n \"ME\": \"Maine\",\n \"MD\": \"Maryland\",\n \"MA\": \"Massachusetts\",\n \"MI\": \"Michigan\",\n \"MN\": \"Minnesota\",\n \"MS\": \"Mississippi\",\n \"MO\": \"Missouri\",\n \"MT\": \"Montana\",\n \"NE\": \"Nebraska\",\n \"NV\": \"Nevada\",\n \"NH\": \"New Hampshire\",\n \"NJ\": \"New Jersey\",\n \"NM\": \"New Mexico\",\n \"NY\": \"New York\",\n \"NC\": \"North Carolina\",\n \"ND\": \"North Dakota\",\n \"OH\": \"Ohio\",\n \"OK\": \"Oklahoma\",\n \"OR\": \"Oregon\",\n \"PA\": \"Pennsylvania\",\n \"RI\": \"Rhode Island\",\n \"SC\": \"South Carolina\",\n \"SD\": \"South Dakota\",\n \"TN\": \"Tennessee\",\n \"TX\": \"Texas\",\n \"UT\": \"Utah\",\n \"VT\": \"Vermont\",\n \"VA\": \"Virginia\",\n \"WA\": \"Washington\",\n \"WV\": \"West Virginia\",\n \"WI\": \"Wisconsin\",\n \"WY\": \"Wyoming\",\n \"DC\": \"District of Columbia\",\n \"PR\": \"Puerto Rico\",\n};\n","import * as G from './groups';\n\n// For use in UI. Keys are used in JSON.\nexport interface DatasetField\n{\n shortCaption: string, // Typically 2-4 letters\n longCaption: string, // Can be longer descriptive phrase, especially for combinations\n order?: number, // For ordering fields in UI\n isCombo?: boolean, // Built-in, for census combos\n colorBy?: boolean, // For extended datasets, display in UI\n sumOf?: string[], // Only for import processing\n key?: string, // Only for import processing, reset field key away from import data\n}\nexport function sortFields(f1: DatasetField, f2: DatasetField): number\n{\n return (f1.order || 0) - (f2.order || 0);\n}\n\nexport function formColorBy(datasetid: string, field: string): string\n{\n return `${datasetid}:${field}`\n}\n\nexport function parseColorBy(colorby: string): { datasetid: string, field: string }\n{\n if (colorby)\n {\n let a = colorby.split(':');\n if (a?.length == 2)\n return { datasetid: a[0], field: a[1] };\n }\n return { datasetid: '', field: '' };\n}\n\nexport function isColorBy(colorby: string): boolean\n{\n let {datasetid, field} = parseColorBy(colorby);\n return !!datasetid && !!field;\n}\n\n// For Partisan fields, expect keys of 'D', 'R' and 'Tot'\n// For Demographic Fields, expect keys of 'Tot', 'Wh', 'Bl', 'His', 'AsnPI', 'Nat', 'Oth',\n// 'Asn', 'Pac', 'OthAl', 'Mix', 'BlC', 'NatC', 'AsnC', 'PacC', \nexport type DatasetFields = { [key: string]: DatasetField };\n\nexport interface DatasetColor {\n shortCaption: string,\n longCaption: string,\n expr: string,\n colors: string,\n stops: string,\n };\nexport type DatasetColors = DatasetColor[];\n\nexport interface DatasetFormat {\n shortCaption: string,\n longCaption: string,\n expr: string,\n numberFormat?: string, // (locale|integer|general|currency).precision\n };\nexport type DatasetFormats = DatasetFormat[];\n\nexport interface DatasetMeta\n{\n type: string, // demographic | election | pvi | other\n year: number, // 4 digit year\n title: string, // title displayed in UI\n builtin?: string, // builtin key for builtin datasets\n description?: string, // longer description\n office?: string, // pres | comp | sc | sen | con | tre | sos | ltgov | gov | ag and more\n subtype?: string, // always general?\n votingAge?: boolean, // true => VAP or CVAP; false => Total population (from Census or ACS or Adjusted)\n nhAlone?: boolean, // Non-Hispanic Alone demographic variant\n privateKey?: string, // Old-style semi-private datasets\n restrict?: { [key: string]: boolean }, // export, display, duplicate (true => function is not allowed)\n members?: { [key: number]: string }, // For composites, specifies \n fields?: DatasetFields,\n colors?: DatasetColors, // Optional colorby expressions\n formats?: DatasetFormats, // Optional format expressions\n displayPercent?: boolean, // True if details should auto include percent\n hideHeading?: boolean, // True if details should hide heading row\n}\n\nexport type DatasetsMeta = { [dataset: string]: DatasetMeta };\n\n// Database Record\nexport interface Dataset\n{\n id: string,\n name?: string,\n description?: string,\n createdBy?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n expunged?: boolean,\n expungeDate?: string,\n published?: string,\n official?: boolean,\n builtin?: string,\n state?: string,\n datasource?: string,\n dotmap?: boolean,\n blobid?: string,\n dataid?: string,\n meta?: DatasetsMeta,\n groups?: G.GroupMapIndex,\n labels?: string[],\n labelupdate?: { [name: string]: boolean|null }, // just for update purposes, not stored\n}\n\nexport function datasetRestrict(ds: Dataset): { [key: string]: boolean }\n{\n if (ds && ds.id && ds.meta && ds.meta[ds.id] && ds.meta[ds.id].restrict)\n return ds.meta[ds.id].restrict;\n return null;\n}\n\n// Index of database records\nexport type DatasetIndex = { [id: string]: Dataset };\n","// Type for single comment\nexport interface Comment\n{\n userid: string;\n text: string;\n date: string;\n recommend: number;\n}\n\n// Comment record associated with a map\nexport interface CommentList\n{\n id?: string;\n [commentid: string]: Comment | string; // Really just Comment but make TypeScript happy\n}\n\n// Supported like kinds\nexport type LikeKind = 'like' | 'love' | 'wow' | 'angry' | 'funny';\n\n// Like record for an individual like\nexport interface Like\n{\n date: string;\n kind: LikeKind;\n}\n\n// Record for likes associated with a map\nexport interface LikeList\n{\n id?: string;\n [userid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Record for likes an individual user has performed\nexport interface UserLikes\n{\n id?: string;\n [aid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Type of redistricting plan (Note: 'upper' is used when there is only 1 legislative map or body)\n// congress, upper, lower and other => the plan is for entire state\n// county and city => plan is for a single county or city within a state\nexport type PlanType = 'congress' | 'upper' | 'lower' | 'county' | 'city' | 'coi' | 'other';\nexport type PlanTypeOrEmpty = PlanType | '';\n\n// Once we attempt to contact, they've optedin or optedout (both mean email is valid and not blocked, even if not \"validated\")\n// implicitoptedin means we contacted them successfully and they didn't optout, but also did not explicitly optin\n// invalidemail means either ill-formed, not valid domain or does not exist.\n// blockedemail means email addr is probably valid, but blocked for some reason (and implies optedout)\n// blockedoptedin means they optedin at some point, but then email got blocked (so its possibly it would get unblocked and they're still optedin)\nexport type ContactState = 'notcontacted' | 'optedin' | 'optedout' | 'implicitoptedin' | 'invalidemail' | 'blockedemail' | 'blockedoptedin';\n","export interface Group\n{\n id: string,\n name: string,\n description: string,\n}\n\nexport const GROUP_OWNER = 1;\nexport const GROUP_VERIFIED = 2;\nexport const GROUP_SEEN = 4;\nexport const GROUP_REMOVED = 8;\nexport const GROUP_BLOCKED = 16;\nexport const GROUP_ADMIN = 32;\n\nexport function hideGroup(flags: number): boolean\n{\n return (flags & (GROUP_REMOVED|GROUP_BLOCKED)) != 0;\n}\n\nexport function adminGroup(flags: number): boolean\n{\n return (flags & (GROUP_ADMIN|GROUP_OWNER)) != 0;\n}\n\nexport interface GroupUser\n{\n id: string,\n uid: string,\n flags: number,\n}\n\nexport interface GroupMap\n{\n id: string, // group id\n sid: string, // map (session) id\n permission: number, // permissions (read or readwrite)\n}\n\nexport type GroupUserIndex = { [groupid: string]: number }; // GroupUser flags\nexport type GroupMapIndex = { [groupid: string]: number }; // GroupMap permission\nexport type GroupIndex = { [groupid: string]: Group };\n","import { Util, G } from '@dra2020/baseclient';\n\nexport interface Landmark\n{\n id: string,\n name: string,\n description: string,\n coord: [number, number],\n}\n\nexport type Landmarks = { [id: string]: Landmark };\n\nexport function landmarksToCollection(landmarks: Landmarks): G.GeoFeatureCollection\n{\n if (landmarks == null) return null;\n\n let col: G.GeoFeatureCollection = { type: 'FeatureCollection', features: [] };\n Object.values(landmarks).forEach(l => {\n let f: G.GeoFeature = {\n type: 'Feature',\n properties: {\n id: l.id,\n name: l.name,\n description: l.description,\n },\n geometry: {\n type: 'Point',\n coordinates: l.coord,\n },\n };\n col.features.push(f);\n });\n return col;\n}\n\nexport function collectionToLandmarks(col: G.GeoFeatureCollection): Landmarks\n{\n let landmarks: Landmarks = {};\n if (col && col.features) col.features.forEach((f: G.GeoFeature) => {\n if (f.geometry.type === 'Point')\n {\n let c: any = f.geometry.coordinates;\n if (Array.isArray(c) && typeof c[0] === 'number' && typeof c[1] === 'number')\n {\n let landmark: Landmark = {\n id: Util.createGuid(),\n name: G.flexName(f),\n description: f.properties.description || '',\n coord: [c[0], c[1]],\n };\n landmarks[landmark.id] = landmark;\n }\n }\n });\n return landmarks;\n}\n","import * as G from './groups';\n\nexport interface UserLayerMeta\n{\n createdBy: string,\n id: string,\n name?: string,\n description?: string,\n state?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean,\n groups?: G.GroupMapIndex,\n labels?: string[],\n labelupdate?: { [name: string]: boolean|null }, // just for update purposes, not stored\n}\n\nexport type UserLayerMetaIndex = {\n [id: string]: UserLayerMeta\n}\n\nexport type LayerType = 'layer' | 'map' | 'restriction' | 'precincts';\n\nexport interface UserLayerRef\n{\n id: string,\n name?: string,\n layerType?: LayerType,\n geojsonName?: string,\n blockmapName?: string,\n cacheState?: string,\n cacheDatasource?: string,\n cachePlanType?: string,\n fill: boolean,\n stroke: boolean,\n label: boolean,\n landmark: boolean,\n strokeColor: string,\n strokeOpacity: number,\n fillColor: string,\n fillOpacity: number,\n lineWidth?: number,\n}\n\nexport type UserLayerRefIndex = {\n [id: string]: UserLayerRef\n}\n","import { Util } from \"@dra2020/baseclient\";\nimport { PlanType } from './dra-types';\n\n// **** Dataset Codes Explained ****\n// Elections:\n// EYYGCC, where YY = year and CC = contest [PR, SE, GO, AG]\n// C16GCO = composite (spans number of years)\n// PYYGPR = PVI, where YY is year [16, 20]\n// Census/ACS:\n// DYYF = Census/ACS Total Pop, where YY = year [10, 18, 19, 20]\n// DYYT = Census/ACS VAP/CVAP, where YY = year [10, 18, 19, 20]\n// D20FA = Census 2020 Total Prisoner-Adjusted Pop\n// D20TNH = Census 2020 VAP with Non-Hispanic Alone Race fields\n\n// **** Dataset Fields Explained ****\n// Elections:\n// D: Democratic\n// R: Republican\n// Tot (Total R + D + Other)\n// Census/ACS/VAP/CVAP:\n// Tot: total\n// Wh: White alone, not Hispanic\n// His: All Hispanics\n// Bl: Black alone, not Hispanic; BlC: Black combo, incl Hispanic\n// Asn: Asian alone, not Hispanic; AsnC: Asian combo, incl Hispanic\n// Nat: Native alone, not Hispanic; NatC: Native combo, incl Hispanic\n// Pac (also PI): Pacific alone, not Hispanic; PacC: Pacific combo, incl Hispanic\n// OthAl: Other alone, not Hispanic; Oth: Other + Two or more races, incl Hispanic\n// Mix: Two or more races, not Hispanic\n// AsnPI: Asian + Pacific, not Hispanic\n\nimport { DatasetMeta, DatasetsMeta } from './datasets';\n\n\nexport const AGG_DEMOGRAPHIC = 'demographic';\nexport const AGG_DEMOGRAPHIC18 = 'demographic18';\nexport const AGG_pres2008 = 'pres2008';\nexport const AGG_pres2016 = 'pres2016';\nexport const AGG_pvi = 'pvi';\n\nexport const DATASET_TYPE_DEMOGRAPHIC = 'demographic';\nexport const DATASET_TYPE_ELECTION = 'election';\nexport const DATASET_TYPE_PVI = 'pvi';\nexport const DATASET_TYPE_OTHER = 'other';\n\nexport const DS_PVI2020 = 'P20GPR';\nexport const PVI2020_Title = 'PVI 2016/2020';\nexport const DS_PVI2016 = 'P16GPR';\nexport const DS_PRES2020 = 'E20GPR';\nexport const DS_PRES2016 = 'E16GPR';\n\nexport interface StateMeta\n{\n state: string,\n pop: number,\n reps: number,\n}\n\nexport interface StatesMetaIndex\n{\n [key: string]: StateMeta; // key is shortstate (2 letter) state name\n}\n\nexport interface StatesMeta\n{\n [key: string]: StatesMetaIndex; // key is one of the datasource strings\n}\n\nexport interface PackedFieldsIndex\n{\n [field: string]: number; // offset into PackedFields\n}\n\nexport interface PackedMetaIndex\n{\n length: number;\n fields: { [dataset: string]: PackedFieldsIndex };\n}\n\nexport type GroupPackedMetaIndex = { [did: string]: PackedMetaIndex };\n\nexport interface PrimaryDatasetKeys\n{\n SHAPES?: string,\n CENSUS: string,\n VAP: string,\n ELECTION: string,\n}\n\nexport type PackedFieldsArray = Float64Array;\nexport interface PackedFields {\n dsGroup: GroupPackedMetaIndex,\n data: { [did: string]: PackedFieldsArray }\n}\n\n// This integregates the information associated with a specific state and datasource as\n// well as user selections around which datasets to view. Used to propagate through UI.\nexport interface DatasetContext\n{\n dsGroup: GroupPackedMetaIndex;\n dsMeta: DatasetsMeta;\n primeDDS: string; // Demographic (Census)\n primeVDS: string; // VAP/CVAP\n primeEDS: string; // Election\n //datasetMetaDDS: DatasetMeta;\n //datasetMetaVDS: DatasetMeta;\n //datasetMetaEDS: DatasetMeta;\n}\n\n// Dataset Lists\nexport type DSListItem = {\n key: string,\n title: string,\n order: number,\n};\n\nexport type DSList = DSListItem[];\n\nexport type DSLists = {\n census: DSList,\n vap: DSList,\n election: DSList,\n};\n\nexport type PlanTypePlus = PlanType | '';\n\nexport function fGet(f: any, p: string): any\n{\n return fGetW(f, null, p);\n}\n\n// Note f is a direct GeoJSON feature\n// Called when building packedFields; after that f.properties.datasets is deleted, so then it's only useful for non-dataset properties.\nfunction fGetW(f: any, datasetKey: string, p: string): any\n{\n // pBackup helps support 2016_BG, which don't have the 'C' fields\n const pBackup: string = (p === 'BlC') ? 'Bl' : (p === 'AsnC' || p === 'PacC') ? 'AsnPI' : (p === 'NatC') ? 'Nat' : null;\n \n // Direct property?\n if (f.properties && f.properties[p] !== undefined)\n return f.properties[p];\n else if (datasetKey && f.properties && f.properties.datasets && f.properties.datasets[datasetKey])\n {\n if (f.properties.datasets[datasetKey][p] != null)\n return f.properties.datasets[datasetKey][p];\n else if (pBackup && f.properties.datasets[datasetKey][pBackup] != null)\n return f.properties.datasets[datasetKey][pBackup];\n }\n\n return undefined;\n}\n\nexport function sortedFieldList(ds: DatasetMeta): string[]\n{\n let keys = Object.keys(ds.fields);\n let kv = keys.map(k => { return { k, v: ds.fields[k] } }).sort((a: any, b: any) => { return (a.v.order || 0) - (b.v.order || 0) });\n return kv.map(kv => kv.k);\n}\n\nexport function getDatasetField(f: any, did: string, field: string): number\n{\n let pf = retrievePackedFields(f);\n return getPackedField(pf, did, field);\n}\n\nexport function computeMetaIndex(did: string, meta: DatasetsMeta): PackedMetaIndex\n{\n if (meta == null) return null;\n let offset = 1; // first entry is count of aggregates\n let index: PackedMetaIndex = { length: 0, fields: {} };\n Object.keys(meta).forEach((datasetKey: string) => {\n let dataset = meta[datasetKey];\n let fieldsIndex: PackedFieldsIndex = {};\n sortedFieldList(dataset).forEach((field: string) => {\n fieldsIndex[field] = offset++;\n });\n index.fields[datasetKey] = fieldsIndex;\n });\n index.length = offset;\n return index;\n}\n\nexport function computeOnePackedFields(f: any, dsGroup: GroupPackedMetaIndex, index: PackedMetaIndex, did: string, datasetKey: string): PackedFields\n{\n let af = allocPackedFieldsArray(index.length);\n af[0] = 0; // count of number of aggregates\n let fields = index.fields[did];\n Object.keys(fields).forEach((field: string) => {\n let n = fGetW(f, datasetKey, field);\n if (isNaN(n))\n n = 0;\n af[fields[field]] = n;\n });\n\n if (! f.properties.packedFields)\n initPackedFields(f, dsGroup);\n f.properties.packedFields.data[did] = af;\n\n return f.properties.packedFields;\n}\n\nlet nAlloc = 0;\nfunction allocPackedFieldsArray(length: number): PackedFieldsArray\n{\n let ab = new ArrayBuffer(8 * length);\n let af = new Float64Array(ab);\n nAlloc++;\n //if ((nAlloc % 10000) == 0) console.log(`allocPackedFieldsArray: ${nAlloc} allocs`);\n return af;\n}\n\nexport function initPackedFields(f: any, dsGroup: GroupPackedMetaIndex): void\n{\n if (f.properties.packedFields !== undefined) throw 'Packed fields already set';\n\n f.properties.packedFields = { dsGroup, data: {} };\n}\n\nexport function clearPackedFields(f: any): void\n{\n delete f.properties.packedFields;\n}\n\nexport function hasPackedFields(f: any): boolean\n{\n return f.properties.packedFields !== undefined;\n}\n\nexport function setPackedFields(f: any, pf: PackedFields): void\n{\n if (f.properties.packedFields !== undefined) throw 'Packed fields already set';\n f.properties.packedFields = pf;\n}\n\nconst reExtDataset = /^.*\\.ds$/;\nexport function isExtDataset(did: string): boolean\n{\n return did && reExtDataset.test(did);\n}\n\nexport type ExtPackedFields = Uint32Array; // [nblocks][nfields][fields]...\nexport type ExtBlockCardinality = Map<string, number>;\n\nexport function pushExtPackedFields(blocks: string[], pf: PackedFields, did: string, index: PackedMetaIndex, data: ExtPackedFields, card: ExtBlockCardinality): void\n{\n if (!blocks)\n return;\n if (! pf)\n throw('pushExtPackedFields: packed fields should be initialized before push');\n if (card.size != data[0])\n throw('pushExtPackedFields: packed fields and block cardinality do not match');\n if (pf.data[did])\n return; // already pushed\n let nfields = data[1];\n let pfa = allocPackedFieldsArray(nfields+1); // field count\n pfa[0] = 0;\n for (let j = 0; j < nfields; j++) pfa[j] = 0;\n blocks.forEach((blockid: string) => {\n if (! card.has(blockid))\n throw(`pushExtPackedFields: missing blockid ${blockid} in cardinality set`);\n let x = 2 + (nfields * card.get(blockid));\n for (let i = 1; i <= nfields; i++)\n pfa[i] += (data[x++] << 0); // left shift by 0 to force unsigned to be interpreted as signed (used by prisoner-adjusted)\n });\n pf.data[did] = pfa;\n}\n\nexport function featurePushExtPackedFields(f: any, did: string, index: PackedMetaIndex, data: ExtPackedFields, card: ExtBlockCardinality): void\n{\n let blocks = f?.properties?.blocks || (card.has(f.properties.id) ? [ f.properties.id ] : null);\n pushExtPackedFields(blocks, f.properties.packedFields, did, index, data, card);\n}\n\nexport function featurePushedExtPackedFields(f: any, did: string, card: ExtBlockCardinality): boolean\n{\n if (! f) return true;\n if (f.features) return featurePushedExtPackedFields(f.features[0], did, card);\n if (!f?.properties?.blocks && !card.has(f.properties.id))\n return true;\n if (!f.properties.packedFields)\n return true;\n return !!f.properties.packedFields.data[did];\n}\n\nexport function pushedExtPackedFields(pf: PackedFields, datasetids: string[]): boolean\n{\n if (pf && datasetids)\n for (let i = 0; i < datasetids.length; i++)\n if (! pf.data[datasetids[i]])\n return false;\n return !!pf;\n}\n\nexport function retrievePackedFields(f: any): PackedFields\n{\n if (f.properties.packedFields === undefined) throw 'Feature should have pre-computed packed fields';\n return f.properties.packedFields as PackedFields;\n}\n\n// The first entry in the PackedFieldsArray aggregate is the count of items aggregated.\n// Treat a null instance as just a single entry with no aggregates.\nlet abZero = new ArrayBuffer(8);\nlet afZero = new Float64Array(abZero);\nafZero[0] = 0;\nlet pfZero = { dsGroup: {}, data: { ['']: afZero } };\n\nexport function zeroPackedFields(dsGroup: GroupPackedMetaIndex): PackedFields\n{\n if (dsGroup == null) return pfZero;\n let pf: PackedFields = { dsGroup, data: {} };\n Object.keys(dsGroup).forEach(did => {\n let af = allocPackedFieldsArray(dsGroup[did].length);\n for (let i = 0; i < af.length; i++)\n af[i] = 0;\n pf.data[did] = af;\n });\n return pf;\n}\n\nexport function zeroPackedCopy(pf: PackedFields): PackedFields\n{\n if (pf == null) return pfZero;\n let copy: PackedFields = { dsGroup: pf.dsGroup, data: {} };\n Object.keys(pf.data).forEach(did => {\n let cf = allocPackedFieldsArray(pf.data[did].length);\n for (let i = 0; i < cf.length; i++)\n cf[i] = 0;\n copy.data[did] = cf;\n });\n return copy;\n}\n\nexport function packedCopy(pf: PackedFields): PackedFields\n{\n if (pf == null) return null;\n let copy: PackedFields = { dsGroup: pf.dsGroup, data: {} };\n Object.keys(pf.data).forEach(did => {\n let af = pf.data[did];\n let cf = allocPackedFieldsArray(af.length);\n for (let i = 0; i < af.length; i++)\n cf[i] = af[i];\n copy.data[did] = cf;\n });\n return copy;\n}\n\nexport function aggregatePackedFields(agg: PackedFields, pf: PackedFields): PackedFields\n{\n if (agg == null || pf == null) return agg;\n Object.keys(pf.data).forEach(did => {\n let af = agg.data[did];\n let sf = pf.data[did];\n if (sf && (!af || sf.length == af.length))\n {\n if (! af)\n {\n af = allocPackedFieldsArray(sf.length);\n af[0] = 0;\n for (let i = 1; i < sf.length; i++)\n af[i] = sf[i];\n agg.data[did] = af;\n }\n else\n {\n let n = af.length;\n for (let i = 1; i < n; i++)\n af[i] += sf[i];\n }\n af[0]++; // count of aggregates\n }\n });\n return agg;\n}\n\nexport function aggregateCount(agg: PackedFields): number\n{\n // If we have multiple packedfieldarrays, all of them track the aggregate in zero spot.\n // So we just pick the one that happens to be come up first.\n if (!agg) return 0;\n let pfa = Util.nthProperty(agg.data) as PackedFieldsArray;\n return pfa ? pfa[0] : 0;\n}\n\nexport function decrementPackedFields(agg: PackedFields, pf: PackedFields): PackedFields\n{\n if (agg == null || pf == null) return agg;\n Object.keys(agg.data).forEach(did => {\n let af = agg.data[did];\n let sf = pf.data[did];\n if (sf && sf.length == af.length)\n {\n let n = af.length;\n for (let i = 1; i < n; i++)\n af[i] -= sf[i];\n af[0]++; // count of aggregates\n }\n });\n return agg;\n}\n\nexport function diffPackedFields(main: any, parts: any[]): PackedFields\n{\n main = packedCopy(retrievePackedFields(main));\n if (main == null || parts == null || parts.length == 0) return null;\n parts = parts.map(retrievePackedFields);\n parts.forEach((pf: PackedFields) => decrementPackedFields(main, pf));\n return main;\n}\n\nexport function getPackedField(pf: PackedFields, did: string, field: string): number\n{\n if (!pf || !pf.dsGroup || !pf.dsGroup[did] || !pf.data[did]) return 0;\n let fields = pf.dsGroup[did].fields[did];\n return fields ? (fields[field] !== undefined ? pf.data[did][fields[field]] : 0) : 0;\n}\n\nexport function findPackedField(pf: PackedFields, did: string, field: string): number\n{\n let fields = pf.dsGroup[did].fields[did];\n return fields ? (fields[field] !== undefined ? fields[field] : -1) : -1;\n}\n\n// Utility type to simplify code that pulls from same dataset to compute some composite\nexport type FieldGetter = (f: string) => number;\nexport function fieldGetterNotLoaded(f: string): number { return undefined }\n\nexport function ToGetter(agg: PackedFields, dc: DatasetContext, did: string): FieldGetter\n{\n return (field: string) => { return getPackedField(agg, did, field) };\n}\n\nexport function calcShift(agg: PackedFields, dc: DatasetContext, didOld: string, didNew: string): number\n{\n const getterOld = ToGetter(agg, dc, didOld);\n const getterNew = ToGetter(agg, dc, didNew);\n\n // Calc two-party Swing\n const repOld = getterOld('R');\n const demOld = getterOld('D');\n const repNew = getterNew('R');\n const demNew = getterNew('D');\n\n if (repOld === undefined || demOld === undefined || repNew === undefined || demNew === undefined)\n return null;\n\n const totOld = demOld + repOld;\n const totNew = demNew + repNew;\n if (totOld <= 0 || totNew <= 0)\n return null;\n\n const pctDemOld: number = demOld / totOld;\n const pctRepOld: number = repOld / totOld;\n const pctDemNew: number = demNew / totNew;\n const pctRepNew: number = repNew / totNew;\n const shift: number = Math.max(Math.min((pctDemNew - pctDemOld) - (pctRepNew - pctRepOld), 1.0), -1.0);\n return shift;\n}\n\nexport function calcRawPvi(getter: FieldGetter): number\n{\n // ((((sum(d_2016) / (sum(d_2016) + sum(r_2016))) * 100) + ((sum(d_2012) / (sum(d_2012) + sum(r_2012))) * 100)) / 2) - 51.54\n // Fields hard coded\n let total2012 = getter('D12') + getter('R12');\n let total2016 = getter('D16') + getter('R16');\n let pct2012 = total2012 != 0 ? (getter('D12') / total2012) * 100 : 0;\n let pct2016 = total2016 != 0 ? (getter('D16') / total2016) * 100 : 0;\n return (pct2012 + pct2016) / ((total2012 != 0 && total2016 != 0) ? 2 : 1);\n}\n\nexport function pviStr(getter: FieldGetter): string\n{\n const pviRaw: number = calcRawPvi(getter);\n const pvi = Util.precisionRound(pviRaw != 0 ? pviRaw - 51.54 : 0, 2);\n return pvi >= 0 ? 'D+' + pvi : 'R+' + (-pvi);\n}\n\nexport function calcRaw2020Pvi(getter16: FieldGetter, getter20: FieldGetter): number\n{\n let total2016 = getter16('D') + getter16('R');\n let total2020 = getter20('D') + getter20('R');\n let pct2016 = total2016 != 0 ? (getter16('D') / total2016) * 100 : 0;\n let pct2020 = total2020 != 0 ? (getter20('D') / total2020) * 100 : 0;\n return (pct2020 + pct2016) / ((total2020 != 0 && total2016 != 0) ? 2 : 1);\n}\n\nexport function pvi2020Str(getter16: FieldGetter, getter20: FieldGetter): string\n{\n const pviRaw: number = calcRaw2020Pvi(getter16, getter20);\n const pvi = Util.precisionRound(pviRaw != 0 ? pviRaw - 51.54 : 0, 2);\n return pvi >= 0 ? 'D+' + pvi : 'R+' + (-pvi);\n}\n","export interface Precincts\n{\n id?: string,\n state?: string,\n datasource?: string,\n name?: string,\n description?: string,\n labels?: string[],\n createdBy?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean,\n supersets?: string[],\n subsets?: string[],\n conflicts?: string[],\n}\n\nexport type PrecinctsIndex = { [id: string]: Precincts };\n","export function reverseBlockMapping(bm: any): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = bm[blockid];\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n Object.values(rev).forEach((a: string[]) => a.sort());\n return rev;\n}\n\nexport function reverseSubMapping(bm: any, n: number): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nexport function reverseBlockgroupMapping(bm: any): any\n{\n return reverseSubMapping(bm, 12);\n}\n\nexport function reverseTractMapping(bm: any): any\n{\n return reverseSubMapping(bm, 11);\n}\n","export let Schemas: any = {\n 'users':\n {\n FileOptions: { version: 5, name: 'users', map: false },\n Schema: {\n id: 'S',\n name: 'S',\n email: 'S',\n hashPW: 'S',\n verified: 'BOOL',\n admin: 'BOOL',\n roles: 'M',\n verifyGUID: 'S',\n resetGUID: 'S',\n resetTime: 'S',\n lastActive: 'S',\n modifyTime: 'S',\n resetCount: 'N',\n accessed: 'M',\n likeID: 'S',\n visitData: 'M',\n groups: 'M',\n cache: 'N',\n cached: 'N',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { email: 'HASH' },\n { verifyGUID: 'HASH' },\n { resetGUID: 'HASH' },\n ],\n },\n 'state':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n flags: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n groups: 'M',\n xid: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { xid: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'expungestate':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n },\n KeySchema: { id: 'HASH' },\n },\n 'splitblock':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { chunkKey: 'HASH', id: 'RANGE' },\n ],\n },\n 'blockset':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n chunkList: 'L',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { state: 'HASH' },\n ],\n },\n 'blockchunk':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n recompute: 'BOOL',\n splits: 'L',\n },\n },\n 'access':\n {\n FileOptions: { map: true, noobject: true },\n Schema: {\n id: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'visitor':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastModified: 'S',\n /* ... others */\n },\n KeySchema: { id: 'HASH' }\n },\n 'session':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastActive: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'userlikes':\n {},\n 'likes':\n {},\n 'comments':\n {},\n 'stats':\n {},\n 'livestats':\n {},\n 'workqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { priority: 'HASH' },\n ],\n },\n 'failqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n failType: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'layer':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n state: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'dataset':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n state: 'S',\n datasource: 'S',\n groups: 'M',\n // meta: { dataset metadata structure },\n // dotmap: 'BOOL',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'groups':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'groupsusers':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n uid: 'S',\n flags: 'N',\n },\n KeySchema: { id: 'HASH', uid: 'RANGE' },\n },\n 'groupsmaps':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n sid: 'S',\n permission: 'N',\n },\n KeySchema: { id: 'HASH', sid: 'RANGE' },\n },\n 'groupsdatasets':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n sid: 'S',\n permission: 'N',\n },\n KeySchema: { id: 'HASH', sid: 'RANGE' },\n },\n 'notifications':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n createdBy: 'S',\n message: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n },\n 'cull':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n key: 'S',\n bucket: 'S',\n expires: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'precincts':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n state: 'S',\n datasource: 'S',\n name: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { id: 'HASH' },\n { published: 'HASH' },\n ], // sparse\n },\n 'places':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n state: 'S',\n datasource: 'S',\n name: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { id: 'HASH' },\n { published: 'HASH' },\n ], // sparse\n },\n}\n","import * as geojson from 'geojson';\nimport { Util, Poly, G } from '@dra2020/baseclient';\nimport * as DT from './vfeature';\nimport * as PF from './packedfields';\n\n// Given the topology for a precinct and a split, compute the feature data for the virtual feature.\n//\n\nexport function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo, mbm: G.MultiBlockMapping): G.GeoFeature\n{\n let f = Poly.topoMerge(topoPrecinct, split.blocks);\n if (!f) return f;\n\n let contiguity = new Util.IndexedArray();\n let block_contiguity = new Util.IndexedArray();\n split.blocks.forEach(blockid => {\n let b = topoPrecinct.objects[blockid];\n if (b.properties.datasets)\n {\n if (! f.properties.datasets)\n f.properties.datasets = {};\n Util.deepAccum(f.properties.datasets, b.properties.datasets);\n }\n if (b.properties.packedFields)\n {\n if (! f.properties.packedFields)\n f.properties.packedFields = PF.packedCopy(b.properties.packedFields);\n else\n PF.aggregatePackedFields(f.properties.packedFields, b.properties.packedFields);\n }\n if (b.properties.contiguity)\n {\n b.properties.contiguity.forEach((id: string) => {\n if (id === 'OUT_OF_STATE')\n contiguity.set(id);\n else\n mbm.multimap(id).forEach(geoid => contiguity.set(geoid));\n });\n b.properties.contiguity.forEach((id: string) => {\n block_contiguity.set(id);\n });\n }\n });\n split.blocks.forEach(blockid => block_contiguity.clear(blockid));\n f.properties.id = DT.splitToVgeoid(split);\n f.properties.name = `Part of ${split.geoid} from ${split.blocks.length} blocks`;\n f.properties.contiguity = contiguity.asArray();\n f.properties.block_contiguity = block_contiguity.asArray();\n f.properties.blocks = split.blocks;\n f.properties.mbmstamp = mbm.stamp;\n return f;\n}\n","import * as DT from './dra-types';\n\nexport interface StateYearInfo\n{\n population: number,\n congress: {nDistricts: number}, \n upper: {nDistricts: number}, \n lower?: {nDistricts: number}, \n}\n\nexport interface StateInfo\n{\n '2010_VD': StateYearInfo,\n '2020_VD': StateYearInfo,\n}\n\nexport const StatePlanInfoMap: {[key: string]: StateInfo} = {\n \"AL\": {\"2010_VD\": {population: 4779736, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}, \"2020_VD\": { population: 0, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}},\n \"AK\": {\"2010_VD\": {population: 710231, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}},\n \"AZ\": {\"2010_VD\": {population: 6392017, congress: {nDistricts: 9}, upper: {nDistricts: 30}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 30}}},\n \"AR\": {\"2010_VD\": {population: 2915918, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}},\n \"CA\": {\"2010_VD\": {population: 37253956, congress: {nDistricts: 53}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}, \"2020_VD\": {population: 6, congress: {nDistricts: 52}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}},\n \"CO\": {\"2010_VD\": {population: 5029196, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}},\n \"CT\": {\"2010_VD\": {population: 3574097, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}},\n \"DE\": {\"2010_VD\": {population: 897934, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}},\n \"FL\": {\"2010_VD\": {population: 18801310, congress: {nDistricts: 27}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 28}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}},\n \"GA\": {\"2010_VD\": {population: 9687653, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}},\n \"HI\": {\"2010_VD\": {population: 1360301, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}},\n \"ID\": {\"2010_VD\": {population: 1567582, congress: {nDistricts: 2}, upper: {nDistricts: 35}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}}},\n \"IL\": {\"2010_VD\": {population: 12830632, congress: {nDistricts: 18}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}},\n \"IN\": {\"2010_VD\": {population: 6483802, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"IA\": {\"2010_VD\": {population: 3046355, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"KS\": {\"2010_VD\": {population: 2853118, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}},\n \"KY\": {\"2010_VD\": {population: 4339367, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}},\n \"LA\": {\"2010_VD\": {population: 4533372, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}},\n \"ME\": {\"2010_VD\": {population: 1328361, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}},\n \"MD\": {\"2010_VD\": {population: 5773552, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}},\n \"MA\": {\"2010_VD\": {population: 6547629, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}},\n \"MI\": {\"2010_VD\": {population: 9883640, congress: {nDistricts: 14}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}, \"2020_VD\": {population: 6, congress: {nDistricts: 13}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}},\n \"MN\": {\"2010_VD\": {population: 5303925, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}},\n \"MS\": {\"2010_VD\": {population: 2967297, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}},\n \"MO\": {\"2010_VD\": {population: 5988927, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}},\n \"MT\": {\"2010_VD\": {population: 989415, congress: {nDistricts: 1}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"NE\": {\"2010_VD\": {population: 1826341, congress: {nDistricts: 3}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 49}}},\n \"NV\": {\"2010_VD\": {population: 2700551, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}},\n \"NH\": {\"2010_VD\": {population: 1316470, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 161}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 164}}},\n \"NJ\": {\"2010_VD\": {population: 8791894, congress: {nDistricts: 12}, upper: {nDistricts: 40}}, \"2020_VD\": {population: 6, congress: {nDistricts: 12}, upper: {nDistricts: 40}}},\n \"NM\": {\"2010_VD\": {population: 2059179, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}},\n \"NY\": {\"2010_VD\": {population: 19378102, congress: {nDistricts: 27}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 26}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}},\n \"NC\": {\"2010_VD\": {population: 9535483, congress: {nDistricts: 13}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}},\n \"ND\": {\"2010_VD\": {population: 672591, congress: {nDistricts: 1}, upper: {nDistricts: 47}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 47}, lower: {nDistricts: 49}}},\n \"OH\": {\"2010_VD\": {population: 11536504, congress: {nDistricts: 16}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 15}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"OK\": {\"2010_VD\": {population: 3751351, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}},\n \"OR\": {\"2010_VD\": {population: 3831074, congress: {nDistricts: 5}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}},\n \"PA\": {\"2010_VD\": {population: 12702379, congress: {nDistricts: 18}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}},\n \"RI\": {\"2010_VD\": {population: 1052567, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}},\n \"SC\": {\"2010_VD\": {population: 4625364, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}, \"2020_VD\": {population: 6, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}},\n \"SD\": {\"2010_VD\": {population: 814180, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}},\n \"TN\": {\"2010_VD\": {population: 6346105, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"TX\": {\"2010_VD\": {population: 25145561, congress: {nDistricts: 36}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 38}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}},\n \"UT\": {\"2010_VD\": {population: 2763885, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}},\n \"VT\": {\"2010_VD\": {population: 625741, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}},\n \"VA\": {\"2010_VD\": {population: 8001024, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}},\n \"WA\": {\"2010_VD\": {population: 6724540, congress: {nDistricts: 10}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 10}, upper: {nDistricts: 49}}},\n \"WV\": {\"2010_VD\": {population: 1852994, congress: {nDistricts: 3}, upper: {nDistricts: 17}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 17}, lower: {nDistricts: 100}}},\n \"WI\": {\"2010_VD\": {population: 5686986, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"WY\": {\"2010_VD\": {population: 563626, congress: {nDistricts: 1}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 31}, lower: {nDistricts: 62}}},\n \"DC\": {\"2010_VD\": {population: 601723, congress: {nDistricts: 1}, upper: {nDistricts: 8}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 8}}},\n \"PR\": {\"2010_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}},\n};\n\nexport function hasPlanType(stateCode: string, planType: DT.PlanType, is2020?: boolean): boolean\n{\n // handle unicameral states (hence no lower house districts)\n if ((stateCode === 'NE' || stateCode === 'DC') && planType === 'lower')\n return false;\n\n // handle states with only 1 congressional district (hence no plan)\n if (planType === 'congress' &&\n (stateCode === 'AK' || stateCode === 'DE' || stateCode === 'ND' || stateCode === 'SD' || stateCode === 'VT' || stateCode === 'WY' || stateCode === 'DC' ||\n (stateCode === 'MT' && !is2020)))\n {\n return false;\n }\n\n if (planType === 'county' || planType === 'city')\n return false;\n\n return true;\n}\n\nexport function hasOneLegislativePlanBothHouses(stateCode: string): boolean\n{\n return stateCode === 'AZ' || stateCode === 'ID' || stateCode === 'NJ' || stateCode === 'WA';\n}\n\nexport function getPlanDistrictCount(stateCode: string, planType: DT.PlanType, datasource: string): number\n{\n if (planType === 'coi')\n return 1;\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD') || (planType !== 'congress' && planType !== 'upper' && planType !== 'lower'))\n return 0;\n \n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo && stateYearInfo[planType] ? stateYearInfo[planType]['nDistricts'] : 0;\n}\n\n// TODO: This is not currently used (3/2/21). 2020_VD population numbers are not set; update them when apportionment happens \nexport function getStateYearTotalPop(stateCode: string, datasource: string): number\n{\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD'))\n return 0;\n\n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo ? stateYearInfo['population'] : 0;\n}\n\nexport function inferPlanType(stateCode: string, datasource: string, nDistricts: number, flex?: boolean): DT.PlanType\n{\n // Intended for datasource === '2020_VD'\n const congressCount: number = getPlanDistrictCount(stateCode, 'congress', datasource);\n const upperCount: number = getPlanDistrictCount(stateCode, 'upper', datasource);\n const lowerCount: number = getPlanDistrictCount(stateCode, 'lower', datasource);\n return (\n ((flex && nDistricts <= congressCount + 2 && nDistricts >= congressCount - 3) || nDistricts == congressCount) ? 'congress' :\n (nDistricts == upperCount) ? 'upper' :\n (nDistricts == lowerCount) ? 'lower' :\n 'other');\n}\n","// In constrast to logging, the stats manager is responsible for tracking live server status.\n// The results are stored in a compact database record which can be easily queried for current\n// status. Each server instance maintains its own field in the overall \"values\" record in the\n// stats database. The reporting tool aggregates all instances to report overall server activity.\n//\n// There are basically three kinds of values:\n// Sum - we want to sum the value across all server instances (e.g. number of connnected clients)\n// Avg - we just take average across all server instances (e.g. memory heap size)\n// Rate - we want to track the rate of some activity over some time period\n//\n\nexport type ValType = number;\nexport const ValTypeSum = 0;\nexport const ValTypeAvg = 1;\nexport const ValTypeRate = 2;\n\nconst ExpiryAge = 1000 * 60 * 60 * 24; // throw away instance record after this time period\n\nexport function statExpiryTime(): string\n{\n let time = new Date();\n time.setTime(time.getTime() + ExpiryAge);\n return time.toJSON();\n}\n\nexport interface StatRecord\n{\n id: string;\n production: boolean;\n expires: string;\n time: string;\n index: StatEntryIndex;\n}\n\nexport type StatEntry = StatValue | StatRate;\n\nexport type StatEntryIndex = { [name: string]: StatEntry };\n\nexport interface StatValue\n{\n valType?: ValType;\n cur?: number;\n min?: number;\n max?: number;\n tot?: number;\n cnt?: number;\n}\n\nexport interface StatRate\n{\n valType?: ValType;\n thisMin?: number;\n lastMin?: number;\n thisHour?: number;\n lastHour?: number;\n thisDay?: number;\n lastDay?: number;\n}\n\n// Aggregate running value. This applies both in memory (logging multiple times before\n// saving to database) as well as aggregating into an instance structure in the DB.\n\nexport function statValueRecord(sv: StatValue, cur: number, valType: ValType): StatValue\n{\n if (sv === undefined) sv = {};\n if (sv.min === undefined || cur < sv.min)\n sv.min = cur;\n if (sv.max === undefined || cur > sv.max)\n sv.max = cur;\n sv.cur = cur;\n sv.valType = valType;\n return sv;\n}\n\nexport function statRateIncr(sr: StatRate, incr: number = 1): StatRate\n{\n if (sr == null) sr = {};\n sr.valType = ValTypeRate;\n sr.thisMin = sr.thisMin === undefined ? incr : sr.thisMin+incr;\n sr.thisHour = sr.thisHour === undefined ? incr : sr.thisHour+incr;\n sr.thisDay = sr.thisDay === undefined ? incr : sr.thisDay+incr;\n return sr;\n}\n\nexport const OneMinute = 1000 * 60;\nexport const OneHour = OneMinute * 60;\nexport const OneDay = OneHour * 24;\n\nexport function statRateRollover(sr: StatRate, period: number): void\n{\n if ((period % OneMinute) == 0)\n {\n sr.lastMin = sr.thisMin;\n sr.thisMin = 0;\n }\n if ((period % OneHour) == 0)\n {\n sr.lastHour = sr.thisHour;\n sr.thisHour = 0;\n }\n if ((period % OneDay) == 0)\n {\n sr.lastDay = sr.thisDay;\n sr.thisDay = 0;\n }\n}\n\nexport function statEntryIndexMerge(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n\n // We just discard and replace old rate information\n Object.keys(accum).forEach((p: string) => { if (accum[p].valType == ValTypeRate) delete accum[p] });\n\n // But merge in all the other values\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = se;\n else\n {\n let sv = se as StatValue;\n accum[p] = statValueRecord(se as StatValue, sv.cur, sv.valType);\n }\n });\n return accum;\n}\n\nexport function statEntryIndexRollover(si: StatEntryIndex, period: number): void\n{\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n statRateRollover(se as StatRate, period);\n });\n}\n\nexport function statRecordMerge(accum: StatRecord, si: StatRecord): StatRecord\n{\n if (accum == null)\n accum = { id: si.id, production: si.production, time: si.time, expires: si.expires, index: {} };\n accum.expires = si.expires;\n accum.time = si.time;\n statEntryIndexMerge(accum.index, si.index);\n return accum;\n}\n\n// Accumulate a set of values together (e.g. from multiple running instances)\n// for reporting current state.\n//\n\nexport function statValueAccum(accum: StatValue, sv: StatValue): StatEntry\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sv.valType;\n }\n if (accum.min === undefined || sv.min < accum.min)\n accum.min = sv.min;\n if (accum.max === undefined || sv.max > accum.max)\n accum.max = sv.max;\n if (accum.valType === undefined)\n accum.valType = sv.valType;\n if (accum.valType == ValTypeSum)\n accum.cur = (accum.cur === undefined ? sv.cur : accum.cur+sv.cur);\n else if (accum.valType == ValTypeAvg)\n {\n accum.tot = (accum.tot === undefined ? 0 : accum.tot) + sv.cur;\n accum.cnt = (accum.cnt === undefined ? 0 : accum.cnt) + 1;\n accum.cur = accum.tot / accum.cnt;\n }\n return accum;\n}\n\nexport function statRateAccum(accum: StatRate, sr: StatRate): StatRate\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sr.valType;\n }\n accum.thisMin = accum.thisMin === undefined ? sr.thisMin : (accum.thisMin + (sr.thisMin === undefined ? 0 : sr.thisMin));\n accum.lastMin = accum.lastMin === undefined ? sr.lastMin : (accum.lastMin + (sr.lastMin === undefined ? 0 : sr.lastMin));\n accum.thisHour = accum.thisHour === undefined ? sr.thisHour : (accum.thisHour + (sr.thisHour === undefined ? 0 : sr.thisHour));\n accum.lastHour = accum.lastHour === undefined ? sr.lastHour : (accum.lastHour + (sr.lastHour === undefined ? 0 : sr.lastHour));\n accum.thisDay = accum.thisDay === undefined ? sr.thisDay : (accum.thisDay + (sr.thisDay === undefined ? 0 : sr.thisDay));\n accum.lastDay = accum.lastDay === undefined ? sr.lastDay : (accum.lastDay + (sr.lastDay === undefined ? 0 : sr.lastDay));\n return accum;\n}\n\nexport function statIndexAccum(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = statRateAccum(accum[p] as StatRate, se as StatRate);\n else\n accum[p] = statValueAccum(accum[p] as StatValue, se as StatValue);\n });\n return accum;\n}\n","// Public libraries\nimport * as Hash from 'object-hash';\n\nexport interface SplitBlock\n{\n id?: string;\n chunkKey?: string;\n chunkList?: string[];\n chunk?: string;\n state: string;\n datasource: string;\n geoid: string;\n blocks?: string[];\n bitset?: string;\n}\n\nexport interface SplitChunk\n{\n id?: string;\n recompute?: boolean;\n splits?: string[];\n}\n\nexport type DistrictToSplitBlock = { [districtID: string]: SplitBlock[] };\n\n// Canonical hashing of custom precinct\nexport function chash(o: any): string\n{\n return Hash(o, { respectType: false, unorderedArrays: true, unorderedObjects: true,\n excludeKeys: (k: string) => (k === 'id') });\n}\n\n// Is custom feature - 5 digit county id + 'cust' + hash\nlet reC = /^\\d\\d\\d\\d\\dcust.*$/;\n\nexport function isCfeature(id: string): boolean\n{\n return id && reC.test(id);\n}\n\n// Canonical hashing of splitblock data\nexport function vhash(o: any): string\n{\n return Hash(o,\n { respectType: false,\n unorderedArrays: true,\n unorderedObjects: true,\n // basically, include (state,datasource,geoid,blocks[])\n excludeKeys: (k: string) => (k === 'id' || k === 'chunk' || k === 'chunkList' || k === 'chunkKey')\n });\n}\n\n// old style \"vfeature_[geoid]_[numericchunk]_[id]\"\n// new style \"B_[geoid]_bitset\"\n\nexport function vgeoidToGeoid(vgeoid: string): string\n{\n let reNew = /^B_([^_]*)_.*/;\n let reOld = /^vfeature_([^_]*)_.*/;\n let a = reNew.exec(vgeoid);\n if (a == null || a.length != 2)\n {\n a = reOld.exec(vgeoid);\n if (a == null || a.length != 2)\n return '';\n }\n return a[1];\n}\n\nexport function splitToVgeoid(s: SplitBlock): string\n{\n // Newstyle\n if (s.bitset)\n return `B_${s.geoid}_${s.bitset}`;\n\n // oldstyle\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = '0';\n return `vfeature_${s.geoid}_${s.chunk}_${s.id}`;\n}\n\nexport function splitCommitted(s: SplitBlock): boolean\n{\n return !!s.id || !!s.bitset;\n}\n\nexport function vgeoidToChunk(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n // the contents are chunked into a file of form \"vfeature_chunk_[chunkid]\"\n // So extract the chunk ID and download that.\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = `vfeature_chunk_${a[2]}`;\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function vgeoidToSplit(state: string, datasource: string, vgeoid: string): SplitBlock\n{\n let reNew = /^B_([^_]*)_(.*)$/;\n let reOld = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = reNew.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], bitset: a[2] };\n a = reOld.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], id: a[3], chunk: a[2], blocks: null };\n return null;\n}\n\nexport function vgeoidToHash(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = a[3];\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function isVfeature(geoid: string): boolean\n{\n return geoid.indexOf('B') === 0 || geoid.indexOf('vfeature') === 0;\n}\n\nexport function splitToCacheKey(s: SplitBlock): string\n{\n if (s.bitset)\n return null;\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_${s.geoid}_${s.chunk}_${s.id}.geojson`;\n}\n\nexport function cacheKeyToSplit(s: string): SplitBlock\n{\n let re = /^_(..)_(.*)_vfeature_([^_]+)_([^_]+)_([^_]+).geojson$/\n let a = re.exec(s);\n if (a == null) return null;\n // 0: whole string, 1: statecode, 2: datasource, 3: geoid, 4: chunk, 5: id hash\n return { id: a[5], state: a[1], datasource: a[2], geoid: a[3], chunk: a[4], blocks: null };\n}\n\nexport function splitToChunkKey(s: SplitBlock): string\n{\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_chunk_${s.chunk}.geojson`;\n}\n\nexport function splitToPrefix(s: SplitBlock): string\n{\n if (s.blocks === undefined)\n {\n let re = /_([^_]*)_(.*)_vfeature.*\\.geojson$/;\n let a = re.exec(s.id);\n if (a && a.length == 3)\n return `_${a[1]}_${a[2]}`;\n return s.id;\n }\n return `_${s.state}_${s.datasource}`;\n}\n\nexport function cacheKeysToChunkHash(keys: string[]): string\n{\n return vhash(keys);\n}\n","export type WorkQueueFailure = 'hard' | 'soft';\n\nexport interface WorkQueueItem\n{\n id: string,\n functionName: string,\n params: any,\n priority: number,\n failType?: WorkQueueFailure,\n}\n","module.exports = require(\"@dra2020/baseclient\");","module.exports = require(\"object-hash\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import * as DT from './alldt';\nexport { DT }\nimport * as PF from './packedfields';\nexport { PF }\nimport * as CM from './colormgr';\nexport { CM }\n"],"names":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"dra-types.js","mappings":"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,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAC;AAEW,0BAAkB,GAAQ;IACrC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;I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","sources":["webpack://dra-types/webpack/universalModuleDefinition","webpack://dra-types/./lib/alldt.ts","webpack://dra-types/./lib/bucketmap.ts","webpack://dra-types/./lib/cities.ts","webpack://dra-types/./lib/colormgr.ts","webpack://dra-types/./lib/csv.ts","webpack://dra-types/./lib/datasets.ts","webpack://dra-types/./lib/dra-types.ts","webpack://dra-types/./lib/groups.ts","webpack://dra-types/./lib/landmark.ts","webpack://dra-types/./lib/layer.ts","webpack://dra-types/./lib/packedfields.ts","webpack://dra-types/./lib/precincts.ts","webpack://dra-types/./lib/reverse.ts","webpack://dra-types/./lib/schemas.ts","webpack://dra-types/./lib/splittogeofeature.ts","webpack://dra-types/./lib/stateinfo.ts","webpack://dra-types/./lib/stats.ts","webpack://dra-types/./lib/vfeature.ts","webpack://dra-types/./lib/workqueue.ts","webpack://dra-types/external commonjs \"@dra2020/baseclient\"","webpack://dra-types/external commonjs \"object-hash\"","webpack://dra-types/webpack/bootstrap","webpack://dra-types/./lib/all.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dra-types\"] = factory();\n\telse\n\t\troot[\"dra-types\"] = factory();\n})(global, () => {\nreturn ","export * from './dra-types';\nexport * from './schemas';\nexport * from './bucketmap';\nexport * from './vfeature';\nexport * from './csv';\nexport * from './stats';\nexport * from './layer';\nexport * from './stateinfo';\nexport * from './workqueue';\nexport * from './landmark';\nexport * from './splittogeofeature';\nexport * from './reverse';\nexport * from './groups';\nexport * from './datasets';\nexport * from './precincts';\nexport * from './cities';\n","export const BucketMap: any =\n {\n 'default': 'dev-dra-us-west-2-723398989493',\n 'development': 'dev-dra-us-west-2-723398989493',\n 'production': 'dra-us-west-2-723398989493',\n 'state': 'dra-us-west-2-723398989493',\n 'state-dev': 'dev-dra-us-west-2-723398989493',\n 'logs': 'dra-uswest-logs',\n 'logs-dev': 'dra-uswest-logs',\n 'logs-archive': 'dra-uswest-logs-archive',\n 'logs-archive-dev': 'dra-uswest-logs-archive',\n 'memsqs': 'dra-uswest-memsqs',\n 'memsqs-dev': 'dra-uswest-memsqs',\n 'images': 'dra-uswest-images',\n 'images-dev': 'dra-uswest-images',\n 'datasets': 'dra-uswest-datasets',\n 'datasets-dev': 'dra-uswest-datasets',\n 'layers': 'dra-uswest-layers',\n 'layers-dev': 'dra-uswest-layers',\n 'data': 'dra-us-west-datafiles',\n 'data-dev': 'dra-us-west-datafiles-dev',\n 'splits': 'dra-block-cache',\n 'splits-dev': 'dra-block-cache-dev',\n 'counties': 'dra-county-cache',\n 'counties-dev': 'dra-county-cache-dev',\n 'geojson': 'dra-uswest-geojson',\n 'geojson-dev': 'dra-uswest-geojson',\n 'transfers': 'dra-transfers',\n 'transfers-dev': 'dra-transfers-dev',\n 'downloads': 'dra-uswest-downloads',\n 'downloads-dev': 'dra-uswest-downloads',\n 'editcache': 'dra-uswest-editcache',\n 'editcache-dev': 'dra-uswest-editcache-dev',\n }\n","export interface Cities\n{\n id?: string,\n state?: string,\n datasource?: string,\n geoids?: string[],\n name?: string,\n description?: string,\n labels?: string[],\n createdBy?: string,\n createTime?: string,\n modifyTime?: string,\n publishTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean,\n supersets?: string[],\n subsets?: string[],\n conflicts?: string[],\n}\n\nexport type CitiesIndex = { [id: string]: Cities };\n","// App libraries\nimport * as PF from \"./packedfields\";\nimport {isColorBy, parseColorBy, DatasetColor, DatasetFormat} from './datasets';\nimport {Util, Colors, Detail} from '@dra2020/baseclient'\n\n// All Groups Mosaic has 16 colors\n// Index values into the 16 colors\nexport const ColorBySolidWhite = 0;\nexport const ColorBySolidBlack = 1;\nexport const ColorBySolidHispanic = 2;\nexport const ColorBySolidAsian = 3;\nexport const ColorByMostlyWhite = 4;\nexport const ColorByMostlyBlack = 5;\nexport const ColorByMostlyHispanic = 6;\nexport const ColorByMostlyAsian = 7;\nexport const ColorByMostlyNative = 8;\nexport const ColorByMix = 9;\nexport const ColorByHispanicWhite = 10;\nexport const ColorByBlackWhite = 11;\nexport const ColorByHispanicBlack = 12;\nexport const ColorByAsianWhite = 13;\nexport const ColorByAsianHispanic = 14;\nexport const ColorByBlackAsian = 15;\n\n// Text color for All Groups Mosaic (Legend)\nexport const EthnicTextColor: string[] = [\n '#ffffff',\n '#ffffff',\n '#ffffff',\n '#ffffff',\n '#000000',\n '#000000',\n '#000000',\n '#000000',\n '#000000',\n '#000000',\n '#000000',\n '#000000',\n '#ffffff',\n '#000000',\n '#000000',\n '#ffffff',\n ];\n\nexport const ColorByGreatR = 0;\nexport const ColorByGoodR = 1;\nexport const ColorByFairR = 2;\nexport const ColorByEven = 3;\nexport const ColorByFairD = 4;\nexport const ColorByGoodD = 5;\nexport const ColorByGreatD = 6;\n\n\n// ****************** Colors, Color Stops and Color Functions for \"classic\" palettes *******************\nconst PartisanFewStops = [\n 0.00, // Carmine\n 0.20, // \n 0.30, // \n 0.40, // \n 0.45, //\n 0.50, // pale red\n 0.50, // pale blue\n 0.55, // \n 0.60, // \n 0.70, // \n 0.80, // \n 1.00, // Dark blue\n];\n\n// Like PartisanFewStops, but lose the gradient at two buckets at each edge to focus on competitive district differentiation\nexport let PartisanDistrictStops = [\n // Dark red\n //{ stop: 0.00, color: '#8B0000' }, // Dark red\n //{ stop: 0.40, color: '#8B0000' }, // .00 <= .40\n\n // Crimson\n //{ stop: 0.00, color: '#DC143C' }, // Crimson\n //{ stop: 0.40, color: '#DC143C' }, // .00 <= .40\n\n // Chilli Red\n //{ stop: 0.00, color: '#C21807' }, // Chilli Red\n //{ stop: 0.40, color: '#C21807' }, // .00 <= .40\n\n // Carmine\n 0.00, // Carmine\n 0.40, // .00 <= .40\n\n 0.40, // \n 0.45, // .40 <= .45\n 0.45, //\n 0.50, // .45 <= .50\n 0.50, // \n 0.55, // .50 <= .55\n 0.55, // \n 0.60, // .55 <= .60\n 0.60, // \n 1.00, // .60 <= 1.0\n];\n\n/*export let PartisanCustomStops = [\n { stop: 0.00, color: '#FF0000' }, // Dark red\n { stop: 0.20, color: '#FF0000' }, // \n { stop: 0.30, color: '#FF0000' }, // \n { stop: 0.40, color: '#CD5C5C' }, // Indian red\n { stop: 0.45, color: '#DB7093' }, // Pale Violet Red\n { stop: 0.499, color: '#DB7093' }, // Light Pink\n { stop: 0.50, color: '#FFFFFF' }, // white\n { stop: 0.501, color: '#87CEFA' }, // Light Sky Blue\n { stop: 0.55, color: '#00bFFF' }, // Deep Sky Blue\n { stop: 0.60, color: '#002366' }, // Royal Blue\n { stop: 0.70, color: '#0000CD' }, // Medium Blue\n { stop: 0.80, color: '#191970' }, // \n { stop: 1.00, color: '#191970' }, // Midnight Blue\n];*/\n\nexport let PartisanPrecinctStops = PartisanFewStops;\n\nexport let EthnicFewStops = [\n 0.00, // \n 0.40, // \n 0.50, //\n 1.00, // \n];\n\nexport type PaletteDefaults = { [key: string]: string };\nexport const DefaultPaletteDefaults: PaletteDefaults = {\n partisanScale: 'partisanclassic',\n partisanDistrictsScale: 'partisandistrictsclassic',\n demographicsScale: 'demographicsclassic',\n demographicsAllGroups: 'allgroupsclassic',\n };\n\nexport function makeStops(stops: number[], colors: string[]): Util.Stop[]\n{\n // Lengths should be equal\n const len: number = stops.length <= colors.length ? stops.length : colors.length;\n let result: Util.Stop[] = []\n for (let i = 0; i < len; i++)\n result.push({stop: stops[i], color: colors[i]});\n return result;\n}\n\nfunction partisanStops(stops: number[], pd: PaletteDefaults): Util.Stop[]\n{\n const palette: PaletteName = pd['partisanScale'] as PaletteName;\n return makeStops(stops, colorsFromStopsPartisan(palette, 'partisanScale', stops));\n}\n\nfunction partisanDistrictStops(stops: number[], pd: PaletteDefaults): Util.Stop[]\n{\n const palette: PaletteName = pd['partisanDistrictsScale'] as PaletteName;\n return makeStops(stops, colorsFromStopsPartisan(palette, 'partisanDistrictsScale', stops));\n}\n\nfunction ethnicStops(stops: number[], pd: PaletteDefaults): Util.Stop[]\n{\n const palette: PaletteName = pd['demographicsScale'] as PaletteName;\n if (palette === 'demographicsclassic')\n return makeStops(stops, Colors.EthnicFewClassicColors);\n return makeStops(stops, colorsFromStops(palette, stops, Colors.EthnicFewClassicColors));\n}\n\nexport function ethnicBackgroundColor(index: number, pd: PaletteDefaults): string\n{\n const palette: PaletteName = pd['demographicsAllGroups'] as PaletteName;\n const colors: string[] = allGroups16Colors(palette, Colors.getPalette(palette));\n if (index < colors.length)\n return colors[index];\n return '#ffffff';\n}\n\nexport function ToAllEthnicColor(agg: PF.PackedFields, dc: PF.DatasetContext, pd: PaletteDefaults): number\n{\n // Use VAP/CVAP if it exists\n const did = dc.primeVDS ? dc.primeVDS : dc.primeDDS\n const builtin = dc.dsMeta[did]?.builtin || did;\n return AggregateEthnicColor(PF.ToGetter(agg, dc, did), pd, builtin.endsWith('NH'));\n}\n\nexport function ToPartisanColorStr(agg: PF.PackedFields, dc: PF.DatasetContext, pd: PaletteDefaults): string\n{\n return ToPartisanColor(agg, dc, partisanStops(PartisanPrecinctStops, pd));\n}\n\nexport function ToPartisanDistrictColor(agg: PF.PackedFields, dc: PF.DatasetContext, pd: PaletteDefaults): string\n{\n return ToPartisanColor(agg, dc, partisanDistrictStops(PartisanDistrictStops, pd));\n}\n\nfunction ToPartisanColor(agg: PF.PackedFields, dc: PF.DatasetContext, stops: Util.GradientStops): string\n{\n const getter = PF.ToGetter(agg, dc, dc.primeEDS);\n return AggregatePartisanColorStr(getter, stops);\n}\n\nexport function ToPartisanShiftColor(agg: PF.PackedFields, dc: PF.DatasetContext, datasets: string[], pd: PaletteDefaults, isDistrict?: boolean): string\n{\n if (!datasets || datasets.length < 2)\n return '';\n\n const shift: number = PF.calcShift(agg, dc, datasets[0], datasets[1]);\n if (shift == null)\n return null;\n\n const defaultIsDistrict = isDistrict ?? false; // make the optional isDistrict parameter to false by default\n \n const rep: number = 0.5 - (shift / 2);\n const dem: number = 0.5 + (shift / 2);\n const stops: Util.GradientStops = defaultIsDistrict ? partisanDistrictStops(PartisanDistrictStops, pd) : partisanStops(PartisanPrecinctStops, pd);\n const color: string = ColorFromRGBPcts(rep, 0, dem, stops);\n // console.log('Shift (r, d, color): (' + rep + ', ' + dem + ', ' + color + ')');\n return color;\n}\n\nexport function ToEthnicColorStr(agg: PF.PackedFields, dc: PF.DatasetContext, pd: PaletteDefaults, detail: string): string\n{\n let ethnic: string = 'Wh';\n let total: string = 'Tot';\n let bInvert: boolean = false;\n const did = dc.primeVDS ? dc.primeVDS : dc.primeDDS;\n const builtin = dc.dsMeta[did]?.builtin || did;\n switch (detail)\n {\n case null: case '': case 'all':\n let c = ToAllEthnicColor(agg, dc, pd); // special case \n return c >= 0 ? ethnicBackgroundColor(c, pd) : '#ffffff';\n case 'white': ethnic = 'Wh'; break;\n case 'nonwhite': ethnic = 'Wh'; bInvert = true; break;\n case 'black': ethnic = builtin.endsWith('NH') ? 'Bl' : 'BlC'; break;\n case 'hisp': ethnic = 'His'; break;\n case 'native': ethnic = builtin.endsWith('NH') ? 'Nat' : 'NatC'; break;\n case 'asianpi': ethnic = 'AsnPI'; break;\n case 'asian': ethnic = builtin.endsWith('NH') ? 'Asn' : 'AsnC'; break;\n case 'pac': ethnic = builtin.endsWith('NH') ? 'Pac' : 'PacC'; break;\n case 'other': ethnic = 'OthAl'; break;\n case 'mix': ethnic = 'Mix'; break;\n default: break;\n }\n\n const getter = PF.ToGetter(agg, dc, did);\n let den = getter(total);\n let num = getter(ethnic);\n if (den === undefined || isNaN(den) || num === undefined || isNaN(num))\n return '#ffffff';\n\n if (den == 0)\n return '#ffffff';\n const pct = bInvert ? 1 - (num / den) : num / den;\n return Util.execGradient(ethnicStops(EthnicFewStops, pd), pct);\n}\n\n// All Groups Mosaic\nexport function AggregateEthnicColor(getter: PF.FieldGetter, pd: PaletteDefaults, nhAlone: boolean): number\n{\n // Dataset should have 'Tot' field\n let totField = 'Tot';\n let totalPop = getter(totField);\n if (totalPop == 0) return -1;\n\n // Field names hard-coded\n let white: number = getter('Wh') / totalPop;\n let hisp: number = getter('His') / totalPop;\n let black: number = 0;\n let native: number = 0;\n let asianPI: number = 0;\n if (nhAlone)\n {\n black= getter('Bl') / totalPop;\n native = getter('Nat') / totalPop;\n asianPI = (getter('Asn') + getter('Pac')) / totalPop;\n }\n else\n {\n black= getter('BlC') / totalPop;\n native = getter('NatC') / totalPop;\n asianPI = (getter('AsnC') + getter('PacC')) / totalPop;\n }\n\n if (white >= 0.75)\n return ColorBySolidWhite;\n if (black >= 0.75)\n return ColorBySolidBlack;\n if (hisp >= 0.75)\n return ColorBySolidHispanic;\n if (asianPI >= 0.75)\n return ColorBySolidAsian;\n if (white >= 0.5 && black < 0.3 && hisp < 0.3 && native < 0.3 && asianPI < 0.3)\n return ColorByMostlyWhite;\n if (black >= 0.5 && white < 0.3 && hisp < 0.3 && native < 0.3 && asianPI < 0.3)\n return ColorByMostlyBlack;\n if (hisp >= 0.5 && white < 0.3 && black < 0.3 && native < 0.3 && asianPI < 0.3)\n return ColorByMostlyHispanic;\n if (asianPI >= 0.5 && white < 0.3 && black < 0.3 && native < 0.3 && hisp < 0.3)\n return ColorByMostlyAsian;\n if (native > 0.5)\n return ColorByMostlyNative;\n if (hisp >= 0.3 && white >= 0.3 && hisp + white > 0.75)\n return ColorByHispanicWhite;\n if (black >= 0.3 && white >= 0.3 && black + white > 0.75)\n return ColorByBlackWhite;\n if (hisp >= 0.3 && black >= 0.3 && hisp + black > 0.75)\n return ColorByHispanicBlack;\n if (asianPI >= 0.3 && white >= 0.3 && asianPI + white > 0.75)\n return ColorByAsianWhite;\n if (asianPI >= 0.3 && hisp >= 0.3 && asianPI + hisp > 0.75)\n return ColorByAsianHispanic;\n if (black >= 0.3 && asianPI >= 0.3 && black + asianPI > 0.75)\n return ColorByBlackAsian;\n return ColorByMix;\n}\n\n// This is used only for 2016_BG analytics, seemingly only for values, not colors (dave 12/9/21)\nexport function AggregatePartisanColor(getter: PF.FieldGetter): number\n{\n // Dataset should have 'Tot' field\n let totField = 'Tot';\n let presTot = getter(totField);\n if (presTot == 0) return -1;\n\n // TODO: Field names hard-coded\n let presR = getter('R');\n let presD = getter(' D');\n\n if (presTot === undefined || presD === undefined || presR === undefined || presTot <= 0)\n return -1;\n\n let pctD = presD / presTot;\n let pctR = presR / presTot;\n let diff = pctD - pctR;\n if (diff < -0.20)\n return ColorByGreatR;\n if (diff < -0.10)\n return ColorByGoodR;\n if (diff < -0.02)\n return ColorByFairR;\n if (diff > 0.20)\n return ColorByGreatD;\n if (diff > 0.10)\n return ColorByGoodD;\n if (diff > 0.02)\n return ColorByFairD;\n return ColorByEven;\n}\n\nexport function AggregatePartisanColorStr(getter: PF.FieldGetter, stops: Util.GradientStops): string\n{\n // Dataset should have 'Tot' field\n let totField = 'Tot';\n let presTot = getter(totField);\n if (presTot == 0) return '';\n\n // TODO: Field names hard-coded\n let presR = getter('R');\n let presD = getter('D');\n\n if (presTot === undefined || presD === undefined || presR === undefined || presTot <= 0)\n return '';\n\n let pctD: number = presD / presTot;\n let pctR: number = presR / presTot;\n let pctOth: number = (presTot - presD - presR) / presTot;\n const color: string = ColorFromRGBPcts(pctR, pctOth, pctD, stops);\n //console.log('Agg (r, d, color): (' + pctR + ', ' + pctD + ', ' + color + ')');\n return color;\n}\n\n// This is the new gradient code\nexport function ColorFromRGBPcts(pctRed: number, pctGreen: number, pctBlue: number, stops: Util.GradientStops): string\n{\n let pctTot = pctRed + pctBlue;\n if (pctTot == 0) return '#ffffff';\n pctBlue /= pctTot;\n return Util.execGradient(stops, pctBlue);\n}\n\n// ****************** End of \"classic\" palettes *****************\n\nexport type ColorUse = 'districts' | 'partisanScale' | 'demographicsScale' | 'demographicsAllGroups' | 'partisanDistrictsScale';\n\n// Currently supported palettes\nexport const PaletteNames = ['jet_r', 'turbo_r', 'inferno_r', 'viridis_r', 'magma_r', 'plasma_r', 'Greys', 'bone_r',\n 'draclassic', 'demographicsclassic', 'partisanclassic', 'allgroupsclassic', 'partisandistrictsclassic'] as const;\nexport type PaletteName = typeof PaletteNames[number];\n\nexport function colorsFromStops(palette: PaletteName, stops: number[], classicColors: string[]): string[]\n{\n // Use classicColors to see where there are duplicate colors\n const allColors: string[] = Colors.getPalette(palette);\n let colors: string[] = [];\n for (let i = 0; i < stops.length; i++)\n {\n const stop: number =\n (i + 1 < classicColors.length && classicColors[i] == classicColors[i + 1]) ? (stops[i] + stops[i + 1]) / 2 :\n (i > 0 && i < classicColors.length && classicColors[i - 1] == classicColors[i]) ? (stops[i - 1] + stops[i]) / 2 : stops[i];\n \n let inx: number = Math.floor(allColors.length * stop);\n if (inx >= allColors.length) inx = allColors.length - 1;\n colors.push(allColors[inx]);\n }\n return colors;\n}\n\nexport function colorsFromStopsPartisan(palette: PaletteName, colorUse: ColorUse, stops: number[]): string[]\n{\n if (palette === 'partisanclassic')\n return Colors.PartisanPrecinctClassicColors;\n if (palette === 'partisandistrictsclassic')\n return Colors.PartisanDistrictClassicColors;\n\n // For partisanScale and partisanDistrictsScale; indexes match classic color pattern\n const allColors: string[] = Colors.getPalette(palette);\n if (allColors.length < Colors.MaxColors)\n return Colors.PartisanPrecinctClassicColors; // Safety check; shouldn't happen\n\n let colors: string[] = [];\n\n const indexes: number[] = colorUse === 'partisanScale' ?\n [15, 27, 37, 47, 57, 67, 82, 92, 102, 112, 122, 134] : [15, 15, 37, 37, 47, 67, 82, 102, 122, 122, 134, 134];\n for (let i = 0; i < stops.length; i++)\n {\n colors.push(allColors[indexes[i]]);\n }\n return colors;\n}\n\nexport function allGroups16Colors(palette: PaletteName, colors: string[])\n{\n let modColors: string[] = [];\n //if (palette === 'allgroupsclassic') // Only support classic for now\n {\n modColors.push(Colors.EthnicBackgroundColor[ColorBySolidWhite]); // pos 0\n modColors.push(Colors.EthnicBackgroundColor[ColorBySolidBlack]); // pos 1\n modColors.push(Colors.EthnicBackgroundColor[ColorBySolidHispanic]);// pos 2\n modColors.push(Colors.EthnicBackgroundColor[ColorBySolidAsian]); // pos 3\n modColors.push(Colors.EthnicBackgroundColor[ColorByMostlyWhite]); // pos 4\n modColors.push(Colors.EthnicBackgroundColor[ColorByMostlyBlack]); // pos 5\n modColors.push(Colors.EthnicBackgroundColor[ColorByMostlyHispanic]);// pos 6\n modColors.push(Colors.EthnicBackgroundColor[ColorByMostlyAsian]); // pos 7\n modColors.push(Colors.EthnicBackgroundColor[ColorByMostlyNative]); // pos 8\n modColors.push(Colors.EthnicBackgroundColor[ColorByMix]); // pos 9\n modColors.push(Colors.EthnicBackgroundColor[ColorByHispanicWhite]);// pos 10\n modColors.push(Colors.EthnicBackgroundColor[ColorByBlackWhite]); // pos 11\n modColors.push(Colors.EthnicBackgroundColor[ColorByHispanicBlack]);// pos 12\n modColors.push(Colors.EthnicBackgroundColor[ColorByAsianWhite]); // pos 13\n modColors.push(Colors.EthnicBackgroundColor[ColorByAsianHispanic]);// pos 14\n modColors.push(Colors.EthnicBackgroundColor[ColorByBlackAsian]); // pos 15\n }\n /*else if (palette === 'viridis_r' || palette === 'plasma_r')\n {\n modColors.push(colors[149]);\n modColors.push(colors[129]);\n modColors.push(colors[109]);\n modColors.push(colors[89]);\n modColors.push(colors[139]);\n modColors.push(colors[119]);\n modColors.push(colors[99]);\n modColors.push(colors[79]);\n modColors.push(colors[0]);\n modColors.push(colors[9]);\n modColors.push(colors[29]);\n modColors.push(colors[19]);\n modColors.push(colors[49]);\n modColors.push(colors[39]);\n modColors.push(colors[69]);\n modColors.push(colors[59]); \n }\n else if (palette === 'magma_r')\n {\n modColors.push(colors[134]);\n modColors.push(colors[116]);\n modColors.push(colors[98]);\n modColors.push(colors[80]);\n modColors.push(colors[125]);\n modColors.push(colors[107]);\n modColors.push(colors[89]);\n modColors.push(colors[71]);\n modColors.push(colors[0]);\n modColors.push(colors[8]);\n modColors.push(colors[26]);\n modColors.push(colors[17]);\n modColors.push(colors[44]);\n modColors.push(colors[35]);\n modColors.push(colors[62]);\n modColors.push(colors[53]); \n }*/\n return modColors;\n}\n\nexport interface DistrictCache\n{\n colorElection?: string;\n colorEthnic?: string;\n colorExtended?: string;\n colorSolid?: string;\n}\n\n// Color property we need out of the full DistrictProps\nexport interface ColorProp\n{\n color: string,\n}\nexport type ColorProps = Array<ColorProp>;\n\nexport interface DistrictColorParams\n{\n datasetContext: PF.DatasetContext,\n mapColors: ColorProps,\n aggregates: PF.PackedFields[],\n paletteDefaults: PaletteDefaults,\n useFirstColor: boolean,\n usePalette: string,\n colorDistrictsBy: string,\n shiftDatasets?: string[],\n}\n\nfunction safeNumber(n: any): number { n = Number(n); return typeof n !== 'number' || isNaN(n) ? 0 : n }\nfunction safeStops(s: string): number[]\n{\n if (!s) return EthnicFewStops;\n return s.split(',').map(safeNumber);\n}\nfunction safeColors(s: string): string[]\n{\n if (!s) return ['#fafafa', '#aaaaaa', '#666666', '#111111'];\n return s.split(',').map(s => s.trim());\n}\n\nexport function ToExtendedColor(agg: PF.PackedFields, dc: PF.DatasetContext, colorBy: string): string\n{\n // compute pct\n const {datasetid, field} = parseColorBy(colorBy);\n if (!datasetid || !field || !dc.dsMeta || !dc.dsMeta[datasetid])\n return '#ffffff';\n const meta = dc.dsMeta[datasetid];\n const dsfield = meta.fields ? meta.fields[field] : null;\n const dscolor = meta.colors ? meta.colors.find((c: DatasetColor) => c.shortCaption === field) : null;\n if (!dsfield && !dscolor)\n return '#ffffff';\n if (dscolor)\n {\n let stops = safeStops(dscolor.stops);\n let colors = safeColors(dscolor.colors);\n if (stops.length != colors.length)\n {\n stops = EthnicFewStops;\n colors = safeColors('');\n }\n let o: any = {};\n let getter = PF.ToGetter(agg, dc, datasetid);\n Object.keys(meta.fields).forEach(f => o[f] = getter(f));\n let formatter = new Detail.FormatDetail(dscolor.expr);\n let result = formatter.format(Detail.FormatDetail.prepare(o));\n let intensity = Math.min(Math.max(result.n || 0, 0), 1);\n return Util.execGradient(makeStops(stops, colors), intensity);\n }\n else\n {\n let getter = PF.ToGetter(agg, dc, datasetid);\n let fields = PF.sortedFieldList(meta);\n let den = 0;\n if (meta.fields['Tot'])\n den = getter('Tot');\n else\n fields.forEach(f => { den += getter(f) });\n let num = getter(field);\n\n // Careful...\n if (den == 0 || den === undefined || isNaN(den) || num === undefined || isNaN(num))\n return '#ffffff';\n\n return Util.execGradient(makeStops(EthnicFewStops, Colors.EthnicFewClassicColors), num / den);\n }\n}\n\nexport function computeDistrictColors(params: DistrictColorParams): DistrictCache[]\n{\n let dcNew: DistrictCache[] = [];\n for (let i: number = 0; i < params.aggregates.length; i++)\n {\n let agg = params.aggregates[i];\n let mapColor = i < params.mapColors.length ? params.mapColors[i].color : Colors.genColor(i, params.useFirstColor, params.usePalette);\n let dc: DistrictCache = {};\n\n // Compute election color and partisan color\n dc.colorEthnic = mapColor;\n dc.colorElection = ToPartisanDistrictColor(agg, params.datasetContext, params.paletteDefaults);\n\n switch (params.colorDistrictsBy)\n {\n case 'election':\n dc.colorSolid = dc.colorElection;\n break;\n case 'nonwhite':\n case 'hisp':\n case 'black':\n case 'native':\n case 'asian':\n case 'pac':\n case 'all':\n dc.colorEthnic = ToEthnicColorStr(agg, params.datasetContext, params.paletteDefaults, params.colorDistrictsBy);\n dc.colorSolid = dc.colorEthnic;\n break;\n case 'elecshift':\n if (params.shiftDatasets && params.shiftDatasets.length == 2) \n {\n dc.colorSolid = ToPartisanShiftColor(agg, params.datasetContext, params.shiftDatasets, params.paletteDefaults, true);\n } \n else \n {\n dc.colorSolid = mapColor;\n }\n break;\n default:\n if (isColorBy(params.colorDistrictsBy))\n {\n dc.colorExtended = ToExtendedColor(agg, params.datasetContext, params.colorDistrictsBy);\n dc.colorSolid = dc.colorExtended;\n }\n else\n dc.colorSolid = mapColor;\n break;\n }\n dcNew.push(dc);\n }\n return dcNew;\n}\n\n// Dotmap support\nexport interface RGB { r: number, g: number, b: number };\n\nexport const BinRed = 0\nexport const BinOrangeRed = 1;\nexport const BinBrown = 2;\nexport const BinOrange = 3;\nexport const BinGold = 4;\nexport const BinYellow = 5;\nexport const BinGreenish = 6;\nexport const BinChartreuse = 7;\nexport const BinLime = 8;\nexport const BinMediumSpringGreen = 9;\nexport const BinCyan = 10;\nexport const BinLightBlue = 11;\nexport const BinBlue = 12;\nexport const BinBlueViolet = 13;\nexport const BinDarkViolet = 14;\nexport const BinMagenta = 15;\nexport const BinDeepPink = 16;\nexport const BinBlack = 17;\n\n// Ethnic colors\nexport const BinEthnicWhite = BinLightBlue;\nexport const BinEthnicBlack = BinGreenish;\nexport const BinEthnicAsian = BinRed;\nexport const BinEthnicHispanic = BinOrange;\nexport const BinEthnicOther = BinBrown;\n\nexport const BinColorLookup: RGB[] = [\n { r: 0xff, g: 0x00, b: 0x00 }, // 0 - red\n { r: 0xff, g: 0x45, b: 0x00 }, // 1 - orange red\n { r: 0x99, g: 0x66, b: 0x33 }, // 2 - brown\n { r: 0xff, g: 0xaa, b: 0x00 }, // 3 - orange\n { r: 0xff, g: 0xd7, b: 0x00 }, // 4 - gold\n { r: 0xff, g: 0xd7, b: 0x00 }, // 5 - yellow\n { r: 0x9f, g: 0xd4, b: 0x00 }, // 6 - greenish\n { r: 0x7f, g: 0xff, b: 0x00 }, // 7 - chartreuse\n { r: 0x00, g: 0xff, b: 0x00 }, // 8 - lime\n { r: 0x00, g: 0xfa, b: 0x9a }, // 9 - medium spring green\n { r: 0x00, g: 0xff, b: 0xff }, // 10 - cyan\n { r: 0x73, g: 0xb2, b: 0xff }, // 11 - light blue\n { r: 0x00, g: 0x00, b: 0xff }, // 12 - blue\n { r: 0x8a, g: 0x2b, b: 0xe2 }, // 13 - blue violet\n { r: 0x94, g: 0x00, b: 0xd3 }, // 14 - dark violet\n { r: 0xff, g: 0x00, b: 0xff }, // 15 - magenta\n { r: 0xff, g: 0x14, b: 0x93 }, // 16 - deep pink\n { r: 0x00, g: 0x00, b: 0x00 }, // 17 - black\n];\n\n// Map ordering to Bin* lookup values\nconst ColorOrderEthnic = 'wbaho'; // abcde\n\n// Map number of fields to color selection\nexport const FieldCountToColors: { [nfields: number]: number[] } = {\n [1]: [ BinBrown ],\n [2]: [ BinRed, BinBlue ],\n [3]: [ BinRed, BinBlue, BinBrown ],\n [4]: [ BinRed, BinBlue, BinBrown, BinGreenish ],\n [5]: [ BinLightBlue, BinGreenish, BinRed, BinOrange, BinBrown ],\n [6]: [ BinRed, BinBrown, BinGold, BinGreenish, BinLightBlue, BinBlueViolet ],\n [7]: [ BinRed, BinBrown, BinGold, BinBlueViolet, BinMagenta , BinGreenish, BinLightBlue ],\n [8]: [ BinRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta , BinGreenish, BinLightBlue ],\n [9]: [ BinRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta , BinGreenish, BinLightBlue, BinBlue ],\n [10]: [ BinRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta , BinGreenish, BinCyan, BinLightBlue, BinBlue ],\n [11]: [ BinRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta , BinGreenish, BinLime, BinCyan, BinLightBlue, BinBlue ],\n [12]: [ BinRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta, BinDeepPink, BinGreenish, BinMediumSpringGreen, BinCyan, BinLightBlue, BinBlue ],\n [13]: [ BinRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta, BinDeepPink, BinGreenish, BinLime, BinMediumSpringGreen, BinCyan, BinLightBlue, BinBlue ],\n [14]: [ BinRed, BinOrangeRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinMagenta, BinDeepPink, BinGreenish, BinLime, BinMediumSpringGreen, BinCyan, BinLightBlue, BinBlue ],\n [15]: [ BinRed, BinOrangeRed, BinBrown, BinOrange, BinGold, BinBlueViolet, BinDarkViolet, BinMagenta, BinDeepPink, BinGreenish, BinLime, BinMediumSpringGreen, BinCyan, BinLightBlue, BinBlue ],\n [16]: [ BinRed, BinOrangeRed, BinBrown, BinOrange, BinGold, BinYellow, BinBlueViolet, BinDarkViolet, BinMagenta, BinDeepPink, BinGreenish, BinLime, BinMediumSpringGreen, BinCyan, BinLightBlue, BinBlue ],\n};\nexport const MaxFields = 16;\n\n\nexport function colorindexToRGB(colorindex: number): RGB\n{\n return BinColorLookup[colorindex] || BinColorLookup[BinBrown];\n}\n\nexport const ColorFlags = 'abcdefghijklmnopqrstuvwxyz';\n\nexport function colorflagToColorindex(nfields: number, colorflag: string): number\n{\n let i = ColorFlags.indexOf(colorflag);\n return i >= 0 && nfields > 0 && nfields <= MaxFields ? FieldCountToColors[nfields][i] : BinBrown;\n}\n\nexport function colororderToColorindex(nfields: number, order: number): number\n{\n return order >= 0 && nfields > 0 && nfields <= MaxFields ? FieldCountToColors[nfields][order] : BinBrown;\n}\n","// Public libraries\nimport { Util, CSV, G } from '@dra2020/baseclient';\n\n// Local library\nimport * as VF from './vfeature';\n\n// Used internally to index into District Properties Array\nexport type BlockMap = { [id: string]: number };\n\n// Used more generically and allows string districtIDs\nexport type BlockMapping = { [id: string]: string };\n\nexport type RevBlockMapping = { [id: string]: string[] };\n\n// Alternate block mapping (only supports <1 std>: <Many alt>)\nexport type AltBlockMapping = { [blockid: string]: {[blockid: string]: number} }; // {stdblock: {altblock1: pop1, altblock2: pop2, ...}}\n\nlet reNumeric = /^(\\D*)(\\d*)(\\D*)$/;\nlet reDistrictNumber = /^\\d+$/;\nlet reDistrictNumeric = /^\\d/;\n\n// Normalize any numeric part to have no padded leading zeros\nexport function canonicalDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n if (a[2].length > 0)\n a[2] = String(Number(a[2]));\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\nfunction reverseSubMapping(mbm: G.MultiBlockMapping, n: number): G.ReverseBlockMapping\n{\n let rev: any = {};\n\n mbm.forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nfunction reverseBlockgroupMapping(mbm: G.MultiBlockMapping): G.ReverseBlockMapping\n{\n return reverseSubMapping(mbm, 12);\n}\n\n// Normalize any numeric part to have four digits with padded leading zeros\n// so alphabetic sorting will result in correct numeric sort for mixed alphanumber\n// district labels.\nexport function canonicalSortingDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n {\n switch (s.length)\n {\n case 1: s = `000${s}`; break;\n case 2: s = `00${s}`; break;\n case 3: s = `0${s}`; break;\n }\n a[2] = s;\n }\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\n// Return numeric part of districtID (or -1 if there is none)\nexport function canonicalNumericFromDistrictID(districtID: string): number\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n return Number(s);\n }\n return -1;\n}\n\nexport function canonicalDistrictIDFromNumber(districtID: string, n: number): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n a[2] = String(n);\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n else\n districtID = String(n);\n return districtID;\n}\n\n// Numbers start at 1\nexport type DistrictOrder = { [districtID: string]: number };\n\n// If purely numeric districtIDs and we are missing some number of IDs less than\nexport function canonicalDistrictIDGapFill(keys: string[]): string[]\n{\n if (keys == null || keys.length == 0) return keys;\n let nonNumeric = keys.find((s: string) => !reDistrictNumber.test(s)) !== undefined;\n if (nonNumeric) return keys;\n let max = Number(keys[keys.length-1]);\n if (max == keys.length || (max - keys.length) > keys.length) return keys; // no gaps or too many gaps\n\n // OK, finally going to fill some gaps\n for (let i: number = 0; i < keys.length; i++)\n {\n let here = Number(keys[i]);\n while (here > i+1)\n {\n keys.splice(i, 0, canonicalSortingDistrictID(String(i+1)));\n i++;\n }\n }\n\n return keys;\n}\n\nexport function canonicalDistrictIDOrdering(order: DistrictOrder): DistrictOrder\n{\n let keys = Object.keys(order);\n let i: number;\n let a: any = [];\n let template: string = undefined;\n\n keys = keys.map((s: string) => canonicalSortingDistrictID(s));\n\n // Let's omit this. Some official maps have odd numbering schemes and we don't\n // want to generate anomalous spurious extra districts.\n //keys = canonicalDistrictIDGapFill(keys);\n\n keys.sort();\n order = {};\n for (i = 0; i < keys.length; i++)\n order[canonicalDistrictID(keys[i])] = i+1;\n\n // Remove water districts\n if (order['ZZZ']) delete order['ZZZ'];\n if (order['ZZ']) delete order['ZZ'];\n\n return order;\n}\n\nexport interface OneCSVLine\n{\n geoid: string;\n districtID: string;\n}\n\nlet reArray = [\n // comma-delimited\n /^(\\d\\d[^\\s,']*)[\\s]*,[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s,\"]*)[\\s]*,[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n\n // pipe-delimited, new 2020 Census Bureau format\n /^(\\d\\d[^\\s\\|']*)[\\s]*\\|[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s\\|\"]*)[\\s]*\\|[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n ];\nlet reStart = 0; // last successful regex\n\nexport function parseCSVLine(line: string): OneCSVLine\n{\n if (line == null || line == '') return null;\n\n // start at last successful parse so we don't have to\n // iterate through all the regex's for each line.\n for (let i = reStart; i < reArray.length; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n for (let i = 0; i < reStart; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n return null;\n}\n\nexport function csvLine(coder: Util.Coder, line: string): OneCSVLine\n{\n if (!coder || !line) return null;\n let parse = new CSV.ParseOne(coder, line);\n if (parse.length != 2) return null;\n let re = /^\\d\\d/;\n if (!re.exec(parse.fields[0])) return null;\n return { geoid: parse.fields[0], districtID: parse.fields[1] };\n}\n\nexport interface ConvertResult\n{\n inBlockMap: BlockMapping;\n inMbm: G.MultiBlockMapping;\n outMbm: G.MultiBlockMapping;\n outValid: boolean;\n outState: string;\n outMap: BlockMapping;\n outOrder: DistrictOrder;\n outDistrictToSplit: VF.DistrictToSplitBlock;\n nFeatures: number;\n nSplitFromFeatures: number;\n nSplitToFeatures: number;\n nBlocks: number;\n nSplitBlocks: number;\n}\n\nexport function blockmapToState(blockMap: BlockMapping): string\n{\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n return geoidToState(id);\n return null;\n}\n\nexport function blockmapToVTDmap(blockMap: BlockMapping, mbm: G.MultiBlockMapping, altBlocks: AltBlockMapping): ConvertResult\n{\n return blockmapToVTDmapCustom(blockMap, mbm, mbm, altBlocks);\n}\n\n// blockToVTD:\n// Take BlockMapping (simple map of GEOID to districtID) and a per-state map of block-level GEOID to VTD\n// and return the output mapping of VTD to districtID, as well a data structure that describes any VTD's\n// that need to be split between districtIDs. Also returns the DistrictOrder structure that defines the\n// districtIDs that were used by the file.\n//\n// The state (as specified by the first two digits of the GEOID) is also determined. If the GEOID's do\n// not all specify the same state, the mapping is considered invalid and the outValid flag is set to false.\n//\n\nexport function blockmapToVTDmapCustom(\n blockMap: BlockMapping,\n inMbm: G.MultiBlockMapping,\n outMbm: G.MultiBlockMapping,\n altBlocks: AltBlockMapping): ConvertResult\n{\n let res: ConvertResult = {\n inBlockMap: blockMap,\n inMbm: inMbm,\n outMbm: outMbm,\n outValid: true,\n outState: null,\n outMap: {},\n outOrder: {},\n outDistrictToSplit: {},\n nFeatures: 0,\n nSplitFromFeatures: 0,\n nSplitToFeatures: 0,\n nBlocks: 0,\n nSplitBlocks: 0,\n };\n\n let bmGather: { [geoid: string]: { [district: string]: { [blockid: string]: boolean } } } = {};\n\n let revBG: RevBlockMapping; // lazy create on demand\n\n function isBlockID(b: string): boolean { return b.length >= 15 && (!inMbm || !!inMbm.map(b)) }\n\n if (altBlocks)\n {\n // Create reverse of altBlocks if they exist {altBlockid: {stdBlockid, pop}, ...}\n let revAltBlocks: {[altBlockid: string]: {blockid: string, pop: number}} = {};\n Object.keys(altBlocks).forEach(blockid =>\n {\n Object.keys(altBlocks[blockid]).forEach(altBlockid =>\n {\n revAltBlocks[altBlockid] = {blockid: blockid, pop: altBlocks[blockid][altBlockid]}\n })\n });\n // Now walk input and build new blockMap with altBlocks replaced with stdBlocks\n let blockMapP: BlockMapping = {};\n let bestAlt: {[blockid: string]: {dist: string, pop: number}} = {};\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let n: number = id.length;\n if (isBlockID(id) && revAltBlocks[id])\n {\n if (!bestAlt[revAltBlocks[id].blockid] || bestAlt[revAltBlocks[id].blockid].pop < revAltBlocks[id].pop)\n {\n bestAlt[revAltBlocks[id].blockid] = {dist: blockMap[id], pop: revAltBlocks[id].pop};\n blockMapP[revAltBlocks[id].blockid] = blockMap[id];\n }\n }\n else\n {\n blockMapP[id] = blockMap[id];\n }\n }\n blockMap = blockMapP;\n }\n\n // First aggregate into features across all the blocks\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let state = geoidToState(id);\n if (res.outState == null)\n res.outState = state;\n else if (res.outState !== state)\n {\n res.outValid = false;\n break;\n }\n\n let districtID: string = canonicalDistrictID(blockMap[id]);\n\n // Just ignore ZZZ (water) blocks\n if (districtID === 'ZZZ')\n continue;\n\n if (res.outOrder[districtID] === undefined)\n res.outOrder[districtID] = 0;\n\n let n: number = id.length;\n let geoids: string[];\n let ids: string[];\n res.nBlocks++;\n\n // Simple test for block id (vs. voting district or block group) id\n // Also skip longer custom precinct ids\n if (isBlockID(id))\n {\n ids = [id];\n if (outMbm && outMbm.map(id) !== undefined)\n geoids = [outMbm.map(id)];\n else\n {\n geoids = [id.substr(0, 12)];\n if (outMbm && !outMbm.rev(geoids[0]))\n {\n res.outValid = false;\n break;\n }\n }\n }\n else if (n == 12)\n {\n if (!revBG) revBG = reverseBlockgroupMapping(outMbm);\n if (revBG[id])\n {\n ids = revBG[id];\n geoids = ids.map(id => outMbm.map(id));\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n }\n else if (inMbm.rev(id))\n {\n // Map down to blockids and then back up to geoids to handle both custom and default geoids\n ids = inMbm.rev(id);\n geoids = ids.map(blockid => outMbm.map(blockid));\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n\n ids.forEach((id: string, i: number) => {\n let geoid = geoids[i];\n let districtToBlocks: { [districtID: string]: { [blockid: string]: boolean } } = bmGather[geoid];\n if (districtToBlocks === undefined)\n bmGather[geoid] = { [districtID]: { [id]: true } };\n else\n {\n let thisDistrict: { [blockid: string]: boolean } = districtToBlocks[districtID];\n if (thisDistrict === undefined)\n {\n thisDistrict = { };\n districtToBlocks[districtID] = thisDistrict;\n }\n thisDistrict[id] = true;\n }\n });\n }\n\n // Now determine actual mapping of blocks to features, looking for split features\n for (let geoid in bmGather) if (bmGather.hasOwnProperty(geoid))\n {\n let districtToBlocks = bmGather[geoid];\n let bWhole = false;\n if (Util.countKeys(districtToBlocks) == 1)\n {\n let blocks = Object.keys(districtToBlocks[Util.nthKey(districtToBlocks)]);\n if (blocks[0] === geoid || (outMbm.rev(geoid) && blocks.length === outMbm.rev(geoid).length))\n bWhole = true;\n }\n if (bWhole)\n {\n res.outMap[geoid] = Util.nthKey(districtToBlocks);\n res.nFeatures++;\n }\n else\n {\n for (let districtID in districtToBlocks) if (districtToBlocks.hasOwnProperty(districtID))\n {\n let split: VF.SplitBlock = { state: '', datasource: '', geoid: geoid, blocks: Object.keys(districtToBlocks[districtID]) };\n res.nSplitBlocks += split.blocks.length;\n let splits = res.outDistrictToSplit[districtID];\n if (splits === undefined)\n {\n splits = [];\n res.outDistrictToSplit[districtID] = splits;\n }\n splits.push(split);\n res.nFeatures++;\n res.nSplitToFeatures++;\n }\n res.nSplitFromFeatures++;\n }\n }\n\n res.outOrder = canonicalDistrictIDOrdering(res.outOrder);\n\n return res;\n}\n\nexport const StateIdToStateCode: any = {\n '01': 'AL',\n '02': 'AK',\n '04': 'AZ',\n '05': 'AR',\n '06': 'CA',\n '08': 'CO',\n '09': 'CT',\n '10': 'DE',\n '11': 'DC',\n '12': 'FL',\n '13': 'GA',\n '15': 'HI',\n '16': 'ID',\n '17': 'IL',\n '18': 'IN',\n '19': 'IA',\n '20': 'KS',\n '21': 'KY',\n '22': 'LA',\n '23': 'ME',\n '24': 'MD',\n '25': 'MA',\n '26': 'MI',\n '27': 'MN',\n '28': 'MS',\n '29': 'MO',\n '30': 'MT',\n '31': 'NE',\n '32': 'NV',\n '33': 'NH',\n '34': 'NJ',\n '35': 'NM',\n '36': 'NY',\n '37': 'NC',\n '38': 'ND',\n '39': 'OH',\n '40': 'OK',\n '41': 'OR',\n '42': 'PA',\n '44': 'RI',\n '45': 'SC',\n '46': 'SD',\n '47': 'TN',\n '48': 'TX',\n '49': 'UT',\n '50': 'VT',\n '51': 'VA',\n '53': 'WA',\n '54': 'WV',\n '55': 'WI',\n '56': 'WY',\n '72': 'PR',\n};\n\nexport const StateCodeToStateId: any = {\n 'AL': '01',\n 'AK': '02',\n 'AZ': '04',\n 'AR': '05',\n 'CA': '06',\n 'CO': '08',\n 'CT': '09',\n 'DE': '10',\n 'DC': '11',\n 'FL': '12',\n 'GA': '13',\n 'HI': '15',\n 'ID': '16',\n 'IL': '17',\n 'IN': '18',\n 'IA': '19',\n 'KS': '20',\n 'KY': '21',\n 'LA': '22',\n 'ME': '23',\n 'MD': '24',\n 'MA': '25',\n 'MI': '26',\n 'MN': '27',\n 'MS': '28',\n 'MO': '29',\n 'MT': '30',\n 'NE': '31',\n 'NV': '32',\n 'NH': '33',\n 'NJ': '34',\n 'NM': '35',\n 'NY': '36',\n 'NC': '37',\n 'ND': '38',\n 'OH': '39',\n 'OK': '40',\n 'OR': '41',\n 'PA': '42',\n 'RI': '44',\n 'SC': '45',\n 'SD': '46',\n 'TN': '47',\n 'TX': '48',\n 'UT': '49',\n 'VT': '50',\n 'VA': '51',\n 'WA': '53',\n 'WV': '54',\n 'WI': '55',\n 'WY': '56',\n 'PR': '72',\n};\n\nexport function geoidToState(geoid: string): string\n{\n let re = /^(..).*$/;\n\n let a = re.exec(geoid);\n if (a == null || a.length != 2) return null;\n return StateIdToStateCode[a[1]];\n}\n\nexport type StateUrls = (\n 'alabama' |\n 'alaska' |\n 'arizona' |\n 'arkansas' |\n 'california' |\n 'colorado' |\n 'connecticut' |\n 'delaware' |\n 'district-of-columbia' |\n 'florida' |\n 'georgia' |\n 'hawaii' |\n 'idaho' |\n 'illinois' |\n 'indiana' |\n 'iowa' |\n 'kansas' |\n 'kentucky' |\n 'louisiana' |\n 'maine' |\n 'maryland' |\n 'massachusetts' |\n 'michigan' |\n 'minnesota' |\n 'mississippi' |\n 'missouri' |\n 'montana' |\n 'nebraska' |\n 'nevada' |\n 'new-hampshire' |\n 'new-jersey' |\n 'new-mexico' |\n 'new-york' |\n 'north-carolina' |\n 'north-dakota' |\n 'ohio' |\n 'oklahoma' |\n 'oregon' |\n 'pennsylvania' |\n 'rhode-island' |\n 'south-carolina' |\n 'south-dakota' |\n 'tennessee' |\n 'texas' |\n 'utah' |\n 'vermont' |\n 'virginia' |\n 'washington' |\n 'west-virginia' |\n 'wisconsin' |\n 'wyoming' |\n 'puerto-rico'\n);\n\nexport type ValidStateNamesForUrlType =\n{\n readonly [stateUrl in StateUrls]: boolean;\n};\n\nconst ValidStateNamesForUrl: ValidStateNamesForUrlType = {\n 'alabama': true,\n 'alaska': true,\n 'arizona': true,\n 'arkansas': true,\n 'california': true,\n 'colorado': true,\n 'connecticut': true,\n 'delaware': true,\n 'district-of-columbia': true,\n 'florida': true,\n 'georgia': true,\n 'hawaii': true,\n 'idaho': true,\n 'illinois': true,\n 'indiana': true,\n 'iowa': true,\n 'kansas': true,\n 'kentucky': true,\n 'louisiana': true,\n 'maine': true,\n 'maryland': true,\n 'massachusetts': true,\n 'michigan': true,\n 'minnesota': true,\n 'mississippi': true,\n 'missouri': true,\n 'montana': true,\n 'nebraska': true,\n 'nevada': true,\n 'new-hampshire': true,\n 'new-jersey': true,\n 'new-mexico': true,\n 'new-york': true,\n 'north-carolina': true,\n 'north-dakota': true,\n 'ohio': true,\n 'oklahoma': true,\n 'oregon': true,\n 'pennsylvania': true,\n 'rhode-island': true,\n 'south-carolina': true,\n 'south-dakota': true,\n 'tennessee': true,\n 'texas': true,\n 'utah': true,\n 'vermont': true,\n 'virginia': true,\n 'washington': true,\n 'west-virginia': true,\n 'wisconsin': true,\n 'wyoming': true,\n 'puerto-rico': true,\n};\n\nexport function isValidStateNameForUrl(s: any): s is StateUrls\n{\n return (typeof s === 'string' && s in ValidStateNamesForUrl);\n}\n\n// StateCodes in state name alphabetically order\nexport const StateCodesOrdered: string[] = [\n \"AL\",\n \"AK\",\n \"AZ\",\n \"AR\",\n \"CA\",\n \"CO\",\n \"CT\",\n \"DE\",\n \"DC\",\n \"FL\",\n \"GA\",\n \"HI\",\n \"ID\",\n \"IL\",\n \"IN\",\n \"IA\",\n \"KS\",\n \"KY\",\n \"LA\",\n \"ME\",\n \"MD\",\n \"MA\",\n \"MI\",\n \"MN\",\n \"MS\",\n \"MO\",\n \"MT\",\n \"NE\",\n \"NV\",\n \"NH\",\n \"NJ\",\n \"NM\",\n \"NY\",\n \"NC\",\n \"ND\",\n \"OH\",\n \"OK\",\n \"OR\",\n \"PA\",\n \"RI\",\n \"SC\",\n \"SD\",\n \"TN\",\n \"TX\",\n \"UT\",\n \"VT\",\n \"VA\",\n \"WA\",\n \"WV\",\n \"WI\",\n \"WY\",\n \"PR\",\n];\n\nexport const StateNameMap : {[key: string] : string} = {\n \"AL\": \"Alabama\",\n \"AK\": \"Alaska\",\n \"AZ\": \"Arizona\",\n \"AR\": \"Arkansas\",\n \"CA\": \"California\",\n \"CO\": \"Colorado\",\n \"CT\": \"Connecticut\",\n \"DE\": \"Delaware\",\n \"FL\": \"Florida\",\n \"GA\": \"Georgia\",\n \"HI\": \"Hawaii\",\n \"ID\": \"Idaho\",\n \"IL\": \"Illinois\",\n \"IN\": \"Indiana\",\n \"IA\": \"Iowa\",\n \"KS\": \"Kansas\",\n \"KY\": \"Kentucky\",\n \"LA\": \"Louisiana\",\n \"ME\": \"Maine\",\n \"MD\": \"Maryland\",\n \"MA\": \"Massachusetts\",\n \"MI\": \"Michigan\",\n \"MN\": \"Minnesota\",\n \"MS\": \"Mississippi\",\n \"MO\": \"Missouri\",\n \"MT\": \"Montana\",\n \"NE\": \"Nebraska\",\n \"NV\": \"Nevada\",\n \"NH\": \"New Hampshire\",\n \"NJ\": \"New Jersey\",\n \"NM\": \"New Mexico\",\n \"NY\": \"New York\",\n \"NC\": \"North Carolina\",\n \"ND\": \"North Dakota\",\n \"OH\": \"Ohio\",\n \"OK\": \"Oklahoma\",\n \"OR\": \"Oregon\",\n \"PA\": \"Pennsylvania\",\n \"RI\": \"Rhode Island\",\n \"SC\": \"South Carolina\",\n \"SD\": \"South Dakota\",\n \"TN\": \"Tennessee\",\n \"TX\": \"Texas\",\n \"UT\": \"Utah\",\n \"VT\": \"Vermont\",\n \"VA\": \"Virginia\",\n \"WA\": \"Washington\",\n \"WV\": \"West Virginia\",\n \"WI\": \"Wisconsin\",\n \"WY\": \"Wyoming\",\n \"DC\": \"District of Columbia\",\n \"PR\": \"Puerto Rico\",\n};\n","import * as G from './groups';\n\n// For use in UI. Keys are used in JSON.\nexport interface DatasetField\n{\n shortCaption: string, // Typically 2-4 letters\n longCaption: string, // Can be longer descriptive phrase, especially for combinations\n order?: number, // For ordering fields in UI\n isCombo?: boolean, // Built-in, for census combos\n colorBy?: boolean, // For extended datasets, display in UI\n sumOf?: string[], // Only for import processing\n key?: string, // Only for import processing, reset field key away from import data\n}\nexport function sortFields(f1: DatasetField, f2: DatasetField): number\n{\n return (f1.order || 0) - (f2.order || 0);\n}\n\nexport function formColorBy(datasetid: string, field: string): string\n{\n return `${datasetid}:${field}`\n}\n\nexport function parseColorBy(colorby: string): { datasetid: string, field: string }\n{\n if (colorby)\n {\n let a = colorby.split(':');\n if (a?.length == 2)\n return { datasetid: a[0], field: a[1] };\n }\n return { datasetid: '', field: '' };\n}\n\nexport function isColorBy(colorby: string): boolean\n{\n let {datasetid, field} = parseColorBy(colorby);\n return !!datasetid && !!field;\n}\n\n// For Partisan fields, expect keys of 'D', 'R' and 'Tot'\n// For Demographic Fields, expect keys of 'Tot', 'Wh', 'Bl', 'His', 'AsnPI', 'Nat', 'Oth',\n// 'Asn', 'Pac', 'OthAl', 'Mix', 'BlC', 'NatC', 'AsnC', 'PacC', \nexport type DatasetFields = { [key: string]: DatasetField };\n\nexport interface DatasetColor {\n shortCaption: string,\n longCaption: string,\n expr: string,\n colors: string,\n stops: string,\n };\nexport type DatasetColors = DatasetColor[];\n\nexport interface DatasetFormat {\n shortCaption: string,\n longCaption: string,\n expr: string,\n numberFormat?: string, // (locale|integer|general|currency).precision\n };\nexport type DatasetFormats = DatasetFormat[];\n\nexport interface DatasetMeta\n{\n type: string, // demographic | election | pvi | other\n year: number, // 4 digit year\n title: string, // title displayed in UI\n builtin?: string, // builtin key for builtin datasets\n description?: string, // longer description\n office?: string, // pres | comp | sc | sen | con | tre | sos | ltgov | gov | ag and more\n subtype?: string, // always general?\n votingAge?: boolean, // true => VAP or CVAP; false => Total population (from Census or ACS or Adjusted)\n nhAlone?: boolean, // Non-Hispanic Alone demographic variant\n privateKey?: string, // Old-style semi-private datasets\n restrict?: { [key: string]: boolean }, // export, display, duplicate (true => function is not allowed)\n members?: { [key: number]: string }, // For composites, specifies \n fields?: DatasetFields,\n colors?: DatasetColors, // Optional colorby expressions\n formats?: DatasetFormats, // Optional format expressions\n displayPercent?: boolean, // True if details should auto include percent\n hideHeading?: boolean, // True if details should hide heading row\n}\n\nexport type DatasetsMeta = { [dataset: string]: DatasetMeta };\n\n// Database Record\nexport interface Dataset\n{\n id: string,\n name?: string,\n description?: string,\n createdBy?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n expunged?: boolean,\n expungeDate?: string,\n published?: string,\n official?: boolean,\n builtin?: string,\n state?: string,\n datasource?: string,\n dotmap?: boolean,\n blobid?: string,\n dataid?: string,\n meta?: DatasetsMeta,\n groups?: G.GroupMapIndex,\n labels?: string[],\n labelupdate?: { [name: string]: boolean|null }, // just for update purposes, not stored\n}\n\nexport function datasetRestrict(ds: Dataset): { [key: string]: boolean }\n{\n if (ds && ds.id && ds.meta && ds.meta[ds.id] && ds.meta[ds.id].restrict)\n return ds.meta[ds.id].restrict;\n return null;\n}\n\n// Index of database records\nexport type DatasetIndex = { [id: string]: Dataset };\n","// Type for single comment\nexport interface Comment\n{\n userid: string;\n text: string;\n date: string;\n recommend: number;\n}\n\n// Comment record associated with a map\nexport interface CommentList\n{\n id?: string;\n [commentid: string]: Comment | string; // Really just Comment but make TypeScript happy\n}\n\n// Supported like kinds\nexport type LikeKind = 'like' | 'love' | 'wow' | 'angry' | 'funny';\n\n// Like record for an individual like\nexport interface Like\n{\n date: string;\n kind: LikeKind;\n}\n\n// Record for likes associated with a map\nexport interface LikeList\n{\n id?: string;\n [userid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Record for likes an individual user has performed\nexport interface UserLikes\n{\n id?: string;\n [aid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Type of redistricting plan (Note: 'upper' is used when there is only 1 legislative map or body)\n// congress, upper, lower and other => the plan is for entire state\n// county and city => plan is for a single county or city within a state\nexport type PlanType = 'congress' | 'upper' | 'lower' | 'county' | 'city' | 'coi' | 'other';\nexport type PlanTypeOrEmpty = PlanType | '';\n\n// Once we attempt to contact, they've optedin or optedout (both mean email is valid and not blocked, even if not \"validated\")\n// implicitoptedin means we contacted them successfully and they didn't optout, but also did not explicitly optin\n// invalidemail means either ill-formed, not valid domain or does not exist.\n// blockedemail means email addr is probably valid, but blocked for some reason (and implies optedout)\n// blockedoptedin means they optedin at some point, but then email got blocked (so its possibly it would get unblocked and they're still optedin)\nexport type ContactState = 'notcontacted' | 'optedin' | 'optedout' | 'implicitoptedin' | 'invalidemail' | 'blockedemail' | 'blockedoptedin';\n","export interface Group\n{\n id: string,\n name: string,\n description: string,\n}\n\nexport const GROUP_OWNER = 1;\nexport const GROUP_VERIFIED = 2;\nexport const GROUP_SEEN = 4;\nexport const GROUP_REMOVED = 8;\nexport const GROUP_BLOCKED = 16;\nexport const GROUP_ADMIN = 32;\n\nexport function hideGroup(flags: number): boolean\n{\n return (flags & (GROUP_REMOVED|GROUP_BLOCKED)) != 0;\n}\n\nexport function adminGroup(flags: number): boolean\n{\n return (flags & (GROUP_ADMIN|GROUP_OWNER)) != 0;\n}\n\nexport interface GroupUser\n{\n id: string,\n uid: string,\n flags: number,\n}\n\nexport interface GroupMap\n{\n id: string, // group id\n sid: string, // map (session) id\n permission: number, // permissions (read or readwrite)\n}\n\nexport type GroupUserIndex = { [groupid: string]: number }; // GroupUser flags\nexport type GroupMapIndex = { [groupid: string]: number }; // GroupMap permission\nexport type GroupIndex = { [groupid: string]: Group };\n","import { Util, G } from '@dra2020/baseclient';\n\nexport interface Landmark\n{\n id: string,\n name: string,\n description: string,\n coord: [number, number],\n}\n\nexport type Landmarks = { [id: string]: Landmark };\n\nexport function landmarksToCollection(landmarks: Landmarks): G.GeoFeatureCollection\n{\n if (landmarks == null) return null;\n\n let col: G.GeoFeatureCollection = { type: 'FeatureCollection', features: [] };\n Object.values(landmarks).forEach(l => {\n let f: G.GeoFeature = {\n type: 'Feature',\n properties: {\n id: l.id,\n name: l.name,\n description: l.description,\n },\n geometry: {\n type: 'Point',\n coordinates: l.coord,\n },\n };\n col.features.push(f);\n });\n return col;\n}\n\nexport function collectionToLandmarks(col: G.GeoFeatureCollection): Landmarks\n{\n let landmarks: Landmarks = {};\n if (col && col.features) col.features.forEach((f: G.GeoFeature) => {\n if (f.geometry.type === 'Point')\n {\n let c: any = f.geometry.coordinates;\n if (Array.isArray(c) && typeof c[0] === 'number' && typeof c[1] === 'number')\n {\n let landmark: Landmark = {\n id: Util.createGuid(),\n name: G.flexName(f),\n description: f.properties.description || '',\n coord: [c[0], c[1]],\n };\n landmarks[landmark.id] = landmark;\n }\n }\n });\n return landmarks;\n}\n","import * as G from './groups';\n\nexport interface UserLayerMeta\n{\n createdBy: string,\n id: string,\n name?: string,\n description?: string,\n state?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean,\n groups?: G.GroupMapIndex,\n labels?: string[],\n labelupdate?: { [name: string]: boolean|null }, // just for update purposes, not stored\n}\n\nexport type UserLayerMetaIndex = {\n [id: string]: UserLayerMeta\n}\n\nexport type LayerType = 'layer' | 'map' | 'restriction' | 'precincts';\n\nexport interface UserLayerRef\n{\n id: string,\n name?: string,\n layerType?: LayerType,\n geojsonName?: string,\n blockmapName?: string,\n cacheState?: string,\n cacheDatasource?: string,\n cachePlanType?: string,\n fill: boolean,\n stroke: boolean,\n label: boolean,\n landmark: boolean,\n strokeColor: string,\n strokeOpacity: number,\n fillColor: string,\n fillOpacity: number,\n lineWidth?: number,\n}\n\nexport type UserLayerRefIndex = {\n [id: string]: UserLayerRef\n}\n","import { Util } from \"@dra2020/baseclient\";\nimport { PlanType } from './dra-types';\n\n// **** Dataset Codes Explained ****\n// Elections:\n// EYYGCC, where YY = year and CC = contest [PR, SE, GO, AG]\n// C16GCO = composite (spans number of years)\n// PYYGPR = PVI, where YY is year [16, 20]\n// Census/ACS:\n// DYYF = Census/ACS Total Pop, where YY = year [10, 18, 19, 20]\n// DYYT = Census/ACS VAP/CVAP, where YY = year [10, 18, 19, 20]\n// D20FA = Census 2020 Total Prisoner-Adjusted Pop\n// D20TNH = Census 2020 VAP with Non-Hispanic Alone Race fields\n\n// **** Dataset Fields Explained ****\n// Elections:\n// D: Democratic\n// R: Republican\n// Tot (Total R + D + Other)\n// Census/ACS/VAP/CVAP:\n// Tot: total\n// Wh: White alone, not Hispanic\n// His: All Hispanics\n// Bl: Black alone, not Hispanic; BlC: Black combo, incl Hispanic\n// Asn: Asian alone, not Hispanic; AsnC: Asian combo, incl Hispanic\n// Nat: Native alone, not Hispanic; NatC: Native combo, incl Hispanic\n// Pac (also PI): Pacific alone, not Hispanic; PacC: Pacific combo, incl Hispanic\n// OthAl: Other alone, not Hispanic; Oth: Other + Two or more races, incl Hispanic\n// Mix: Two or more races, not Hispanic\n// AsnPI: Asian + Pacific, not Hispanic\n\nimport { DatasetMeta, DatasetsMeta } from './datasets';\n\n\nexport const AGG_DEMOGRAPHIC = 'demographic';\nexport const AGG_DEMOGRAPHIC18 = 'demographic18';\nexport const AGG_pres2008 = 'pres2008';\nexport const AGG_pres2016 = 'pres2016';\nexport const AGG_pvi = 'pvi';\n\nexport const DATASET_TYPE_DEMOGRAPHIC = 'demographic';\nexport const DATASET_TYPE_ELECTION = 'election';\nexport const DATASET_TYPE_PVI = 'pvi';\nexport const DATASET_TYPE_OTHER = 'other';\n\nexport const DS_PVI2020 = 'P20GPR';\nexport const PVI2020_Title = 'PVI 2016/2020';\nexport const DS_PVI2016 = 'P16GPR';\nexport const DS_PRES2020 = 'E20GPR';\nexport const DS_PRES2016 = 'E16GPR';\n\nexport interface StateMeta\n{\n state: string,\n pop: number,\n reps: number,\n}\n\nexport interface StatesMetaIndex\n{\n [key: string]: StateMeta; // key is shortstate (2 letter) state name\n}\n\nexport interface StatesMeta\n{\n [key: string]: StatesMetaIndex; // key is one of the datasource strings\n}\n\nexport interface PackedFieldsIndex\n{\n [field: string]: number; // offset into PackedFields\n}\n\nexport interface PackedMetaIndex\n{\n length: number;\n fields: { [dataset: string]: PackedFieldsIndex };\n}\n\nexport type GroupPackedMetaIndex = { [did: string]: PackedMetaIndex };\n\nexport interface PrimaryDatasetKeys\n{\n SHAPES?: string,\n CENSUS: string,\n VAP: string,\n ELECTION: string,\n}\n\nexport type PackedFieldsArray = Float64Array;\nexport interface PackedFields {\n dsGroup: GroupPackedMetaIndex,\n data: { [did: string]: PackedFieldsArray }\n}\n\n// This integregates the information associated with a specific state and datasource as\n// well as user selections around which datasets to view. Used to propagate through UI.\nexport interface DatasetContext\n{\n dsGroup: GroupPackedMetaIndex;\n dsMeta: DatasetsMeta;\n primeDDS: string; // Demographic (Census)\n primeVDS: string; // VAP/CVAP\n primeEDS: string; // Election\n //datasetMetaDDS: DatasetMeta;\n //datasetMetaVDS: DatasetMeta;\n //datasetMetaEDS: DatasetMeta;\n}\n\n// Dataset Lists\nexport type DSListItem = {\n key: string,\n title: string,\n order: number,\n};\n\nexport type DSList = DSListItem[];\n\nexport type DSLists = {\n census: DSList,\n vap: DSList,\n election: DSList,\n};\n\nexport type PlanTypePlus = PlanType | '';\n\nexport function fGet(f: any, p: string): any\n{\n return fGetW(f, null, p);\n}\n\n// Note f is a direct GeoJSON feature\n// Called when building packedFields; after that f.properties.datasets is deleted, so then it's only useful for non-dataset properties.\nfunction fGetW(f: any, datasetKey: string, p: string): any\n{\n // pBackup helps support 2016_BG, which don't have the 'C' fields\n const pBackup: string = (p === 'BlC') ? 'Bl' : (p === 'AsnC' || p === 'PacC') ? 'AsnPI' : (p === 'NatC') ? 'Nat' : null;\n \n // Direct property?\n if (f.properties && f.properties[p] !== undefined)\n return f.properties[p];\n else if (datasetKey && f.properties && f.properties.datasets && f.properties.datasets[datasetKey])\n {\n if (f.properties.datasets[datasetKey][p] != null)\n return f.properties.datasets[datasetKey][p];\n else if (pBackup && f.properties.datasets[datasetKey][pBackup] != null)\n return f.properties.datasets[datasetKey][pBackup];\n }\n\n return undefined;\n}\n\nexport function sortedFieldList(ds: DatasetMeta): string[]\n{\n let keys = Object.keys(ds.fields);\n let kv = keys.map(k => { return { k, v: ds.fields[k] } }).sort((a: any, b: any) => { return (a.v.order || 0) - (b.v.order || 0) });\n return kv.map(kv => kv.k);\n}\n\nexport function getDatasetField(f: any, did: string, field: string): number\n{\n let pf = retrievePackedFields(f);\n return getPackedField(pf, did, field);\n}\n\nexport function computeMetaIndex(did: string, meta: DatasetsMeta): PackedMetaIndex\n{\n if (meta == null) return null;\n let offset = 1; // first entry is count of aggregates\n let index: PackedMetaIndex = { length: 0, fields: {} };\n Object.keys(meta).forEach((datasetKey: string) => {\n let dataset = meta[datasetKey];\n let fieldsIndex: PackedFieldsIndex = {};\n sortedFieldList(dataset).forEach((field: string) => {\n fieldsIndex[field] = offset++;\n });\n index.fields[datasetKey] = fieldsIndex;\n });\n index.length = offset;\n return index;\n}\n\nexport function computeOnePackedFields(f: any, dsGroup: GroupPackedMetaIndex, index: PackedMetaIndex, did: string, datasetKey: string): PackedFields\n{\n let af = allocPackedFieldsArray(index.length);\n af[0] = 0; // count of number of aggregates\n let fields = index.fields[did];\n Object.keys(fields).forEach((field: string) => {\n let n = fGetW(f, datasetKey, field);\n if (isNaN(n))\n n = 0;\n af[fields[field]] = n;\n });\n\n if (! f.properties.packedFields)\n initPackedFields(f, dsGroup);\n f.properties.packedFields.data[did] = af;\n\n return f.properties.packedFields;\n}\n\nlet nAlloc = 0;\nfunction allocPackedFieldsArray(length: number): PackedFieldsArray\n{\n let ab = new ArrayBuffer(8 * length);\n let af = new Float64Array(ab);\n nAlloc++;\n //if ((nAlloc % 10000) == 0) console.log(`allocPackedFieldsArray: ${nAlloc} allocs`);\n return af;\n}\n\nexport function initPackedFields(f: any, dsGroup: GroupPackedMetaIndex): void\n{\n if (f.properties.packedFields !== undefined) throw 'Packed fields already set';\n\n f.properties.packedFields = { dsGroup, data: {} };\n}\n\nexport function clearPackedFields(f: any): void\n{\n delete f.properties.packedFields;\n}\n\nexport function hasPackedFields(f: any): boolean\n{\n return f.properties.packedFields !== undefined;\n}\n\nexport function setPackedFields(f: any, pf: PackedFields): void\n{\n if (f.properties.packedFields !== undefined) throw 'Packed fields already set';\n f.properties.packedFields = pf;\n}\n\nconst reExtDataset = /^.*\\.ds$/;\nexport function isExtDataset(did: string): boolean\n{\n return did && reExtDataset.test(did);\n}\n\nexport type ExtPackedFields = Uint32Array; // [nblocks][nfields][fields]...\nexport type ExtBlockCardinality = Map<string, number>;\n\nexport function pushExtPackedFields(blocks: string[], pf: PackedFields, did: string, index: PackedMetaIndex, data: ExtPackedFields, card: ExtBlockCardinality): void\n{\n if (!blocks)\n return;\n if (! pf)\n throw('pushExtPackedFields: packed fields should be initialized before push');\n if (card.size != data[0])\n throw('pushExtPackedFields: packed fields and block cardinality do not match');\n if (pf.data[did])\n return; // already pushed\n let nfields = data[1];\n let pfa = allocPackedFieldsArray(nfields+1); // field count\n pfa[0] = 0;\n for (let j = 0; j < nfields; j++) pfa[j] = 0;\n blocks.forEach((blockid: string) => {\n if (! card.has(blockid))\n throw(`pushExtPackedFields: missing blockid ${blockid} in cardinality set`);\n let x = 2 + (nfields * card.get(blockid));\n for (let i = 1; i <= nfields; i++)\n pfa[i] += (data[x++] << 0); // left shift by 0 to force unsigned to be interpreted as signed (used by prisoner-adjusted)\n });\n pf.data[did] = pfa;\n}\n\nexport function featurePushExtPackedFields(f: any, did: string, index: PackedMetaIndex, data: ExtPackedFields, card: ExtBlockCardinality): void\n{\n let blocks = f?.properties?.blocks || (card.has(f.properties.id) ? [ f.properties.id ] : null);\n pushExtPackedFields(blocks, f.properties.packedFields, did, index, data, card);\n}\n\nexport function featurePushedExtPackedFields(f: any, did: string, card: ExtBlockCardinality): boolean\n{\n if (! f) return true;\n if (f.features) return featurePushedExtPackedFields(f.features[0], did, card);\n if (!f?.properties?.blocks && !card.has(f.properties.id))\n return true;\n if (!f.properties.packedFields)\n return true;\n return !!f.properties.packedFields.data[did];\n}\n\nexport function pushedExtPackedFields(pf: PackedFields, datasetids: string[]): boolean\n{\n if (pf && datasetids)\n for (let i = 0; i < datasetids.length; i++)\n if (! pf.data[datasetids[i]])\n return false;\n return !!pf;\n}\n\nexport function retrievePackedFields(f: any): PackedFields\n{\n if (f.properties.packedFields === undefined) throw 'Feature should have pre-computed packed fields';\n return f.properties.packedFields as PackedFields;\n}\n\n// The first entry in the PackedFieldsArray aggregate is the count of items aggregated.\n// Treat a null instance as just a single entry with no aggregates.\nlet abZero = new ArrayBuffer(8);\nlet afZero = new Float64Array(abZero);\nafZero[0] = 0;\nlet pfZero = { dsGroup: {}, data: { ['']: afZero } };\n\nexport function zeroPackedFields(dsGroup: GroupPackedMetaIndex): PackedFields\n{\n if (dsGroup == null) return pfZero;\n let pf: PackedFields = { dsGroup, data: {} };\n Object.keys(dsGroup).forEach(did => {\n let af = allocPackedFieldsArray(dsGroup[did].length);\n for (let i = 0; i < af.length; i++)\n af[i] = 0;\n pf.data[did] = af;\n });\n return pf;\n}\n\nexport function zeroPackedCopy(pf: PackedFields): PackedFields\n{\n if (pf == null) return pfZero;\n let copy: PackedFields = { dsGroup: pf.dsGroup, data: {} };\n Object.keys(pf.data).forEach(did => {\n let cf = allocPackedFieldsArray(pf.data[did].length);\n for (let i = 0; i < cf.length; i++)\n cf[i] = 0;\n copy.data[did] = cf;\n });\n return copy;\n}\n\nexport function packedCopy(pf: PackedFields): PackedFields\n{\n if (pf == null) return null;\n let copy: PackedFields = { dsGroup: pf.dsGroup, data: {} };\n Object.keys(pf.data).forEach(did => {\n let af = pf.data[did];\n let cf = allocPackedFieldsArray(af.length);\n for (let i = 0; i < af.length; i++)\n cf[i] = af[i];\n copy.data[did] = cf;\n });\n return copy;\n}\n\nexport function aggregatePackedFields(agg: PackedFields, pf: PackedFields): PackedFields\n{\n if (agg == null || pf == null) return agg;\n Object.keys(pf.data).forEach(did => {\n let af = agg.data[did];\n let sf = pf.data[did];\n if (sf && (!af || sf.length == af.length))\n {\n if (! af)\n {\n af = allocPackedFieldsArray(sf.length);\n af[0] = 0;\n for (let i = 1; i < sf.length; i++)\n af[i] = sf[i];\n agg.data[did] = af;\n }\n else\n {\n let n = af.length;\n for (let i = 1; i < n; i++)\n af[i] += sf[i];\n }\n af[0]++; // count of aggregates\n }\n });\n return agg;\n}\n\nexport function aggregateCount(agg: PackedFields): number\n{\n // If we have multiple packedfieldarrays, all of them track the aggregate in zero spot.\n // So we just pick the one that happens to be come up first.\n if (!agg) return 0;\n let pfa = Util.nthProperty(agg.data) as PackedFieldsArray;\n return pfa ? pfa[0] : 0;\n}\n\nexport function decrementPackedFields(agg: PackedFields, pf: PackedFields): PackedFields\n{\n if (agg == null || pf == null) return agg;\n Object.keys(agg.data).forEach(did => {\n let af = agg.data[did];\n let sf = pf.data[did];\n if (sf && sf.length == af.length)\n {\n let n = af.length;\n for (let i = 1; i < n; i++)\n af[i] -= sf[i];\n af[0]++; // count of aggregates\n }\n });\n return agg;\n}\n\nexport function diffPackedFields(main: any, parts: any[]): PackedFields\n{\n main = packedCopy(retrievePackedFields(main));\n if (main == null || parts == null || parts.length == 0) return null;\n parts = parts.map(retrievePackedFields);\n parts.forEach((pf: PackedFields) => decrementPackedFields(main, pf));\n return main;\n}\n\nexport function getPackedField(pf: PackedFields, did: string, field: string): number\n{\n if (!pf || !pf.dsGroup || !pf.dsGroup[did] || !pf.data[did]) return 0;\n let fields = pf.dsGroup[did].fields[did];\n return fields ? (fields[field] !== undefined ? pf.data[did][fields[field]] : 0) : 0;\n}\n\nexport function findPackedField(pf: PackedFields, did: string, field: string): number\n{\n let fields = pf.dsGroup[did].fields[did];\n return fields ? (fields[field] !== undefined ? fields[field] : -1) : -1;\n}\n\n// Utility type to simplify code that pulls from same dataset to compute some composite\nexport type FieldGetter = (f: string) => number;\nexport function fieldGetterNotLoaded(f: string): number { return undefined }\n\nexport function ToGetter(agg: PackedFields, dc: DatasetContext, did: string): FieldGetter\n{\n return (field: string) => { return getPackedField(agg, did, field) };\n}\n\nexport function calcShift(agg: PackedFields, dc: DatasetContext, didOld: string, didNew: string): number\n{\n const getterOld = ToGetter(agg, dc, didOld);\n const getterNew = ToGetter(agg, dc, didNew);\n\n // Calc two-party Swing\n const repOld = getterOld('R');\n const demOld = getterOld('D');\n const repNew = getterNew('R');\n const demNew = getterNew('D');\n\n if (repOld === undefined || demOld === undefined || repNew === undefined || demNew === undefined)\n return null;\n\n const totOld = demOld + repOld;\n const totNew = demNew + repNew;\n if (totOld <= 0 || totNew <= 0)\n return null;\n\n const pctDemOld: number = demOld / totOld;\n const pctRepOld: number = repOld / totOld;\n const pctDemNew: number = demNew / totNew;\n const pctRepNew: number = repNew / totNew;\n const shift: number = Math.max(Math.min((pctDemNew - pctDemOld) - (pctRepNew - pctRepOld), 1.0), -1.0);\n return shift;\n}\n\nexport function calcRawPvi(getter: FieldGetter): number\n{\n // ((((sum(d_2016) / (sum(d_2016) + sum(r_2016))) * 100) + ((sum(d_2012) / (sum(d_2012) + sum(r_2012))) * 100)) / 2) - 51.54\n // Fields hard coded\n let total2012 = getter('D12') + getter('R12');\n let total2016 = getter('D16') + getter('R16');\n let pct2012 = total2012 != 0 ? (getter('D12') / total2012) * 100 : 0;\n let pct2016 = total2016 != 0 ? (getter('D16') / total2016) * 100 : 0;\n return (pct2012 + pct2016) / ((total2012 != 0 && total2016 != 0) ? 2 : 1);\n}\n\nexport function pviStr(getter: FieldGetter): string\n{\n const pviRaw: number = calcRawPvi(getter);\n const pvi = Util.precisionRound(pviRaw != 0 ? pviRaw - 51.54 : 0, 2);\n return pvi >= 0 ? 'D+' + pvi : 'R+' + (-pvi);\n}\n\nexport function calcRaw2020Pvi(getter16: FieldGetter, getter20: FieldGetter): number\n{\n let total2016 = getter16('D') + getter16('R');\n let total2020 = getter20('D') + getter20('R');\n let pct2016 = total2016 != 0 ? (getter16('D') / total2016) * 100 : 0;\n let pct2020 = total2020 != 0 ? (getter20('D') / total2020) * 100 : 0;\n return (pct2020 + pct2016) / ((total2020 != 0 && total2016 != 0) ? 2 : 1);\n}\n\nexport function pvi2020Str(getter16: FieldGetter, getter20: FieldGetter): string\n{\n const pviRaw: number = calcRaw2020Pvi(getter16, getter20);\n const pvi = Util.precisionRound(pviRaw != 0 ? pviRaw - 51.54 : 0, 2);\n return pvi >= 0 ? 'D+' + pvi : 'R+' + (-pvi);\n}\n","export interface Precincts\n{\n id?: string,\n state?: string,\n datasource?: string,\n name?: string,\n description?: string,\n labels?: string[],\n createdBy?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean,\n supersets?: string[],\n subsets?: string[],\n conflicts?: string[],\n}\n\nexport type PrecinctsIndex = { [id: string]: Precincts };\n","export function reverseBlockMapping(bm: any): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = bm[blockid];\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n Object.values(rev).forEach((a: string[]) => a.sort());\n return rev;\n}\n\nexport function reverseSubMapping(bm: any, n: number): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nexport function reverseBlockgroupMapping(bm: any): any\n{\n return reverseSubMapping(bm, 12);\n}\n\nexport function reverseTractMapping(bm: any): any\n{\n return reverseSubMapping(bm, 11);\n}\n","export let Schemas: any = {\n 'users':\n {\n FileOptions: { version: 5, name: 'users', map: false },\n Schema: {\n id: 'S',\n name: 'S',\n email: 'S',\n hashPW: 'S',\n verified: 'BOOL',\n admin: 'BOOL',\n roles: 'M',\n verifyGUID: 'S',\n resetGUID: 'S',\n resetTime: 'S',\n lastActive: 'S',\n modifyTime: 'S',\n resetCount: 'N',\n accessed: 'M',\n likeID: 'S',\n visitData: 'M',\n groups: 'M',\n cache: 'N',\n cached: 'N',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { email: 'HASH' },\n { verifyGUID: 'HASH' },\n { resetGUID: 'HASH' },\n ],\n },\n 'state':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n flags: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n groups: 'M',\n xid: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { xid: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'expungestate':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n },\n KeySchema: { id: 'HASH' },\n },\n 'splitblock':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { chunkKey: 'HASH', id: 'RANGE' },\n ],\n },\n 'blockset':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n chunkList: 'L',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { state: 'HASH' },\n ],\n },\n 'blockchunk':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n recompute: 'BOOL',\n splits: 'L',\n },\n },\n 'access':\n {\n FileOptions: { map: true, noobject: true },\n Schema: {\n id: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'visitor':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastModified: 'S',\n /* ... others */\n },\n KeySchema: { id: 'HASH' }\n },\n 'session':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastActive: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'userlikes':\n {},\n 'likes':\n {},\n 'comments':\n {},\n 'stats':\n {},\n 'livestats':\n {},\n 'workqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { priority: 'HASH' },\n ],\n },\n 'failqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n failType: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'layer':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n state: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'dataset':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n state: 'S',\n datasource: 'S',\n groups: 'M',\n // meta: { dataset metadata structure },\n // dotmap: 'BOOL',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'groups':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'groupsusers':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n uid: 'S',\n flags: 'N',\n },\n KeySchema: { id: 'HASH', uid: 'RANGE' },\n },\n 'groupsmaps':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n sid: 'S',\n permission: 'N',\n },\n KeySchema: { id: 'HASH', sid: 'RANGE' },\n },\n 'groupsdatasets':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n sid: 'S',\n permission: 'N',\n },\n KeySchema: { id: 'HASH', sid: 'RANGE' },\n },\n 'notifications':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n createdBy: 'S',\n message: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n },\n 'operations':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n createdBy: 'S',\n createTime: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n },\n 'cull':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n key: 'S',\n bucket: 'S',\n expires: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'precincts':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n state: 'S',\n datasource: 'S',\n name: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { id: 'HASH' },\n { published: 'HASH' },\n ], // sparse\n },\n 'places':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n state: 'S',\n datasource: 'S',\n name: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { id: 'HASH' },\n { published: 'HASH' },\n ], // sparse\n },\n}\n","import * as geojson from 'geojson';\nimport { Util, Poly, G } from '@dra2020/baseclient';\nimport * as DT from './vfeature';\nimport * as PF from './packedfields';\n\n// Given the topology for a precinct and a split, compute the feature data for the virtual feature.\n//\n\nexport function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo, mbm: G.MultiBlockMapping): G.GeoFeature\n{\n let f = Poly.topoMerge(topoPrecinct, split.blocks);\n if (!f) return f;\n\n let contiguity = new Util.IndexedArray();\n let block_contiguity = new Util.IndexedArray();\n split.blocks.forEach(blockid => {\n let b = topoPrecinct.objects[blockid];\n if (b.properties.datasets)\n {\n if (! f.properties.datasets)\n f.properties.datasets = {};\n Util.deepAccum(f.properties.datasets, b.properties.datasets);\n }\n if (b.properties.packedFields)\n {\n if (! f.properties.packedFields)\n f.properties.packedFields = PF.packedCopy(b.properties.packedFields);\n else\n PF.aggregatePackedFields(f.properties.packedFields, b.properties.packedFields);\n }\n if (b.properties.contiguity)\n {\n b.properties.contiguity.forEach((id: string) => {\n if (id === 'OUT_OF_STATE')\n contiguity.set(id);\n else\n mbm.multimap(id).forEach(geoid => contiguity.set(geoid));\n });\n b.properties.contiguity.forEach((id: string) => {\n block_contiguity.set(id);\n });\n }\n });\n split.blocks.forEach(blockid => block_contiguity.clear(blockid));\n f.properties.id = DT.splitToVgeoid(split);\n f.properties.name = `Part of ${split.geoid} from ${split.blocks.length} blocks`;\n f.properties.contiguity = contiguity.asArray();\n f.properties.block_contiguity = block_contiguity.asArray();\n f.properties.blocks = split.blocks;\n f.properties.mbmstamp = mbm.stamp;\n return f;\n}\n","import * as DT from './dra-types';\n\nexport interface StateYearInfo\n{\n population: number,\n congress: {nDistricts: number}, \n upper: {nDistricts: number}, \n lower?: {nDistricts: number}, \n}\n\nexport interface StateInfo\n{\n '2010_VD': StateYearInfo,\n '2020_VD': StateYearInfo,\n}\n\nexport const StatePlanInfoMap: {[key: string]: StateInfo} = {\n \"AL\": {\"2010_VD\": {population: 4779736, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}, \"2020_VD\": { population: 0, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}},\n \"AK\": {\"2010_VD\": {population: 710231, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}},\n \"AZ\": {\"2010_VD\": {population: 6392017, congress: {nDistricts: 9}, upper: {nDistricts: 30}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 30}}},\n \"AR\": {\"2010_VD\": {population: 2915918, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}},\n \"CA\": {\"2010_VD\": {population: 37253956, congress: {nDistricts: 53}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}, \"2020_VD\": {population: 6, congress: {nDistricts: 52}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}},\n \"CO\": {\"2010_VD\": {population: 5029196, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}},\n \"CT\": {\"2010_VD\": {population: 3574097, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}},\n \"DE\": {\"2010_VD\": {population: 897934, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}},\n \"FL\": {\"2010_VD\": {population: 18801310, congress: {nDistricts: 27}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 28}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}},\n \"GA\": {\"2010_VD\": {population: 9687653, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}},\n \"HI\": {\"2010_VD\": {population: 1360301, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}},\n \"ID\": {\"2010_VD\": {population: 1567582, congress: {nDistricts: 2}, upper: {nDistricts: 35}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}}},\n \"IL\": {\"2010_VD\": {population: 12830632, congress: {nDistricts: 18}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}},\n \"IN\": {\"2010_VD\": {population: 6483802, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"IA\": {\"2010_VD\": {population: 3046355, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"KS\": {\"2010_VD\": {population: 2853118, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}},\n \"KY\": {\"2010_VD\": {population: 4339367, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}},\n \"LA\": {\"2010_VD\": {population: 4533372, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}},\n \"ME\": {\"2010_VD\": {population: 1328361, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}},\n \"MD\": {\"2010_VD\": {population: 5773552, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}},\n \"MA\": {\"2010_VD\": {population: 6547629, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}},\n \"MI\": {\"2010_VD\": {population: 9883640, congress: {nDistricts: 14}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}, \"2020_VD\": {population: 6, congress: {nDistricts: 13}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}},\n \"MN\": {\"2010_VD\": {population: 5303925, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}},\n \"MS\": {\"2010_VD\": {population: 2967297, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}},\n \"MO\": {\"2010_VD\": {population: 5988927, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}},\n \"MT\": {\"2010_VD\": {population: 989415, congress: {nDistricts: 1}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"NE\": {\"2010_VD\": {population: 1826341, congress: {nDistricts: 3}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 49}}},\n \"NV\": {\"2010_VD\": {population: 2700551, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}},\n \"NH\": {\"2010_VD\": {population: 1316470, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 161}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 164}}},\n \"NJ\": {\"2010_VD\": {population: 8791894, congress: {nDistricts: 12}, upper: {nDistricts: 40}}, \"2020_VD\": {population: 6, congress: {nDistricts: 12}, upper: {nDistricts: 40}}},\n \"NM\": {\"2010_VD\": {population: 2059179, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}},\n \"NY\": {\"2010_VD\": {population: 19378102, congress: {nDistricts: 27}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 26}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}},\n \"NC\": {\"2010_VD\": {population: 9535483, congress: {nDistricts: 13}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}},\n \"ND\": {\"2010_VD\": {population: 672591, congress: {nDistricts: 1}, upper: {nDistricts: 47}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 47}, lower: {nDistricts: 49}}},\n \"OH\": {\"2010_VD\": {population: 11536504, congress: {nDistricts: 16}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 15}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"OK\": {\"2010_VD\": {population: 3751351, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}},\n \"OR\": {\"2010_VD\": {population: 3831074, congress: {nDistricts: 5}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}},\n \"PA\": {\"2010_VD\": {population: 12702379, congress: {nDistricts: 18}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}},\n \"RI\": {\"2010_VD\": {population: 1052567, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}},\n \"SC\": {\"2010_VD\": {population: 4625364, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}, \"2020_VD\": {population: 6, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}},\n \"SD\": {\"2010_VD\": {population: 814180, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}},\n \"TN\": {\"2010_VD\": {population: 6346105, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"TX\": {\"2010_VD\": {population: 25145561, congress: {nDistricts: 36}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 38}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}},\n \"UT\": {\"2010_VD\": {population: 2763885, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}},\n \"VT\": {\"2010_VD\": {population: 625741, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}},\n \"VA\": {\"2010_VD\": {population: 8001024, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}},\n \"WA\": {\"2010_VD\": {population: 6724540, congress: {nDistricts: 10}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 10}, upper: {nDistricts: 49}}},\n \"WV\": {\"2010_VD\": {population: 1852994, congress: {nDistricts: 3}, upper: {nDistricts: 17}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 17}, lower: {nDistricts: 100}}},\n \"WI\": {\"2010_VD\": {population: 5686986, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"WY\": {\"2010_VD\": {population: 563626, congress: {nDistricts: 1}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 31}, lower: {nDistricts: 62}}},\n \"DC\": {\"2010_VD\": {population: 601723, congress: {nDistricts: 1}, upper: {nDistricts: 8}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 8}}},\n \"PR\": {\"2010_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}},\n};\n\nexport function hasPlanType(stateCode: string, planType: DT.PlanType, is2020?: boolean): boolean\n{\n // handle unicameral states (hence no lower house districts)\n if ((stateCode === 'NE' || stateCode === 'DC') && planType === 'lower')\n return false;\n\n // handle states with only 1 congressional district (hence no plan)\n if (planType === 'congress' &&\n (stateCode === 'AK' || stateCode === 'DE' || stateCode === 'ND' || stateCode === 'SD' || stateCode === 'VT' || stateCode === 'WY' || stateCode === 'DC' ||\n (stateCode === 'MT' && !is2020)))\n {\n return false;\n }\n\n if (planType === 'county' || planType === 'city')\n return false;\n\n return true;\n}\n\nexport function hasOneLegislativePlanBothHouses(stateCode: string): boolean\n{\n return stateCode === 'AZ' || stateCode === 'ID' || stateCode === 'NJ' || stateCode === 'WA';\n}\n\nexport function getPlanDistrictCount(stateCode: string, planType: DT.PlanType, datasource: string): number\n{\n if (planType === 'coi')\n return 1;\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD') || (planType !== 'congress' && planType !== 'upper' && planType !== 'lower'))\n return 0;\n \n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo && stateYearInfo[planType] ? stateYearInfo[planType]['nDistricts'] : 0;\n}\n\n// TODO: This is not currently used (3/2/21). 2020_VD population numbers are not set; update them when apportionment happens \nexport function getStateYearTotalPop(stateCode: string, datasource: string): number\n{\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD'))\n return 0;\n\n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo ? stateYearInfo['population'] : 0;\n}\n\nexport function inferPlanType(stateCode: string, datasource: string, nDistricts: number, flex?: boolean): DT.PlanType\n{\n // Intended for datasource === '2020_VD'\n const congressCount: number = getPlanDistrictCount(stateCode, 'congress', datasource);\n const upperCount: number = getPlanDistrictCount(stateCode, 'upper', datasource);\n const lowerCount: number = getPlanDistrictCount(stateCode, 'lower', datasource);\n return (\n ((flex && nDistricts <= congressCount + 2 && nDistricts >= congressCount - 3) || nDistricts == congressCount) ? 'congress' :\n (nDistricts == upperCount) ? 'upper' :\n (nDistricts == lowerCount) ? 'lower' :\n 'other');\n}\n","// In constrast to logging, the stats manager is responsible for tracking live server status.\n// The results are stored in a compact database record which can be easily queried for current\n// status. Each server instance maintains its own field in the overall \"values\" record in the\n// stats database. The reporting tool aggregates all instances to report overall server activity.\n//\n// There are basically three kinds of values:\n// Sum - we want to sum the value across all server instances (e.g. number of connnected clients)\n// Avg - we just take average across all server instances (e.g. memory heap size)\n// Rate - we want to track the rate of some activity over some time period\n//\n\nexport type ValType = number;\nexport const ValTypeSum = 0;\nexport const ValTypeAvg = 1;\nexport const ValTypeRate = 2;\n\nconst ExpiryAge = 1000 * 60 * 60 * 24; // throw away instance record after this time period\n\nexport function statExpiryTime(): string\n{\n let time = new Date();\n time.setTime(time.getTime() + ExpiryAge);\n return time.toJSON();\n}\n\nexport interface StatRecord\n{\n id: string;\n production: boolean;\n expires: string;\n time: string;\n index: StatEntryIndex;\n}\n\nexport type StatEntry = StatValue | StatRate;\n\nexport type StatEntryIndex = { [name: string]: StatEntry };\n\nexport interface StatValue\n{\n valType?: ValType;\n cur?: number;\n min?: number;\n max?: number;\n tot?: number;\n cnt?: number;\n}\n\nexport interface StatRate\n{\n valType?: ValType;\n thisMin?: number;\n lastMin?: number;\n thisHour?: number;\n lastHour?: number;\n thisDay?: number;\n lastDay?: number;\n}\n\n// Aggregate running value. This applies both in memory (logging multiple times before\n// saving to database) as well as aggregating into an instance structure in the DB.\n\nexport function statValueRecord(sv: StatValue, cur: number, valType: ValType): StatValue\n{\n if (sv === undefined) sv = {};\n if (sv.min === undefined || cur < sv.min)\n sv.min = cur;\n if (sv.max === undefined || cur > sv.max)\n sv.max = cur;\n sv.cur = cur;\n sv.valType = valType;\n return sv;\n}\n\nexport function statRateIncr(sr: StatRate, incr: number = 1): StatRate\n{\n if (sr == null) sr = {};\n sr.valType = ValTypeRate;\n sr.thisMin = sr.thisMin === undefined ? incr : sr.thisMin+incr;\n sr.thisHour = sr.thisHour === undefined ? incr : sr.thisHour+incr;\n sr.thisDay = sr.thisDay === undefined ? incr : sr.thisDay+incr;\n return sr;\n}\n\nexport const OneMinute = 1000 * 60;\nexport const OneHour = OneMinute * 60;\nexport const OneDay = OneHour * 24;\n\nexport function statRateRollover(sr: StatRate, period: number): void\n{\n if ((period % OneMinute) == 0)\n {\n sr.lastMin = sr.thisMin;\n sr.thisMin = 0;\n }\n if ((period % OneHour) == 0)\n {\n sr.lastHour = sr.thisHour;\n sr.thisHour = 0;\n }\n if ((period % OneDay) == 0)\n {\n sr.lastDay = sr.thisDay;\n sr.thisDay = 0;\n }\n}\n\nexport function statEntryIndexMerge(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n\n // We just discard and replace old rate information\n Object.keys(accum).forEach((p: string) => { if (accum[p].valType == ValTypeRate) delete accum[p] });\n\n // But merge in all the other values\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = se;\n else\n {\n let sv = se as StatValue;\n accum[p] = statValueRecord(se as StatValue, sv.cur, sv.valType);\n }\n });\n return accum;\n}\n\nexport function statEntryIndexRollover(si: StatEntryIndex, period: number): void\n{\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n statRateRollover(se as StatRate, period);\n });\n}\n\nexport function statRecordMerge(accum: StatRecord, si: StatRecord): StatRecord\n{\n if (accum == null)\n accum = { id: si.id, production: si.production, time: si.time, expires: si.expires, index: {} };\n accum.expires = si.expires;\n accum.time = si.time;\n statEntryIndexMerge(accum.index, si.index);\n return accum;\n}\n\n// Accumulate a set of values together (e.g. from multiple running instances)\n// for reporting current state.\n//\n\nexport function statValueAccum(accum: StatValue, sv: StatValue): StatEntry\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sv.valType;\n }\n if (accum.min === undefined || sv.min < accum.min)\n accum.min = sv.min;\n if (accum.max === undefined || sv.max > accum.max)\n accum.max = sv.max;\n if (accum.valType === undefined)\n accum.valType = sv.valType;\n if (accum.valType == ValTypeSum)\n accum.cur = (accum.cur === undefined ? sv.cur : accum.cur+sv.cur);\n else if (accum.valType == ValTypeAvg)\n {\n accum.tot = (accum.tot === undefined ? 0 : accum.tot) + sv.cur;\n accum.cnt = (accum.cnt === undefined ? 0 : accum.cnt) + 1;\n accum.cur = accum.tot / accum.cnt;\n }\n return accum;\n}\n\nexport function statRateAccum(accum: StatRate, sr: StatRate): StatRate\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sr.valType;\n }\n accum.thisMin = accum.thisMin === undefined ? sr.thisMin : (accum.thisMin + (sr.thisMin === undefined ? 0 : sr.thisMin));\n accum.lastMin = accum.lastMin === undefined ? sr.lastMin : (accum.lastMin + (sr.lastMin === undefined ? 0 : sr.lastMin));\n accum.thisHour = accum.thisHour === undefined ? sr.thisHour : (accum.thisHour + (sr.thisHour === undefined ? 0 : sr.thisHour));\n accum.lastHour = accum.lastHour === undefined ? sr.lastHour : (accum.lastHour + (sr.lastHour === undefined ? 0 : sr.lastHour));\n accum.thisDay = accum.thisDay === undefined ? sr.thisDay : (accum.thisDay + (sr.thisDay === undefined ? 0 : sr.thisDay));\n accum.lastDay = accum.lastDay === undefined ? sr.lastDay : (accum.lastDay + (sr.lastDay === undefined ? 0 : sr.lastDay));\n return accum;\n}\n\nexport function statIndexAccum(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = statRateAccum(accum[p] as StatRate, se as StatRate);\n else\n accum[p] = statValueAccum(accum[p] as StatValue, se as StatValue);\n });\n return accum;\n}\n","// Public libraries\nimport * as Hash from 'object-hash';\n\nexport interface SplitBlock\n{\n id?: string;\n chunkKey?: string;\n chunkList?: string[];\n chunk?: string;\n state: string;\n datasource: string;\n geoid: string;\n blocks?: string[];\n bitset?: string;\n}\n\nexport interface SplitChunk\n{\n id?: string;\n recompute?: boolean;\n splits?: string[];\n}\n\nexport type DistrictToSplitBlock = { [districtID: string]: SplitBlock[] };\n\n// Canonical hashing of custom precinct\nexport function chash(o: any): string\n{\n return Hash(o, { respectType: false, unorderedArrays: true, unorderedObjects: true,\n excludeKeys: (k: string) => (k === 'id') });\n}\n\n// Is custom feature - 5 digit county id + 'cust' + hash\nlet reC = /^\\d\\d\\d\\d\\dcust.*$/;\n\nexport function isCfeature(id: string): boolean\n{\n return id && reC.test(id);\n}\n\n// Canonical hashing of splitblock data\nexport function vhash(o: any): string\n{\n return Hash(o,\n { respectType: false,\n unorderedArrays: true,\n unorderedObjects: true,\n // basically, include (state,datasource,geoid,blocks[])\n excludeKeys: (k: string) => (k === 'id' || k === 'chunk' || k === 'chunkList' || k === 'chunkKey')\n });\n}\n\n// old style \"vfeature_[geoid]_[numericchunk]_[id]\"\n// new style \"B_[geoid]_bitset\"\n\nexport function vgeoidToGeoid(vgeoid: string): string\n{\n let reNew = /^B_([^_]*)_.*/;\n let reOld = /^vfeature_([^_]*)_.*/;\n let a = reNew.exec(vgeoid);\n if (a == null || a.length != 2)\n {\n a = reOld.exec(vgeoid);\n if (a == null || a.length != 2)\n return '';\n }\n return a[1];\n}\n\nexport function splitToVgeoid(s: SplitBlock): string\n{\n // Newstyle\n if (s.bitset)\n return `B_${s.geoid}_${s.bitset}`;\n\n // oldstyle\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = '0';\n return `vfeature_${s.geoid}_${s.chunk}_${s.id}`;\n}\n\nexport function splitCommitted(s: SplitBlock): boolean\n{\n return !!s.id || !!s.bitset;\n}\n\nexport function vgeoidToChunk(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n // the contents are chunked into a file of form \"vfeature_chunk_[chunkid]\"\n // So extract the chunk ID and download that.\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = `vfeature_chunk_${a[2]}`;\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function vgeoidToSplit(state: string, datasource: string, vgeoid: string): SplitBlock\n{\n let reNew = /^B_([^_]*)_(.*)$/;\n let reOld = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = reNew.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], bitset: a[2] };\n a = reOld.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], id: a[3], chunk: a[2], blocks: null };\n return null;\n}\n\nexport function vgeoidToHash(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = a[3];\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function isVfeature(geoid: string): boolean\n{\n return geoid.indexOf('B') === 0 || geoid.indexOf('vfeature') === 0;\n}\n\nexport function splitToCacheKey(s: SplitBlock): string\n{\n if (s.bitset)\n return null;\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_${s.geoid}_${s.chunk}_${s.id}.geojson`;\n}\n\nexport function cacheKeyToSplit(s: string): SplitBlock\n{\n let re = /^_(..)_(.*)_vfeature_([^_]+)_([^_]+)_([^_]+).geojson$/\n let a = re.exec(s);\n if (a == null) return null;\n // 0: whole string, 1: statecode, 2: datasource, 3: geoid, 4: chunk, 5: id hash\n return { id: a[5], state: a[1], datasource: a[2], geoid: a[3], chunk: a[4], blocks: null };\n}\n\nexport function splitToChunkKey(s: SplitBlock): string\n{\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_chunk_${s.chunk}.geojson`;\n}\n\nexport function splitToPrefix(s: SplitBlock): string\n{\n if (s.blocks === undefined)\n {\n let re = /_([^_]*)_(.*)_vfeature.*\\.geojson$/;\n let a = re.exec(s.id);\n if (a && a.length == 3)\n return `_${a[1]}_${a[2]}`;\n return s.id;\n }\n return `_${s.state}_${s.datasource}`;\n}\n\nexport function cacheKeysToChunkHash(keys: string[]): string\n{\n return vhash(keys);\n}\n","export type WorkQueueFailure = 'hard' | 'soft';\n\nexport interface WorkQueueItem\n{\n id: string,\n functionName: string,\n params: any,\n priority: number,\n failType?: WorkQueueFailure,\n}\n","module.exports = require(\"@dra2020/baseclient\");","module.exports = require(\"object-hash\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import * as DT from './alldt';\nexport { DT }\nimport * as PF from './packedfields';\nexport { PF }\nimport * as CM from './colormgr';\nexport { CM }\n"],"names":[],"sourceRoot":""}
|
package/lib/schemas.ts
CHANGED
|
@@ -295,6 +295,16 @@ export let Schemas: any = {
|
|
|
295
295
|
},
|
|
296
296
|
KeySchema: { createdBy: 'HASH', id: 'RANGE' },
|
|
297
297
|
},
|
|
298
|
+
'operations':
|
|
299
|
+
{
|
|
300
|
+
FileOptions: { map: true },
|
|
301
|
+
Schema: {
|
|
302
|
+
id: 'S',
|
|
303
|
+
createdBy: 'S',
|
|
304
|
+
createTime: 'S',
|
|
305
|
+
},
|
|
306
|
+
KeySchema: { createdBy: 'HASH', id: 'RANGE' },
|
|
307
|
+
},
|
|
298
308
|
'cull':
|
|
299
309
|
{
|
|
300
310
|
FileOptions: { map: true },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dra2020/dra-types",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.138",
|
|
4
4
|
"description": "Shared types used between client, server and tools.",
|
|
5
5
|
"main": "dist/dra-types.js",
|
|
6
6
|
"types": "./dist/all.d.ts",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"webpack-cli": "^5.1.4"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@dra2020/baseclient": "^1.0.
|
|
37
|
+
"@dra2020/baseclient": "^1.0.153",
|
|
38
38
|
"geojson": "^0.5.0",
|
|
39
39
|
"object-hash": "^3.0.0"
|
|
40
40
|
}
|
package/dist/colordata.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export declare const DefaultColorNames: string[];
|
|
2
|
-
export interface ColorLookup {
|
|
3
|
-
[key: string]: string;
|
|
4
|
-
}
|
|
5
|
-
export declare const ColorValues: ColorLookup;
|
|
6
|
-
export declare const ColorBySolidWhite = 0;
|
|
7
|
-
export declare const ColorBySolidBlack = 1;
|
|
8
|
-
export declare const ColorBySolidHispanic = 2;
|
|
9
|
-
export declare const ColorBySolidAsian = 3;
|
|
10
|
-
export declare const ColorByMostlyWhite = 4;
|
|
11
|
-
export declare const ColorByMostlyBlack = 5;
|
|
12
|
-
export declare const ColorByMostlyHispanic = 6;
|
|
13
|
-
export declare const ColorByMostlyAsian = 7;
|
|
14
|
-
export declare const ColorByMostlyNative = 8;
|
|
15
|
-
export declare const ColorByMix = 9;
|
|
16
|
-
export declare const ColorByHispanicWhite = 10;
|
|
17
|
-
export declare const ColorByBlackWhite = 11;
|
|
18
|
-
export declare const ColorByHispanicBlack = 12;
|
|
19
|
-
export declare const ColorByAsianWhite = 13;
|
|
20
|
-
export declare const ColorByAsianHispanic = 14;
|
|
21
|
-
export declare const ColorByBlackAsian = 15;
|
|
22
|
-
export declare const EthnicBackgroundColor: string[];
|
|
23
|
-
export declare const EthnicTextColor: string[];
|
|
24
|
-
export declare const EthnicLabel: string[];
|
|
25
|
-
export declare const ColorByGreatR = 0;
|
|
26
|
-
export declare const ColorByGoodR = 1;
|
|
27
|
-
export declare const ColorByFairR = 2;
|
|
28
|
-
export declare const ColorByEven = 3;
|
|
29
|
-
export declare const ColorByFairD = 4;
|
|
30
|
-
export declare const ColorByGoodD = 5;
|
|
31
|
-
export declare const ColorByGreatD = 6;
|
|
32
|
-
export declare const ElectionBackgroundColor: string[];
|
|
33
|
-
export declare const ElectionTextColor: string[];
|
|
34
|
-
export declare const ElectionLabel: string[];
|
|
35
|
-
export declare let IntensityBackgroundColor: string[];
|
package/dist/gencolor.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function genColor(i: number, useFirstColor: boolean): string;
|