@dra2020/dra-types 1.8.142 → 1.8.144
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/colormgr.d.ts +5 -3
- package/dist/datasets.d.ts +7 -0
- package/dist/dra-types.js +90 -19
- package/dist/dra-types.js.map +1 -1
- package/lib/colormgr.ts +50 -18
- package/lib/datasets.ts +47 -0
- package/package.json +2 -2
package/dist/colormgr.d.ts
CHANGED
|
@@ -27,11 +27,15 @@ export declare const ColorByGreatD = 6;
|
|
|
27
27
|
export declare let PartisanDistrictStops: number[];
|
|
28
28
|
export declare let PartisanPrecinctStops: number[];
|
|
29
29
|
export declare let EthnicFewStops: number[];
|
|
30
|
+
export declare const ColorBrewerSchemeStops: number[];
|
|
30
31
|
export type PaletteDefaults = {
|
|
31
32
|
[key: string]: string;
|
|
32
33
|
};
|
|
33
34
|
export declare const DefaultPaletteDefaults: PaletteDefaults;
|
|
34
35
|
export declare function makeStops(stops: number[], colors: string[]): Util.Stop[];
|
|
36
|
+
export declare function partisanStops(stops: number[], palette: PaletteName): Util.Stop[];
|
|
37
|
+
export declare function partisanDistrictStops(stops: number[], palette: PaletteName): Util.Stop[];
|
|
38
|
+
export declare function ethnicStops(stops: number[], palette: PaletteName): Util.Stop[];
|
|
35
39
|
export declare function ethnicBackgroundColor(index: number, pd: PaletteDefaults): string;
|
|
36
40
|
export declare function ToAllEthnicColor(agg: PF.PackedFields, dc: PF.DatasetContext, pd: PaletteDefaults): number;
|
|
37
41
|
export declare function ToPartisanColorStr(agg: PF.PackedFields, dc: PF.DatasetContext, pd: PaletteDefaults): string;
|
|
@@ -44,9 +48,7 @@ export declare function AggregatePartisanColorStr(getter: PF.FieldGetter, stops:
|
|
|
44
48
|
export declare function ColorFromRGBPcts(pctRed: number, pctGreen: number, pctBlue: number, stops: Util.GradientStops): string;
|
|
45
49
|
export type ColorUse = 'districts' | 'partisanScale' | 'demographicsScale' | 'demographicsAllGroups' | 'partisanDistrictsScale';
|
|
46
50
|
export declare const PaletteNames: readonly ["jet_r", "turbo_r", "inferno_r", "viridis_r", "magma_r", "plasma_r", "Greys", "bone_r", "draclassic", "demographicsclassic", "partisanclassic", "allgroupsclassic", "partisandistrictsclassic"];
|
|
47
|
-
export type PaletteName =
|
|
48
|
-
export declare function colorsFromStops(palette: PaletteName, stops: number[], classicColors: string[]): string[];
|
|
49
|
-
export declare function colorsFromStopsPartisan(palette: PaletteName, colorUse: ColorUse, stops: number[]): string[];
|
|
51
|
+
export type PaletteName = string;
|
|
50
52
|
export declare function allGroups16Colors(palette: PaletteName, colors: string[]): string[];
|
|
51
53
|
export interface DistrictCache {
|
|
52
54
|
colorElection?: string;
|
package/dist/datasets.d.ts
CHANGED
|
@@ -90,3 +90,10 @@ export declare function datasetRestrict(ds: Dataset): {
|
|
|
90
90
|
export type DatasetIndex = {
|
|
91
91
|
[id: string]: Dataset;
|
|
92
92
|
};
|
|
93
|
+
export interface PrimaryKeys {
|
|
94
|
+
CENSUS: string;
|
|
95
|
+
VAP: string;
|
|
96
|
+
ELECTION: string;
|
|
97
|
+
}
|
|
98
|
+
export declare function defaultBuiltinKeys(state: string, datasource: string, planType: string, builtins: Set<string>): PrimaryKeys;
|
|
99
|
+
export declare function usesPrisonerAdjust(state: string, datasource: string, planType: string): boolean;
|
package/dist/dra-types.js
CHANGED
|
@@ -120,9 +120,12 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
120
120
|
|
|
121
121
|
|
|
122
122
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
123
|
-
exports.
|
|
124
|
-
exports.ColorFlags = exports.MaxFields = exports.FieldCountToColors = exports.BinColorLookup = exports.BinEthnicOther = exports.BinEthnicHispanic = void 0;
|
|
123
|
+
exports.BinEthnicBlack = exports.BinEthnicWhite = exports.BinBlack = exports.BinDeepPink = exports.BinMagenta = exports.BinDarkViolet = exports.BinBlueViolet = exports.BinBlue = exports.BinLightBlue = exports.BinCyan = exports.BinMediumSpringGreen = exports.BinLime = exports.BinChartreuse = exports.BinGreenish = exports.BinYellow = exports.BinGold = exports.BinOrange = exports.BinBrown = exports.BinOrangeRed = exports.BinRed = exports.PaletteNames = exports.DefaultPaletteDefaults = exports.ColorBrewerSchemeStops = exports.EthnicFewStops = exports.PartisanPrecinctStops = exports.PartisanDistrictStops = exports.ColorByGreatD = exports.ColorByGoodD = exports.ColorByFairD = exports.ColorByEven = exports.ColorByFairR = exports.ColorByGoodR = exports.ColorByGreatR = exports.EthnicTextColor = exports.ColorByBlackAsian = exports.ColorByAsianHispanic = exports.ColorByAsianWhite = exports.ColorByHispanicBlack = exports.ColorByBlackWhite = exports.ColorByHispanicWhite = exports.ColorByMix = exports.ColorByMostlyNative = exports.ColorByMostlyAsian = exports.ColorByMostlyHispanic = exports.ColorByMostlyBlack = exports.ColorByMostlyWhite = exports.ColorBySolidAsian = exports.ColorBySolidHispanic = exports.ColorBySolidBlack = exports.ColorBySolidWhite = void 0;
|
|
124
|
+
exports.ColorFlags = exports.MaxFields = exports.FieldCountToColors = exports.BinColorLookup = exports.BinEthnicOther = exports.BinEthnicHispanic = exports.BinEthnicAsian = void 0;
|
|
125
125
|
exports.makeStops = makeStops;
|
|
126
|
+
exports.partisanStops = partisanStops;
|
|
127
|
+
exports.partisanDistrictStops = partisanDistrictStops;
|
|
128
|
+
exports.ethnicStops = ethnicStops;
|
|
126
129
|
exports.ethnicBackgroundColor = ethnicBackgroundColor;
|
|
127
130
|
exports.ToAllEthnicColor = ToAllEthnicColor;
|
|
128
131
|
exports.ToPartisanColorStr = ToPartisanColorStr;
|
|
@@ -133,8 +136,6 @@ exports.AggregateEthnicColor = AggregateEthnicColor;
|
|
|
133
136
|
exports.AggregatePartisanColor = AggregatePartisanColor;
|
|
134
137
|
exports.AggregatePartisanColorStr = AggregatePartisanColorStr;
|
|
135
138
|
exports.ColorFromRGBPcts = ColorFromRGBPcts;
|
|
136
|
-
exports.colorsFromStops = colorsFromStops;
|
|
137
|
-
exports.colorsFromStopsPartisan = colorsFromStopsPartisan;
|
|
138
139
|
exports.allGroups16Colors = allGroups16Colors;
|
|
139
140
|
exports.ToExtendedColor = ToExtendedColor;
|
|
140
141
|
exports.computeDistrictColors = computeDistrictColors;
|
|
@@ -251,6 +252,9 @@ exports.EthnicFewStops = [
|
|
|
251
252
|
0.50, //
|
|
252
253
|
1.00, //
|
|
253
254
|
];
|
|
255
|
+
exports.ColorBrewerSchemeStops = [
|
|
256
|
+
0.00, 0.125, 0.125, 0.25, 0.25, 0.375, 0.375, 0.50, 0.50, 0.625, 0.625, 0.75, 0.75, 0.875, 0.875, 1.00
|
|
257
|
+
];
|
|
254
258
|
exports.DefaultPaletteDefaults = {
|
|
255
259
|
partisanScale: 'partisanclassic',
|
|
256
260
|
partisanDistrictsScale: 'partisandistrictsclassic',
|
|
@@ -265,18 +269,23 @@ function makeStops(stops, colors) {
|
|
|
265
269
|
result.push({ stop: stops[i], color: colors[i] });
|
|
266
270
|
return result;
|
|
267
271
|
}
|
|
268
|
-
|
|
269
|
-
|
|
272
|
+
// *************** Color functions ***********************
|
|
273
|
+
// These 3 functions: partisanStops, partisanDistrictStops, ethnicStops, check for Color Brewer schemes
|
|
274
|
+
function partisanStops(stops, palette) {
|
|
275
|
+
if (baseclient_1.Colors.BigPalettes.indexOf(palette) < 0) // not a big palette
|
|
276
|
+
stops = exports.ColorBrewerSchemeStops;
|
|
270
277
|
return makeStops(stops, colorsFromStopsPartisan(palette, 'partisanScale', stops));
|
|
271
278
|
}
|
|
272
|
-
function partisanDistrictStops(stops,
|
|
273
|
-
|
|
279
|
+
function partisanDistrictStops(stops, palette) {
|
|
280
|
+
if (baseclient_1.Colors.BigPalettes.indexOf(palette) < 0) // not a big palette
|
|
281
|
+
stops = exports.ColorBrewerSchemeStops;
|
|
274
282
|
return makeStops(stops, colorsFromStopsPartisan(palette, 'partisanDistrictsScale', stops));
|
|
275
283
|
}
|
|
276
|
-
function ethnicStops(stops,
|
|
277
|
-
const palette = pd['demographicsScale'];
|
|
284
|
+
function ethnicStops(stops, palette) {
|
|
278
285
|
if (palette === 'demographicsclassic')
|
|
279
286
|
return makeStops(stops, baseclient_1.Colors.EthnicFewClassicColors);
|
|
287
|
+
if (baseclient_1.Colors.BigPalettes.indexOf(palette) < 0) // not a big palette
|
|
288
|
+
stops = exports.ColorBrewerSchemeStops;
|
|
280
289
|
return makeStops(stops, colorsFromStops(palette, stops, baseclient_1.Colors.EthnicFewClassicColors));
|
|
281
290
|
}
|
|
282
291
|
function ethnicBackgroundColor(index, pd) {
|
|
@@ -294,10 +303,10 @@ function ToAllEthnicColor(agg, dc, pd) {
|
|
|
294
303
|
return AggregateEthnicColor(PF.ToGetter(agg, dc, did), pd, builtin.endsWith('NH'));
|
|
295
304
|
}
|
|
296
305
|
function ToPartisanColorStr(agg, dc, pd) {
|
|
297
|
-
return ToPartisanColor(agg, dc, partisanStops(exports.PartisanPrecinctStops, pd));
|
|
306
|
+
return ToPartisanColor(agg, dc, partisanStops(exports.PartisanPrecinctStops, pd['partisanScale']));
|
|
298
307
|
}
|
|
299
308
|
function ToPartisanDistrictColor(agg, dc, pd) {
|
|
300
|
-
return ToPartisanColor(agg, dc, partisanDistrictStops(exports.PartisanDistrictStops, pd));
|
|
309
|
+
return ToPartisanColor(agg, dc, partisanDistrictStops(exports.PartisanDistrictStops, pd['partisanDistrictsScale']));
|
|
301
310
|
}
|
|
302
311
|
function ToPartisanColor(agg, dc, stops) {
|
|
303
312
|
const getter = PF.ToGetter(agg, dc, dc.primeEDS);
|
|
@@ -312,7 +321,7 @@ function ToPartisanShiftColor(agg, dc, datasets, pd, isDistrict) {
|
|
|
312
321
|
const defaultIsDistrict = isDistrict !== null && isDistrict !== void 0 ? isDistrict : false; // make the optional isDistrict parameter to false by default
|
|
313
322
|
const rep = 0.5 - (shift / 2);
|
|
314
323
|
const dem = 0.5 + (shift / 2);
|
|
315
|
-
const stops = defaultIsDistrict ? partisanDistrictStops(exports.PartisanDistrictStops, pd) : partisanStops(exports.PartisanPrecinctStops, pd);
|
|
324
|
+
const stops = defaultIsDistrict ? partisanDistrictStops(exports.PartisanDistrictStops, pd['partisanDistrictsScale']) : partisanStops(exports.PartisanPrecinctStops, pd['partisanScale']);
|
|
316
325
|
const color = ColorFromRGBPcts(rep, 0, dem, stops);
|
|
317
326
|
// console.log('Shift (r, d, color): (' + rep + ', ' + dem + ', ' + color + ')');
|
|
318
327
|
return color;
|
|
@@ -371,7 +380,7 @@ function ToEthnicColorStr(agg, dc, pd, detail) {
|
|
|
371
380
|
if (den == 0)
|
|
372
381
|
return '#ffffff';
|
|
373
382
|
const pct = bInvert ? 1 - (num / den) : num / den;
|
|
374
|
-
return baseclient_1.Util.execGradient(ethnicStops(exports.EthnicFewStops, pd), pct);
|
|
383
|
+
return baseclient_1.Util.execGradient(ethnicStops(exports.EthnicFewStops, pd['demographicsScale']), pct);
|
|
375
384
|
}
|
|
376
385
|
// All Groups Mosaic
|
|
377
386
|
function AggregateEthnicColor(getter, pd, nhAlone) {
|
|
@@ -483,12 +492,17 @@ function ColorFromRGBPcts(pctRed, pctGreen, pctBlue, stops) {
|
|
|
483
492
|
pctBlue /= pctTot;
|
|
484
493
|
return baseclient_1.Util.execGradient(stops, pctBlue);
|
|
485
494
|
}
|
|
486
|
-
// Currently supported palettes
|
|
495
|
+
// Currently supported palettes (not including Color Brewer schemes)
|
|
487
496
|
exports.PaletteNames = ['jet_r', 'turbo_r', 'inferno_r', 'viridis_r', 'magma_r', 'plasma_r', 'Greys', 'bone_r',
|
|
488
497
|
'draclassic', 'demographicsclassic', 'partisanclassic', 'allgroupsclassic', 'partisandistrictsclassic'];
|
|
489
498
|
function colorsFromStops(palette, stops, classicColors) {
|
|
490
|
-
// Use classicColors to see where there are duplicate colors
|
|
491
499
|
const allColors = baseclient_1.Colors.getPalette(palette);
|
|
500
|
+
if (allColors.length < baseclient_1.Colors.MaxColors) {
|
|
501
|
+
if (allColors.length != 8) // Color Brewer Schemes are only 8 colors
|
|
502
|
+
return classicColors; // Safety check; shouldn't happen
|
|
503
|
+
return colorBrewerColors(stops, allColors);
|
|
504
|
+
}
|
|
505
|
+
// Use classicColors to see where there are duplicate colors
|
|
492
506
|
let colors = [];
|
|
493
507
|
for (let i = 0; i < stops.length; i++) {
|
|
494
508
|
const stop = (i + 1 < classicColors.length && classicColors[i] == classicColors[i + 1]) ? (stops[i] + stops[i + 1]) / 2 :
|
|
@@ -507,13 +521,26 @@ function colorsFromStopsPartisan(palette, colorUse, stops) {
|
|
|
507
521
|
return baseclient_1.Colors.PartisanDistrictClassicColors;
|
|
508
522
|
// For partisanScale and partisanDistrictsScale; indexes match classic color pattern
|
|
509
523
|
const allColors = baseclient_1.Colors.getPalette(palette);
|
|
510
|
-
if (allColors.length < baseclient_1.Colors.MaxColors)
|
|
511
|
-
|
|
524
|
+
if (allColors.length < baseclient_1.Colors.MaxColors) {
|
|
525
|
+
if (allColors.length != 8) // Color Brewer Schemes are only 8 colors
|
|
526
|
+
return baseclient_1.Colors.PartisanPrecinctClassicColors; // Safety check; shouldn't happen
|
|
527
|
+
return colorBrewerColors(stops, allColors);
|
|
528
|
+
}
|
|
512
529
|
let colors = [];
|
|
513
530
|
const indexes = colorUse === 'partisanScale' ?
|
|
514
531
|
[15, 27, 37, 47, 57, 67, 82, 92, 102, 112, 122, 134] : [15, 15, 37, 37, 47, 67, 82, 102, 122, 122, 134, 134];
|
|
515
|
-
for (let i = 0; i < stops.length; i++)
|
|
532
|
+
for (let i = 0; i < stops.length; i++)
|
|
516
533
|
colors.push(allColors[indexes[i]]);
|
|
534
|
+
return colors;
|
|
535
|
+
}
|
|
536
|
+
function colorBrewerColors(stops, allColors) {
|
|
537
|
+
// Do each color twice (expecting 16 stops)
|
|
538
|
+
const colors = [];
|
|
539
|
+
for (let i = 0; i < stops.length; i++) {
|
|
540
|
+
let colorInx = Math.floor(i / 2);
|
|
541
|
+
if (colorInx >= allColors.length)
|
|
542
|
+
colorInx = allColors.length - 1;
|
|
543
|
+
colors.push(allColors[colorInx]);
|
|
517
544
|
}
|
|
518
545
|
return colors;
|
|
519
546
|
}
|
|
@@ -1408,6 +1435,8 @@ exports.formColorBy = formColorBy;
|
|
|
1408
1435
|
exports.parseColorBy = parseColorBy;
|
|
1409
1436
|
exports.isColorBy = isColorBy;
|
|
1410
1437
|
exports.datasetRestrict = datasetRestrict;
|
|
1438
|
+
exports.defaultBuiltinKeys = defaultBuiltinKeys;
|
|
1439
|
+
exports.usesPrisonerAdjust = usesPrisonerAdjust;
|
|
1411
1440
|
function sortFields(f1, f2) {
|
|
1412
1441
|
return (f1.order || 0) - (f2.order || 0);
|
|
1413
1442
|
}
|
|
@@ -1433,6 +1462,48 @@ function datasetRestrict(ds) {
|
|
|
1433
1462
|
return ds.meta[ds.id].restrict;
|
|
1434
1463
|
return null;
|
|
1435
1464
|
}
|
|
1465
|
+
;
|
|
1466
|
+
function defaultBuiltinKeys(state, datasource, planType, builtins) {
|
|
1467
|
+
function bestOf(a) { return a.find(s => builtins.has(s)); }
|
|
1468
|
+
return (datasource === '2020_VD')
|
|
1469
|
+
? {
|
|
1470
|
+
CENSUS: bestOf((usesPrisonerAdjust(state, datasource, planType)
|
|
1471
|
+
? ['D20FA', 'D20F', 'D19F', 'D18F']
|
|
1472
|
+
: ['D20F', 'D19F', 'D18F'])),
|
|
1473
|
+
VAP: bestOf(['D20T', 'D19T', 'D18T']),
|
|
1474
|
+
ELECTION: bestOf(['C16GCO', 'E20GPR', 'E16GPR'])
|
|
1475
|
+
}
|
|
1476
|
+
:
|
|
1477
|
+
{
|
|
1478
|
+
CENSUS: bestOf(['D10F', 'D16F']),
|
|
1479
|
+
VAP: bestOf(['D10T', 'D16T']),
|
|
1480
|
+
ELECTION: bestOf(['C16GCO', 'E20GPR', 'E16GPR', 'E08GPR'])
|
|
1481
|
+
};
|
|
1482
|
+
}
|
|
1483
|
+
// Hard-coded based on both the existence of the dataset and the legal requirements of that particular state
|
|
1484
|
+
// (e.g. NY uses for state house maps but not congressional maps). So that is why we hard-code rather than
|
|
1485
|
+
// derive from dataset metadata.
|
|
1486
|
+
//
|
|
1487
|
+
function usesPrisonerAdjust(state, datasource, planType) {
|
|
1488
|
+
if (datasource !== '2020_VD')
|
|
1489
|
+
return false;
|
|
1490
|
+
switch (state) {
|
|
1491
|
+
case 'CA':
|
|
1492
|
+
case 'DE':
|
|
1493
|
+
case 'MD':
|
|
1494
|
+
case 'NJ':
|
|
1495
|
+
case 'NV':
|
|
1496
|
+
case 'PA':
|
|
1497
|
+
case 'VA':
|
|
1498
|
+
case 'WA':
|
|
1499
|
+
return (planType === 'congress' || planType === 'upper' || planType === 'lower' || planType === 'coi');
|
|
1500
|
+
case 'CO':
|
|
1501
|
+
case 'CT':
|
|
1502
|
+
case 'NY':
|
|
1503
|
+
return (planType === 'upper' || planType === 'lower' || planType === 'coi');
|
|
1504
|
+
}
|
|
1505
|
+
return false;
|
|
1506
|
+
}
|
|
1436
1507
|
|
|
1437
1508
|
|
|
1438
1509
|
/***/ }),
|