@dra2020/dra-types 1.8.99 → 1.8.101

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[];
@@ -14,6 +14,7 @@ export declare function parseColorBy(colorby: string): {
14
14
  datasetid: string;
15
15
  field: string;
16
16
  };
17
+ export declare function isColorBy(colorby: string): boolean;
17
18
  export type DatasetFields = {
18
19
  [key: string]: DatasetField;
19
20
  };
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
@@ -569,6 +570,38 @@ function allGroups16Colors(palette, colors) {
569
570
  return modColors;
570
571
  }
571
572
  exports.allGroups16Colors = allGroups16Colors;
573
+ function ToExtendedColor(agg, dc, colorBy) {
574
+ var _a;
575
+ // compute pct
576
+ const { datasetid, field } = (0, datasets_1.parseColorBy)(colorBy);
577
+ if (!datasetid || !field || !dc.dsMeta || !dc.dsMeta[datasetid] || !((_a = dc.dsMeta[datasetid]) === null || _a === void 0 ? void 0 : _a.fields[field]))
578
+ return '#ffffff';
579
+ const meta = dc.dsMeta[datasetid];
580
+ let getter = PF.ToGetter(agg, dc, datasetid, datasetid);
581
+ let fields = PF.sortedFieldList(meta);
582
+ let den = 0;
583
+ if (meta.fields['Tot'])
584
+ den = getter('Tot');
585
+ else
586
+ fields.forEach(f => { den += getter(f); });
587
+ let num = 0;
588
+ let dfield = meta.fields[field];
589
+ if (dfield.colorBySum)
590
+ for (let i = 0; i < fields.length; i++) {
591
+ num += getter(fields[i]);
592
+ if (fields[i] === field)
593
+ break;
594
+ }
595
+ else
596
+ num = getter(field);
597
+ // Careful...
598
+ if (den == 0 || den === undefined || isNaN(den) || num === undefined || isNaN(num))
599
+ return '#ffffff';
600
+ const pct = dfield.invert ? 1 - (num / den) : num / den;
601
+ const color = baseclient_1.Util.execGradient(makeStops(exports.EthnicFewStops, baseclient_1.Colors.EthnicFewClassicColors), pct);
602
+ return color;
603
+ }
604
+ exports.ToExtendedColor = ToExtendedColor;
572
605
  function computeDistrictColors(params) {
573
606
  let dcNew = [];
574
607
  for (let i = 0; i < params.aggregates.length; i++) {
@@ -593,7 +626,12 @@ function computeDistrictColors(params) {
593
626
  dc.colorSolid = dc.colorEthnic;
594
627
  break;
595
628
  default:
596
- dc.colorSolid = mapColor;
629
+ if ((0, datasets_1.isColorBy)(params.colorDistrictsBy)) {
630
+ dc.colorExtended = ToExtendedColor(agg, params.datasetContext, params.colorDistrictsBy);
631
+ dc.colorSolid = dc.colorExtended;
632
+ }
633
+ else
634
+ dc.colorSolid = mapColor;
597
635
  break;
598
636
  }
599
637
  dcNew.push(dc);
@@ -1253,7 +1291,7 @@ exports.StateNameMap = {
1253
1291
 
1254
1292
 
1255
1293
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1256
- exports.parseColorBy = exports.formColorBy = exports.sortFields = void 0;
1294
+ exports.isColorBy = exports.parseColorBy = exports.formColorBy = exports.sortFields = void 0;
1257
1295
  function sortFields(f1, f2) {
1258
1296
  return (f1.order || 0) - (f2.order || 0);
1259
1297
  }
@@ -1271,6 +1309,11 @@ function parseColorBy(colorby) {
1271
1309
  return { datasetid: '', field: '' };
1272
1310
  }
1273
1311
  exports.parseColorBy = parseColorBy;
1312
+ function isColorBy(colorby) {
1313
+ let { datasetid, field } = parseColorBy(colorby);
1314
+ return !!datasetid && !!field;
1315
+ }
1316
+ exports.isColorBy = isColorBy;
1274
1317
 
1275
1318
 
1276
1319
  /***/ }),