@dra2020/dra-types 1.8.100 → 1.8.102

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.
@@ -51,6 +51,7 @@ export declare function allGroups16Colors(palette: PaletteName, colors: string[]
51
51
  export interface DistrictCache {
52
52
  colorElection?: string;
53
53
  colorEthnic?: string;
54
+ colorExtended?: string;
54
55
  colorSolid?: string;
55
56
  }
56
57
  export interface ColorProp {
@@ -66,4 +67,5 @@ export interface DistrictColorParams {
66
67
  usePalette: string;
67
68
  colorDistrictsBy: string;
68
69
  }
70
+ export declare function ToExtendedColor(agg: PF.PackedFields, dc: PF.DatasetContext, colorBy: string): string;
69
71
  export declare function computeDistrictColors(params: DistrictColorParams): DistrictCache[];
package/dist/dra-types.js CHANGED
@@ -107,9 +107,10 @@ exports.BucketMap = {
107
107
 
108
108
 
109
109
  Object.defineProperty(exports, "__esModule", ({ value: true }));
110
- exports.computeDistrictColors = exports.allGroups16Colors = exports.colorsFromStopsPartisan = exports.colorsFromStops = exports.PaletteNames = exports.ColorFromRGBPcts = exports.AggregatePartisanColorStr = exports.AggregatePartisanColor = exports.AggregateEthnicColor = exports.ToEthnicColorStr = exports.ToPartisanShiftColor = exports.ToPartisanDistrictColor = exports.ToPartisanColorStr = exports.ToAllEthnicColor = exports.ethnicBackgroundColor = exports.makeStops = exports.DefaultPaletteDefaults = 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;
110
+ exports.computeDistrictColors = exports.ToExtendedColor = exports.allGroups16Colors = exports.colorsFromStopsPartisan = exports.colorsFromStops = exports.PaletteNames = exports.ColorFromRGBPcts = exports.AggregatePartisanColorStr = exports.AggregatePartisanColor = exports.AggregateEthnicColor = exports.ToEthnicColorStr = exports.ToPartisanShiftColor = exports.ToPartisanDistrictColor = exports.ToPartisanColorStr = exports.ToAllEthnicColor = exports.ethnicBackgroundColor = exports.makeStops = exports.DefaultPaletteDefaults = 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;
111
111
  // App libraries
112
112
  const PF = __webpack_require__(/*! ./packedfields */ "./lib/packedfields.ts");
113
+ const datasets_1 = __webpack_require__(/*! ./datasets */ "./lib/datasets.ts");
113
114
  const baseclient_1 = __webpack_require__(/*! @dra2020/baseclient */ "@dra2020/baseclient");
114
115
  // All Groups Mosaic has 16 colors
115
116
  // Index values into the 16 colors
@@ -257,7 +258,8 @@ exports.ethnicBackgroundColor = ethnicBackgroundColor;
257
258
  function ToAllEthnicColor(agg, dc, pd) {
258
259
  // Use VAP/CVAP if it exists
259
260
  const dataset = dc.primeVDS ? dc.primeVDS : dc.primeDDS;
260
- return AggregateEthnicColor(PF.ToGetter(agg, dc, '', dataset), pd, dataset.endsWith('NH'));
261
+ const did = PF.toDatasetID(dataset);
262
+ return AggregateEthnicColor(PF.ToGetter(agg, dc, did, dataset), pd, dataset.endsWith('NH'));
261
263
  }
262
264
  exports.ToAllEthnicColor = ToAllEthnicColor;
263
265
  function ToPartisanColorStr(agg, dc, pd) {
@@ -269,22 +271,23 @@ function ToPartisanDistrictColor(agg, dc, pd) {
269
271
  }
270
272
  exports.ToPartisanDistrictColor = ToPartisanDistrictColor;
271
273
  function ToPartisanColor(agg, dc, stops) {
274
+ const did = PF.toDatasetID(dc.primeEDS);
272
275
  if (dc.primeEDS === PF.DS_PVI2020) {
273
- const getter16 = PF.ToGetter(agg, dc, '', PF.DS_PRES2016);
274
- const getter20 = PF.ToGetter(agg, dc, '', PF.DS_PRES2020);
276
+ const getter16 = PF.ToGetter(agg, dc, did, PF.DS_PRES2016);
277
+ const getter20 = PF.ToGetter(agg, dc, did, PF.DS_PRES2020);
275
278
  const pviRaw = PF.calcRaw2020Pvi(getter16, getter20);
276
279
  const color = ColorFromRGBPcts((1 - pviRaw / 100), 0, pviRaw / 100, stops);
277
280
  //console.log('Pvi (r, d, color): (' + (1 - pviRaw/100) + ', ' + pviRaw/100 + ', ' + color + ')');
278
281
  return color;
279
282
  }
280
283
  else if (dc.primeEDS === PF.DS_PVI2016) {
281
- const getter = PF.ToGetter(agg, dc, '', dc.primeEDS);
284
+ const getter = PF.ToGetter(agg, dc, did, dc.primeEDS);
282
285
  const pviRaw = PF.calcRawPvi(getter);
283
286
  const color = ColorFromRGBPcts((1 - pviRaw / 100), 0, pviRaw / 100, stops);
284
287
  return color;
285
288
  }
286
289
  else {
287
- const getter = PF.ToGetter(agg, dc, '', dc.primeEDS);
290
+ const getter = PF.ToGetter(agg, dc, did, dc.primeEDS);
288
291
  return AggregatePartisanColorStr(getter, stops);
289
292
  }
290
293
  }
@@ -307,6 +310,7 @@ function ToEthnicColorStr(agg, dc, pd, detail) {
307
310
  let total = 'Tot';
308
311
  let bInvert = false;
309
312
  const dataset = dc.primeVDS ? dc.primeVDS : dc.primeDDS;
313
+ const did = PF.toDatasetID(dataset);
310
314
  switch (detail) {
311
315
  case null:
312
316
  case '':
@@ -346,7 +350,7 @@ function ToEthnicColorStr(agg, dc, pd, detail) {
346
350
  break;
347
351
  default: break;
348
352
  }
349
- const getter = PF.ToGetter(agg, dc, '', dataset);
353
+ const getter = PF.ToGetter(agg, dc, did, dataset);
350
354
  let den = getter(total);
351
355
  let num = getter(ethnic);
352
356
  if (den === undefined || isNaN(den) || num === undefined || isNaN(num))
@@ -569,6 +573,38 @@ function allGroups16Colors(palette, colors) {
569
573
  return modColors;
570
574
  }
571
575
  exports.allGroups16Colors = allGroups16Colors;
576
+ function ToExtendedColor(agg, dc, colorBy) {
577
+ var _a;
578
+ // compute pct
579
+ const { datasetid, field } = (0, datasets_1.parseColorBy)(colorBy);
580
+ if (!datasetid || !field || !dc.dsMeta || !dc.dsMeta[datasetid] || !((_a = dc.dsMeta[datasetid]) === null || _a === void 0 ? void 0 : _a.fields[field]))
581
+ return '#ffffff';
582
+ const meta = dc.dsMeta[datasetid];
583
+ let getter = PF.ToGetter(agg, dc, datasetid, datasetid);
584
+ let fields = PF.sortedFieldList(meta);
585
+ let den = 0;
586
+ if (meta.fields['Tot'])
587
+ den = getter('Tot');
588
+ else
589
+ fields.forEach(f => { den += getter(f); });
590
+ let num = 0;
591
+ let dfield = meta.fields[field];
592
+ if (dfield.colorBySum)
593
+ for (let i = 0; i < fields.length; i++) {
594
+ num += getter(fields[i]);
595
+ if (fields[i] === field)
596
+ break;
597
+ }
598
+ else
599
+ num = getter(field);
600
+ // Careful...
601
+ if (den == 0 || den === undefined || isNaN(den) || num === undefined || isNaN(num))
602
+ return '#ffffff';
603
+ const pct = dfield.invert ? 1 - (num / den) : num / den;
604
+ const color = baseclient_1.Util.execGradient(makeStops(exports.EthnicFewStops, baseclient_1.Colors.EthnicFewClassicColors), pct);
605
+ return color;
606
+ }
607
+ exports.ToExtendedColor = ToExtendedColor;
572
608
  function computeDistrictColors(params) {
573
609
  let dcNew = [];
574
610
  for (let i = 0; i < params.aggregates.length; i++) {
@@ -593,7 +629,12 @@ function computeDistrictColors(params) {
593
629
  dc.colorSolid = dc.colorEthnic;
594
630
  break;
595
631
  default:
596
- dc.colorSolid = mapColor;
632
+ if ((0, datasets_1.isColorBy)(params.colorDistrictsBy)) {
633
+ dc.colorExtended = ToExtendedColor(agg, params.datasetContext, params.colorDistrictsBy);
634
+ dc.colorSolid = dc.colorExtended;
635
+ }
636
+ else
637
+ dc.colorSolid = mapColor;
597
638
  break;
598
639
  }
599
640
  dcNew.push(dc);
@@ -1395,7 +1436,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
1395
1436
 
1396
1437
 
1397
1438
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1398
- exports.pvi2020Str = exports.calcRaw2020Pvi = exports.pviStr = exports.calcRawPvi = exports.calcShift = exports.ToGetterPvi20 = exports.ToGetterPvi16 = exports.ToGetter = exports.fieldGetterNotLoaded = exports.findPackedField = exports.getPackedField = exports.diffPackedFields = exports.decrementPackedFields = exports.aggregateCount = exports.aggregatePackedFields = exports.packedCopy = exports.zeroPackedCopy = exports.zeroPackedFields = exports.retrievePackedIndex = exports.retrievePackedFields = exports.pushedExtPackedFields = exports.featurePushedExtPackedFields = exports.featurePushExtPackedFields = exports.isExtDataset = exports.setPackedFields = exports.hasPackedFields = exports.computePackedFields = exports.computeMetaIndex = exports.sortedFieldList = exports.fGet = exports.DS_PRES2016 = exports.DS_PRES2020 = exports.DS_PVI2016 = exports.PVI2020_Title = exports.DS_PVI2020 = exports.DATASET_TYPE_OTHER = exports.DATASET_TYPE_PVI = exports.DATASET_TYPE_ELECTION = exports.DATASET_TYPE_DEMOGRAPHIC = exports.AGG_pvi = exports.AGG_pres2016 = exports.AGG_pres2008 = exports.AGG_DEMOGRAPHIC18 = exports.AGG_DEMOGRAPHIC = void 0;
1439
+ exports.pvi2020Str = exports.calcRaw2020Pvi = exports.pviStr = exports.calcRawPvi = exports.calcShift = exports.ToGetterPvi20 = exports.ToGetterPvi16 = exports.ToGetter = exports.fieldGetterNotLoaded = exports.findPackedField = exports.getPackedField = exports.diffPackedFields = exports.decrementPackedFields = exports.aggregateCount = exports.aggregatePackedFields = exports.packedCopy = exports.zeroPackedCopy = exports.zeroPackedFields = exports.retrievePackedIndex = exports.retrievePackedFields = exports.pushedExtPackedFields = exports.featurePushedExtPackedFields = exports.featurePushExtPackedFields = exports.toDatasetID = exports.isExtDataset = exports.setPackedFields = exports.hasPackedFields = exports.computePackedFields = exports.computeMetaIndex = exports.sortedFieldList = exports.fGet = exports.DS_PRES2016 = exports.DS_PRES2020 = exports.DS_PVI2016 = exports.PVI2020_Title = exports.DS_PVI2020 = exports.DATASET_TYPE_OTHER = exports.DATASET_TYPE_PVI = exports.DATASET_TYPE_ELECTION = exports.DATASET_TYPE_DEMOGRAPHIC = exports.AGG_pvi = exports.AGG_pres2016 = exports.AGG_pres2008 = exports.AGG_DEMOGRAPHIC18 = exports.AGG_DEMOGRAPHIC = void 0;
1399
1440
  const baseclient_1 = __webpack_require__(/*! @dra2020/baseclient */ "@dra2020/baseclient");
1400
1441
  exports.AGG_DEMOGRAPHIC = 'demographic';
1401
1442
  exports.AGG_DEMOGRAPHIC18 = 'demographic18';
@@ -1507,6 +1548,10 @@ function isExtDataset(did) {
1507
1548
  return did && reExtDataset.test(did);
1508
1549
  }
1509
1550
  exports.isExtDataset = isExtDataset;
1551
+ function toDatasetID(datasetKey) {
1552
+ return isExtDataset(datasetKey) ? datasetKey : '';
1553
+ }
1554
+ exports.toDatasetID = toDatasetID;
1510
1555
  function featurePushExtPackedFields(f, datasetid, index, data, card) {
1511
1556
  var _a;
1512
1557
  let blocks = ((_a = f === null || f === void 0 ? void 0 : f.properties) === null || _a === void 0 ? void 0 : _a.blocks) || (card.has(f.properties.id) ? [f.properties.id] : null);