blixify-ui-web 1.2.192 → 1.2.194

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.
@@ -78,4 +78,13 @@ export declare const handleShapeChartPoints: (points: ChartPoint[], options: Cha
78
78
  * group of its own
79
79
  */
80
80
  export declare const handleGroupKeyQuery: (columnId: string, key: any) => Query[];
81
+ export interface ChartChange {
82
+ direction: "up" | "down" | "flat";
83
+ percent: number | null;
84
+ }
85
+ /**
86
+ * The last complete period against the one before it — the period still under
87
+ * way is left out, as a part-period would always read as a drop.
88
+ */
89
+ export declare const handleChangeSummary: (values: number[], isComplete: boolean[]) => ChartChange | null;
81
90
  //# sourceMappingURL=chartResults.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chartResults.d.ts","sourceRoot":"","sources":["../../../../src/components/data/dataGraph/chartResults.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC;;;;GAIG;AAEH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IAEV,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;CAC7C;AAED,eAAO,MAAM,YAAY,WAAW,CAAC;AACrC,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAC5C,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAGnC;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAAW,OAAO,KAAG,MAAM,GAAG,IAM7D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,UAC3B,IAAI,OACN,IAAI,YACC,iBAAiB;WAEH,MAAM;WAAS,IAAI;SAAO,IAAI;WAAS,MAAM;GAoBtE,CAAC;AAEF,eAAO,MAAM,uBAAuB,SAC5B,IAAI,YACA,iBAAiB,WAU5B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAChC,OAAO,KACX;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAmBpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QACzB,GAAG,WACC,aAAa,WACb;IAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,KAChC,MAkBF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,WACzB,UAAU,EAAE,WACX,iBAAiB,KACzB;IAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAAC,UAAU,EAAE,GAAG,EAAE,CAAA;CA2C3C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,aAAc,MAAM,OAAO,GAAG,KAAG,KAAK,EAErE,CAAC"}
1
+ {"version":3,"file":"chartResults.d.ts","sourceRoot":"","sources":["../../../../src/components/data/dataGraph/chartResults.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC;;;;GAIG;AAEH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IAEV,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;CAC7C;AAED,eAAO,MAAM,YAAY,WAAW,CAAC;AACrC,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAC5C,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAGnC;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAAW,OAAO,KAAG,MAAM,GAAG,IAM7D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,UAC3B,IAAI,OACN,IAAI,YACC,iBAAiB;WAEH,MAAM;WAAS,IAAI;SAAO,IAAI;WAAS,MAAM;GAoBtE,CAAC;AAEF,eAAO,MAAM,uBAAuB,SAC5B,IAAI,YACA,iBAAiB,WAU5B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAChC,OAAO,KACX;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAmBpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QACzB,GAAG,WACC,aAAa,WACb;IAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,KAChC,MAkBF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,WACzB,UAAU,EAAE,WACX,iBAAiB,KACzB;IAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAAC,UAAU,EAAE,GAAG,EAAE,CAAA;CA2C3C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,aAAc,MAAM,OAAO,GAAG,KAAG,KAAK,EAErE,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAElC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,WACtB,MAAM,EAAE,cACJ,OAAO,EAAE,KACpB,WAAW,GAAG,IAchB,CAAC"}
@@ -23,7 +23,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
23
23
  return (mod && mod.__esModule) ? mod : { "default": mod };
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.handleGroupKeyQuery = exports.handleShapeChartPoints = exports.handleGroupKeyLabel = exports.handleFlattenGroupedResult = exports.handleFormatBucketLabel = exports.handleSplitDateInterval = exports.handleToChartNumber = exports.MAX_DATE_BUCKETS = exports.EMPTY_GROUP_LABEL = exports.OTHERS_LABEL = void 0;
26
+ exports.handleChangeSummary = exports.handleGroupKeyQuery = exports.handleShapeChartPoints = exports.handleGroupKeyLabel = exports.handleFlattenGroupedResult = exports.handleFormatBucketLabel = exports.handleSplitDateInterval = exports.handleToChartNumber = exports.MAX_DATE_BUCKETS = exports.EMPTY_GROUP_LABEL = exports.OTHERS_LABEL = void 0;
27
27
  var dayjs_1 = __importDefault(require("../../dayjs"));
28
28
  exports.OTHERS_LABEL = "Others";
29
29
  exports.EMPTY_GROUP_LABEL = "No Value";
@@ -197,4 +197,26 @@ var handleGroupKeyQuery = function (columnId, key) { return [
197
197
  { type: "=", queryId: columnId, value: key !== null && key !== void 0 ? key : null },
198
198
  ]; };
199
199
  exports.handleGroupKeyQuery = handleGroupKeyQuery;
200
+ /**
201
+ * The last complete period against the one before it — the period still under
202
+ * way is left out, as a part-period would always read as a drop.
203
+ */
204
+ var handleChangeSummary = function (values, isComplete) {
205
+ var _a, _b;
206
+ var complete = values
207
+ .map(function (_, index) { return index; })
208
+ .filter(function (index) { return isComplete[index]; });
209
+ if (complete.length < 2)
210
+ return null;
211
+ var last = (_a = values[complete[complete.length - 1]]) !== null && _a !== void 0 ? _a : 0;
212
+ var previous = (_b = values[complete[complete.length - 2]]) !== null && _b !== void 0 ? _b : 0;
213
+ if (previous === 0)
214
+ return { direction: last > 0 ? "up" : last < 0 ? "down" : "flat", percent: null };
215
+ var percent = Math.round(((last - previous) / Math.abs(previous)) * 100);
216
+ return {
217
+ direction: percent > 0 ? "up" : percent < 0 ? "down" : "flat",
218
+ percent: percent,
219
+ };
220
+ };
221
+ exports.handleChangeSummary = handleChangeSummary;
200
222
  //# sourceMappingURL=chartResults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chartResults.js","sourceRoot":"","sources":["../../../../src/components/data/dataGraph/chartResults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chartResults.js","sourceRoot":"","sources":["../../../../src/components/data/dataGraph/chartResults.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAgC;AA8BnB,QAAA,YAAY,GAAG,QAAQ,CAAC;AACxB,QAAA,iBAAiB,GAAG,UAAU,CAAC;AAC/B,QAAA,gBAAgB,GAAG,EAAE,CAAC;AACnC,IAAM,YAAY,GAAG,qBAAqB,CAAC;AAE3C;;;;;;GAMG;AACI,IAAM,mBAAmB,GAAG,UAAC,KAAc;IAChD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACvE,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzE,IAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACxC,CAAC,CAAC;AANW,QAAA,mBAAmB,uBAM9B;AAEF;;;;GAIG;AACI,IAAM,uBAAuB,GAAG,UACrC,KAAW,EACX,GAAS,EACT,QAA2B;IAE3B,IAAM,OAAO,GACX,EAAE,CAAC;IACL,IAAM,UAAU,GAAG,IAAA,eAAK,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAM,QAAQ,GAAG,IAAA,eAAK,EAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC;IAElD,IAAI,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,IAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,IAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,UAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAE;YAClE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;YACpB,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE;YAChB,KAAK,EAAE,IAAA,+BAAuB,EAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC;SAC1D,CAAC,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,wBAAgB,CAAC,CAAC;AAC1C,CAAC,CAAC;AAzBW,QAAA,uBAAuB,2BAyBlC;AAEK,IAAM,uBAAuB,GAAG,UACrC,IAAU,EACV,QAA2B;IAE3B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,aAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAE,CAAC;QAC9C;YACE,OAAO,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;AACH,CAAC,CAAC;AAZW,QAAA,uBAAuB,2BAYlC;AAEF;;;;GAIG;AACI,IAAM,0BAA0B,GAAG,UACxC,GAAY;IAEZ,IAAM,MAAM,GAAG,IAAI,GAAG,EAA8C,CAAC;IACrE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,GAAG,CAAC,OAAO,CAAC,UAAC,SAAc;QACzB,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,OAAO,CAAC,UAAC,SAAc;;YAC7B,IAAM,GAAG,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAC;YAC3B,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,IAAI,CAAC,CAAC;YAC3C,IAAM,KAAK,GAAG,IAAA,2BAAmB,EAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC,CAAC;YACpD,IAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,QAAQ;gBACV,QAAQ,CAAC,KAAK;oBACZ,QAAQ,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;wBACvC,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,CAAC,MAAA,QAAQ,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,CAAC,CAAC,CAAC;;gBACxC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,KAAA,EAAE,KAAK,OAAA,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC;AArBW,QAAA,0BAA0B,8BAqBrC;AAEF;;;;GAIG;AACI,IAAM,mBAAmB,GAAG,UACjC,GAAQ,EACR,MAAsB,EACtB,MAAiC;;IAEjC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,yBAAiB,CAAC;IAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QACpB,OAAO,GAAG,CAAC,MAAM;YACf,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,IAAA,2BAAmB,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAzC,CAAyC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACzE,CAAC,CAAC,yBAAiB,CAAC;IACxB,IAAI,OAAO,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,SAAS;QAC5B,OAAO,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,IAAI,GAAG,YAAY,IAAI;QAAE,OAAO,IAAA,eAAK,EAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/D,IAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,EAAE,CAAC;QAC1B,IAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,KAAK,KAAK,CAAC,CAAC,KAAI,MAAA,MAAM,CAAC,kBAAkB,0CAAG,KAAK,CAAC,CAAA;YACpD,OAAO,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAtBW,QAAA,mBAAmB,uBAsB9B;AAEF;;;;GAIG;AACI,IAAM,sBAAsB,GAAG,UACpC,MAAoB,EACpB,OAA0B;;IAE1B,IAAI,MAAM,qBAAO,MAAM,OAAC,CAAC;IACzB,IAAI,UAAU,GAAU,EAAE,CAAC;IAE3B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAM,WAAS,GAAG,OAAO,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,UAAC,KAAK,EAAE,MAAM;YACxB,OAAA,OAAO,CAAC,MAAM,KAAK,OAAO;gBACxB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAS;gBAC7C,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,WAAS;QAFpC,CAEoC,CACrC,CAAC;IACJ,CAAC;IAED,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,CAAC,CAAC,EAAZ,CAAY,EAAE,CAAC,CAAC,CAAC;IAE5D,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACrE,IAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,GAAG,EAAR,CAAQ,CAAC,CAAC;QAC5C,wEAAwE;QACxE,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK;YAC3D,MAAM,CAAC,IAAI,CAAC;gBACV,CAAC,EAAE,oBAAY;gBACf,CAAC,EAAE,MAAA,IAAA,2BAAmB,EAAC,MAAM,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,CAAC,CAAC,EAAZ,CAAY,EAAE,CAAC,CAAC,CAAC,mCAAI,CAAC;gBAC1E,GAAG,EAAE,SAAS;aACf,CAAC,CAAC;IACP,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC;QACjE,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,uBACzB,IAAI,KACP,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAC3C,EAH4B,CAG5B,CAAC,CAAC;IAEN,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,SAAO,GAAG,CAAC,CAAC;QAChB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAC,IAAI;YACvB,SAAO,IAAI,IAAI,CAAC,CAAC,CAAC;YAClB,6BAAY,IAAI,KAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAO,GAAG,GAAG,CAAC,GAAG,GAAG,IAAG;QACzD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,YAAA,EAAE,CAAC;AACxC,CAAC,CAAC;AA9CW,QAAA,sBAAsB,0BA8CjC;AAEF;;;;;;GAMG;AACI,IAAM,mBAAmB,GAAG,UAAC,QAAgB,EAAE,GAAQ,IAAc,OAAA;IAC1E,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,IAAI,EAAE;CACrD,EAF2E,CAE3E,CAAC;AAFW,QAAA,mBAAmB,uBAE9B;AAQF;;;GAGG;AACI,IAAM,mBAAmB,GAAG,UACjC,MAAgB,EAChB,UAAqB;;IAErB,IAAM,QAAQ,GAAG,MAAM;SACpB,GAAG,CAAC,UAAC,CAAC,EAAE,KAAK,IAAK,OAAA,KAAK,EAAL,CAAK,CAAC;SACxB,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,UAAU,CAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC,CAAC;IACxC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAM,IAAI,GAAG,MAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,mCAAI,CAAC,CAAC;IACxD,IAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,mCAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,KAAK,CAAC;QAChB,OAAO,EAAE,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACpF,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAC3E,OAAO;QACL,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC7D,OAAO,SAAA;KACR,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,mBAAmB,uBAiB9B"}
@@ -1,6 +1,6 @@
1
1
  import { Option } from "../../input/select";
2
2
  import { DataStructure } from "../dataTemplate/model";
3
- import { Charts } from "../dataTemplate/spaceModel";
3
+ import { ChartHighlight, Charts } from "../dataTemplate/spaceModel";
4
4
  import { WorkspaceDevSettings } from "../dataTemplate/workspaceModel";
5
5
  import { Query } from "../readQuery";
6
6
  export interface ChartDrillDown {
@@ -16,6 +16,7 @@ interface Props {
16
16
  structure?: DataStructure[];
17
17
  personOptions?: Option[];
18
18
  onDrillDown?: (drillDown: ChartDrillDown) => void;
19
+ onHighlightRow?: (chart: Charts, row: string, highlight: Omit<ChartHighlight, "row"> | null) => void;
19
20
  }
20
21
  /**
21
22
  * A chart drawn from new-style options — group by any column, date buckets,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/data/dataGraph/index.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,MAAM,EAAU,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAc,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,KAAK,EAAa,MAAM,cAAc,CAAC;AA2BhD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IAGd,KAAK,EAAE,KAAK,EAAE,CAAC;CAChB;AAED,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;IAGlD,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAE5B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AA6CD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,UAAW,MAAM,YAEgB,CAAC;AAElE,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,OA09CrC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/data/dataGraph/index.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAU,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAc,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAEL,cAAc,EACd,MAAM,EACP,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,KAAK,EAAa,MAAM,cAAc,CAAC;AA6BhD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IAGd,KAAK,EAAE,KAAK,EAAE,CAAC;CAChB;AAED,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;IAGlD,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAE5B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,IAAI,CAAC;IAGlD,cAAc,CAAC,EAAE,CACf,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,IAAI,KAC1C,IAAI,CAAC;CACX;AA6CD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,UAAW,MAAM,YAEgB,CAAC;AAElE,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,OA0uDrC"}
@@ -85,6 +85,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
85
85
  exports.handleIsShapedChart = void 0;
86
86
  exports.DataGraph = DataGraph;
87
87
  var solid_1 = require("@heroicons/react/24/solid");
88
+ var outline_1 = require("@heroicons/react/24/outline");
88
89
  var axios_1 = __importDefault(require("axios"));
89
90
  var dayjs_1 = __importDefault(require("../../dayjs"));
90
91
  var react_1 = __importStar(require("react"));
@@ -98,6 +99,7 @@ var textButton_1 = require("../../action/textButton");
98
99
  var loading_1 = require("../../display/loading");
99
100
  var select_1 = require("../../input/select");
100
101
  var chartBuilder_1 = require("../dataTemplate/chartBuilder");
102
+ var spaceModel_1 = require("../dataTemplate/spaceModel");
101
103
  var readQuery_1 = require("../readQuery");
102
104
  var stories_1 = require("../stories");
103
105
  var utils_1 = require("../utils");
@@ -134,7 +136,11 @@ function DataGraph(props) {
134
136
  var _c = (0, react_1.useState)({}), graphAnalyticsError = _c[0], setGraphAnalyticsError = _c[1];
135
137
  var _d = (0, react_1.useState)({}), graphSeries = _d[0], setGraphSeries = _d[1];
136
138
  var _e = (0, react_1.useState)({}), retryCount = _e[0], setRetryCount = _e[1];
137
- var _f = (0, react_1.useState)({}), detailsOpen = _f[0], setDetailsOpen = _f[1];
139
+ // INFO: a chart reading again — after a filter or range change — keeps its
140
+ // last numbers on screen, dimmed, so they are not taken for the new ones
141
+ var _f = (0, react_1.useState)({}), reloading = _f[0], setReloading = _f[1];
142
+ var _g = (0, react_1.useState)(null), highlightBar = _g[0], setHighlightBar = _g[1];
143
+ var _h = (0, react_1.useState)({}), detailsOpen = _h[0], setDetailsOpen = _h[1];
138
144
  var oldGraphAnalyticsFilterRef = (0, react_1.useRef)({});
139
145
  // INFO: the latest load of each chart; an older answer arriving after a
140
146
  // newer one is dropped, so the builder preview never shows past settings
@@ -188,6 +194,15 @@ function DataGraph(props) {
188
194
  /* eslint-disable */
189
195
  }, [graphAnalyticsFilter]);
190
196
  /* eslint-enable */
197
+ // INFO: an open highlight bar closes on any click outside it; its own clicks
198
+ // and the button that opens it stop at themselves
199
+ (0, react_1.useEffect)(function () {
200
+ if (!highlightBar)
201
+ return;
202
+ var handleClose = function () { return setHighlightBar(null); };
203
+ window.addEventListener("click", handleClose);
204
+ return function () { return window.removeEventListener("click", handleClose); };
205
+ }, [highlightBar]);
191
206
  var handleIsGraphAnalyticsDataChanged = function (prevFilter, newFilter) {
192
207
  for (var key in newFilter) {
193
208
  if (!prevFilter[key] ||
@@ -841,6 +856,10 @@ function DataGraph(props) {
841
856
  case 0:
842
857
  sequence = ((_e = loadSequenceRef.current[eachChart.title]) !== null && _e !== void 0 ? _e : 0) + 1;
843
858
  loadSequenceRef.current[eachChart.title] = sequence;
859
+ setReloading(function (prev) {
860
+ var _a;
861
+ return (__assign(__assign({}, prev), (_a = {}, _a[eachChart.title] = true, _a)));
862
+ });
844
863
  data = undefined;
845
864
  series = undefined;
846
865
  error = undefined;
@@ -885,6 +904,10 @@ function DataGraph(props) {
885
904
  case 13:
886
905
  if (loadSequenceRef.current[eachChart.title] !== sequence)
887
906
  return [2 /*return*/];
907
+ setReloading(function (prev) {
908
+ var _a;
909
+ return (__assign(__assign({}, prev), (_a = {}, _a[eachChart.title] = false, _a)));
910
+ });
888
911
  setGraphAnalyticsData(function (prev) {
889
912
  var _a;
890
913
  return (__assign(__assign({}, prev), (_a = {}, _a[eachChart.title] = data, _a)));
@@ -1146,8 +1169,104 @@ function DataGraph(props) {
1146
1169
  handleUpdateChartData(index, dateRange);
1147
1170
  } }))));
1148
1171
  };
1172
+ // INFO: written out in full so Tailwind keeps every class in a consumer's build
1173
+ var HIGHLIGHT_ROW_CLASS = {
1174
+ red: "bg-red-50 text-red-700",
1175
+ amber: "bg-amber-50 text-amber-700",
1176
+ green: "bg-green-50 text-green-700",
1177
+ blue: "bg-blue-50 text-blue-700",
1178
+ purple: "bg-purple-50 text-purple-700",
1179
+ };
1180
+ var HIGHLIGHT_DOT_CLASS = {
1181
+ red: "bg-red-500",
1182
+ amber: "bg-amber-500",
1183
+ green: "bg-green-500",
1184
+ blue: "bg-blue-500",
1185
+ purple: "bg-purple-500",
1186
+ };
1187
+ var handleFindHighlight = function (item, row) { var _a; return ((_a = item.highlights) !== null && _a !== void 0 ? _a : []).find(function (each) { return each.row === row; }); };
1188
+ // INFO: the row's tint and weight, and the background its pinned label
1189
+ // needs so the tint carries under it
1190
+ var handleHighlightClass = function (item, row) {
1191
+ var _a;
1192
+ var highlight = handleFindHighlight(item, row);
1193
+ if (!highlight)
1194
+ return { row: "", label: "bg-white" };
1195
+ var colour = highlight.colour
1196
+ ? (_a = HIGHLIGHT_ROW_CLASS[highlight.colour]) !== null && _a !== void 0 ? _a : ""
1197
+ : "";
1198
+ var weight = highlight.bold ? "font-semibold" : "";
1199
+ return {
1200
+ row: "".concat(colour, " ").concat(weight),
1201
+ label: colour ? colour.split(" ")[0] : "bg-white",
1202
+ };
1203
+ };
1204
+ var handleSetHighlight = function (item, row, update) {
1205
+ var _a;
1206
+ setHighlightBar(null);
1207
+ (_a = props.onHighlightRow) === null || _a === void 0 ? void 0 : _a.call(props, item, row, update);
1208
+ };
1209
+ var renderHighlightBar = function (item, row) {
1210
+ var current = handleFindHighlight(item, row);
1211
+ return (react_1.default.createElement("div", {
1212
+ // INFO: opens beside the label, inside the row's own height — the card
1213
+ // clips what spills out of it, so a bar below the last row was cut off
1214
+ className: "absolute left-full top-1/2 z-20 ml-2 flex -translate-y-1/2 items-center gap-1.5 whitespace-nowrap rounded-md border border-gray-200 bg-white px-2 py-1 shadow-lg", "data-testid": "chart-highlight-bar", onClick: function (e) { return e.stopPropagation(); } },
1215
+ react_1.default.createElement("button", { type: "button", "aria-label": "Bold", className: "rounded px-1.5 text-sm font-bold ".concat((current === null || current === void 0 ? void 0 : current.bold) ? "bg-gray-200 text-gray-900" : "text-gray-600"), onClick: function () {
1216
+ return handleSetHighlight(item, row, {
1217
+ colour: current === null || current === void 0 ? void 0 : current.colour,
1218
+ bold: !(current === null || current === void 0 ? void 0 : current.bold) || undefined,
1219
+ });
1220
+ } }, "B"),
1221
+ spaceModel_1.CHART_HIGHLIGHT_COLOURS.map(function (eachColour) { return (react_1.default.createElement("button", { key: eachColour, type: "button", "aria-label": eachColour, className: "h-4 w-4 rounded-full ".concat(HIGHLIGHT_DOT_CLASS[eachColour], " ").concat((current === null || current === void 0 ? void 0 : current.colour) === eachColour
1222
+ ? "ring-2 ring-gray-400 ring-offset-1"
1223
+ : ""), onClick: function () {
1224
+ return handleSetHighlight(item, row, {
1225
+ colour: (current === null || current === void 0 ? void 0 : current.colour) === eachColour ? undefined : eachColour,
1226
+ bold: current === null || current === void 0 ? void 0 : current.bold,
1227
+ });
1228
+ } })); }),
1229
+ react_1.default.createElement("button", { type: "button", className: "ml-1 text-xs text-gray-500 hover:text-gray-800", onClick: function () { return handleSetHighlight(item, row, null); } }, "Clear")));
1230
+ };
1231
+ // INFO: a row's name — in the primary colour when it opens records, and with
1232
+ // the highlight control beside it for an editor
1233
+ var renderRowLabel = function (item, row, isClickable) {
1234
+ var isBarOpen = (highlightBar === null || highlightBar === void 0 ? void 0 : highlightBar.chart) === item.title && (highlightBar === null || highlightBar === void 0 ? void 0 : highlightBar.row) === row;
1235
+ return (react_1.default.createElement("span", { className: "relative inline-flex items-center gap-1.5" },
1236
+ react_1.default.createElement("span", { className: isClickable
1237
+ ? "text-primary-600 hover:underline"
1238
+ : "" }, row),
1239
+ props.onHighlightRow && row !== chartResults_1.OTHERS_LABEL && (react_1.default.createElement("button", { type: "button", "aria-label": "Highlight ".concat(row), className: "text-gray-400 hover:text-gray-700 ".concat(isBarOpen ? "" : "sm:opacity-0 sm:group-hover:opacity-100"), onClick: function (e) {
1240
+ e.stopPropagation();
1241
+ setHighlightBar(isBarOpen ? null : { chart: item.title, row: row });
1242
+ } },
1243
+ react_1.default.createElement(outline_1.SwatchIcon, { className: "h-3.5 w-3.5" }))),
1244
+ isBarOpen && renderHighlightBar(item, row)));
1245
+ };
1246
+ var renderChange = function (item, change) {
1247
+ if (!change)
1248
+ return "–";
1249
+ var arrow = change.direction === "up" ? "▲" : change.direction === "down" ? "▼" : "";
1250
+ var isGood = item.higherIsBetter === undefined || change.direction === "flat"
1251
+ ? undefined
1252
+ : (change.direction === "up") === item.higherIsBetter;
1253
+ var colour = isGood === undefined
1254
+ ? "text-gray-500"
1255
+ : isGood
1256
+ ? "text-green-600"
1257
+ : "text-red-600";
1258
+ var amount = change.percent === null
1259
+ ? change.direction === "flat"
1260
+ ? "0%"
1261
+ : "new"
1262
+ : "".concat(Math.abs(change.percent), "%");
1263
+ return (react_1.default.createElement("span", { className: "whitespace-nowrap ".concat(colour) },
1264
+ arrow ? "".concat(arrow, " ") : "",
1265
+ amount));
1266
+ };
1149
1267
  // INFO: the same points and segments turned on their side — one column per
1150
- // date bucket, one row per segment, each row and each date totalled
1268
+ // date bucket, one row per segment, each row and each date totalled, with
1269
+ // the last complete bucket against the one before it in Change
1151
1270
  var renderDatesAcrossTable = function (item, points, segments, handleFormat, showTotal) {
1152
1271
  var _a, _b, _c, _d;
1153
1272
  var canDrill = !!props.onDrillDown;
@@ -1158,33 +1277,50 @@ function DataGraph(props) {
1158
1277
  var rows = segments !== null && segments !== void 0 ? segments : [
1159
1278
  { name: measureLabel, data: points.map(function (eachPoint) { return eachPoint.y; }) },
1160
1279
  ];
1280
+ // INFO: a bucket whose end is still ahead is under way — its count is a
1281
+ // part-period, so it is marked and left out of Change
1282
+ var now = Date.now();
1283
+ var isComplete = points.map(function (eachPoint) {
1284
+ var _a, _b, _c;
1285
+ var end = ((_c = (_b = (_a = eachPoint.query) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : [])[1];
1286
+ return !end || (0, dayjs_1.default)(end).valueOf() <= now;
1287
+ });
1288
+ var showChange = points.length > 2 && !item.cumulative;
1161
1289
  // INFO: the row names stay in view while the dates scroll sideways
1162
- var pinnedClass = "sticky left-0 z-10 bg-white";
1290
+ var pinnedClass = "sticky left-0 z-10";
1163
1291
  var handleRowTotal = function (data) {
1164
1292
  return Math.round(data.reduce(function (sum, each) { return sum + each; }, 0) * 100) / 100;
1165
1293
  };
1166
1294
  return (react_1.default.createElement("table", { className: "min-w-full divide-y divide-gray-200 text-sm" },
1167
1295
  react_1.default.createElement("thead", null,
1168
1296
  react_1.default.createElement("tr", null,
1169
- react_1.default.createElement("th", { className: pinnedClass }),
1170
- points.map(function (eachPoint, pointIndex) { return (react_1.default.createElement("th", { key: "".concat(pointIndex, "-").concat(eachPoint.x), className: "whitespace-nowrap py-2 pl-4 text-right font-medium text-gray-500 ".concat(canDrill && eachPoint.query
1171
- ? "cursor-pointer hover:text-gray-900"
1172
- : ""), onClick: function () {
1297
+ react_1.default.createElement("th", { className: "".concat(pinnedClass, " bg-white") }),
1298
+ points.map(function (eachPoint, pointIndex) { return (react_1.default.createElement("th", { key: "".concat(pointIndex, "-").concat(eachPoint.x), className: "whitespace-nowrap py-2 pl-4 text-right font-medium ".concat(canDrill && eachPoint.query
1299
+ ? "cursor-pointer text-primary-600 hover:underline"
1300
+ : "text-gray-500"), onClick: function () {
1173
1301
  return eachPoint.query && handleDrillDown(item, eachPoint);
1174
- } }, eachPoint.x)); }),
1175
- showTotal && (react_1.default.createElement("th", { className: "py-2 pl-4 text-right font-medium text-gray-500" }, "Total")))),
1176
- react_1.default.createElement("tbody", { className: "divide-y divide-gray-100" }, rows.map(function (eachRow) { return (react_1.default.createElement("tr", { key: eachRow.name },
1177
- react_1.default.createElement("td", { className: "".concat(pinnedClass, " whitespace-nowrap py-2 pr-4 text-gray-600") }, eachRow.name),
1178
- points.map(function (eachPoint, pointIndex) {
1179
- var _a;
1180
- return (react_1.default.createElement("td", { key: "".concat(pointIndex, "-").concat(eachPoint.x), className: "py-2 pl-4 text-right text-gray-700" }, handleFormat((_a = eachRow.data[pointIndex]) !== null && _a !== void 0 ? _a : 0)));
1181
- }),
1182
- showTotal && (react_1.default.createElement("td", { className: "py-2 pl-4 text-right font-medium text-gray-900" }, handleFormat(handleRowTotal(eachRow.data)))))); })),
1302
+ } },
1303
+ eachPoint.x,
1304
+ !isComplete[pointIndex] && (react_1.default.createElement("span", { className: "block text-xs font-normal text-gray-400" }, "so far")))); }),
1305
+ showTotal && (react_1.default.createElement("th", { className: "py-2 pl-4 text-right font-medium text-gray-500" }, "Total")),
1306
+ showChange && (react_1.default.createElement("th", { className: "py-2 pl-4 text-right font-medium text-gray-500" }, "Change")))),
1307
+ react_1.default.createElement("tbody", { className: "divide-y divide-gray-100" }, rows.map(function (eachRow) {
1308
+ var highlight = handleHighlightClass(item, eachRow.name);
1309
+ return (react_1.default.createElement("tr", { key: eachRow.name, className: "group ".concat(highlight.row), "data-testid": "chart-row-".concat(eachRow.name) },
1310
+ react_1.default.createElement("td", { className: "".concat(pinnedClass, " ").concat(highlight.label, " whitespace-nowrap py-2 pr-4 ").concat(highlight.row ? "" : "text-gray-600") }, renderRowLabel(item, eachRow.name, false)),
1311
+ points.map(function (eachPoint, pointIndex) {
1312
+ var _a;
1313
+ return (react_1.default.createElement("td", { key: "".concat(pointIndex, "-").concat(eachPoint.x), className: "py-2 pl-4 text-right ".concat(highlight.row ? "" : "text-gray-700") }, handleFormat((_a = eachRow.data[pointIndex]) !== null && _a !== void 0 ? _a : 0)));
1314
+ }),
1315
+ showTotal && (react_1.default.createElement("td", { className: "py-2 pl-4 text-right font-medium text-gray-900" }, handleFormat(handleRowTotal(eachRow.data)))),
1316
+ showChange && (react_1.default.createElement("td", { className: "py-2 pl-4 text-right" }, renderChange(item, (0, chartResults_1.handleChangeSummary)(eachRow.data, isComplete))))));
1317
+ })),
1183
1318
  showTotal && segments && (react_1.default.createElement("tfoot", null,
1184
1319
  react_1.default.createElement("tr", { className: "border-t border-gray-300" },
1185
- react_1.default.createElement("td", { className: "".concat(pinnedClass, " py-2 pr-4 font-semibold text-gray-900") }, "Total"),
1320
+ react_1.default.createElement("td", { className: "".concat(pinnedClass, " bg-white py-2 pr-4 font-semibold text-gray-900") }, "Total"),
1186
1321
  points.map(function (eachPoint, pointIndex) { return (react_1.default.createElement("td", { key: "".concat(pointIndex, "-").concat(eachPoint.x), className: "py-2 pl-4 text-right font-semibold text-gray-900" }, handleFormat(eachPoint.y))); }),
1187
- react_1.default.createElement("td", { className: "py-2 pl-4 text-right font-semibold text-gray-900" }, handleFormat(handleRowTotal(points.map(function (eachPoint) { return eachPoint.y; })))))))));
1322
+ react_1.default.createElement("td", { className: "py-2 pl-4 text-right font-semibold text-gray-900" }, handleFormat(handleRowTotal(points.map(function (eachPoint) { return eachPoint.y; })))),
1323
+ showChange && (react_1.default.createElement("td", { className: "py-2 pl-4 text-right font-semibold" }, renderChange(item, (0, chartResults_1.handleChangeSummary)(points.map(function (eachPoint) { return eachPoint.y; }), isComplete)))))))));
1188
1324
  };
1189
1325
  var renderTableChart = function (item, points, index, customDate, segments) {
1190
1326
  var total = points.reduce(function (sum, eachPoint) { return sum + eachPoint.y; }, 0);
@@ -1203,17 +1339,19 @@ function DataGraph(props) {
1203
1339
  react_1.default.createElement("th", null),
1204
1340
  segments.map(function (eachSegment) { return (react_1.default.createElement("th", { key: eachSegment.name, className: "py-2 pl-4 text-right font-medium text-gray-500" }, eachSegment.name)); }),
1205
1341
  react_1.default.createElement("th", { className: "py-2 pl-4 text-right font-medium text-gray-500" }, "Total")))),
1206
- react_1.default.createElement("tbody", { className: "divide-y divide-gray-100" }, points.map(function (eachPoint, pointIndex) { return (react_1.default.createElement("tr", { key: "".concat(pointIndex, "-").concat(eachPoint.x), className: canDrill && eachPoint.query
1207
- ? "cursor-pointer hover:bg-gray-50"
1208
- : "", onClick: function () {
1209
- return eachPoint.query && handleDrillDown(item, eachPoint);
1210
- } },
1211
- react_1.default.createElement("td", { className: "py-2 pr-4 text-gray-600" }, eachPoint.x), segments === null || segments === void 0 ? void 0 :
1212
- segments.map(function (eachSegment) {
1213
- var _a;
1214
- return (react_1.default.createElement("td", { key: eachSegment.name, className: "py-2 pl-4 text-right text-gray-700" }, handleFormat((_a = eachSegment.data[pointIndex]) !== null && _a !== void 0 ? _a : 0)));
1215
- }),
1216
- react_1.default.createElement("td", { className: "py-2 pl-4 text-right font-medium text-gray-900" }, handleFormat(eachPoint.y)))); })),
1342
+ react_1.default.createElement("tbody", { className: "divide-y divide-gray-100" }, points.map(function (eachPoint, pointIndex) {
1343
+ var highlight = handleHighlightClass(item, eachPoint.x);
1344
+ var isClickable = canDrill && !!eachPoint.query;
1345
+ return (react_1.default.createElement("tr", { key: "".concat(pointIndex, "-").concat(eachPoint.x), "data-testid": "chart-row-".concat(eachPoint.x), className: "group ".concat(highlight.row, " ").concat(isClickable ? "cursor-pointer hover:bg-gray-50" : ""), onClick: function () {
1346
+ return eachPoint.query && handleDrillDown(item, eachPoint);
1347
+ } },
1348
+ react_1.default.createElement("td", { className: "py-2 pr-4 ".concat(highlight.row ? "" : "text-gray-600") }, renderRowLabel(item, eachPoint.x, isClickable)), segments === null || segments === void 0 ? void 0 :
1349
+ segments.map(function (eachSegment) {
1350
+ var _a;
1351
+ return (react_1.default.createElement("td", { key: eachSegment.name, className: "py-2 pl-4 text-right text-gray-700" }, handleFormat((_a = eachSegment.data[pointIndex]) !== null && _a !== void 0 ? _a : 0)));
1352
+ }),
1353
+ react_1.default.createElement("td", { className: "py-2 pl-4 text-right font-medium text-gray-900" }, handleFormat(eachPoint.y))));
1354
+ })),
1217
1355
  showTotal && !isPercent && (react_1.default.createElement("tfoot", null,
1218
1356
  react_1.default.createElement("tr", { className: "border-t border-gray-300" },
1219
1357
  react_1.default.createElement("td", { className: "py-2 pr-4 font-semibold text-gray-900" }, "Total"), segments === null || segments === void 0 ? void 0 :
@@ -1246,6 +1384,17 @@ function DataGraph(props) {
1246
1384
  var renderEachChart = function (eachChart, index) {
1247
1385
  var _a;
1248
1386
  var spanClass = (_a = GRID_SPAN_CLASS[eachChart.gridSize]) !== null && _a !== void 0 ? _a : "col-span-1";
1387
+ var hasNumbers = graphSeries[eachChart.title] !== undefined ||
1388
+ graphAnalyticsData[eachChart.title] !== undefined;
1389
+ var isReloading = !!reloading[eachChart.title] && hasNumbers;
1390
+ // INFO: the wrapper is always drawn and only its classes change, so the
1391
+ // chart inside is not remounted — and redrawn — as a reload starts and ends
1392
+ return (react_1.default.createElement("div", { className: "".concat(spanClass, " relative"), "aria-busy": isReloading, "data-testid": isReloading ? "chart-reloading" : undefined },
1393
+ react_1.default.createElement("div", { className: "h-full ".concat(isReloading ? "pointer-events-none opacity-50" : "") }, renderLoadedChart(eachChart, index, spanClass)),
1394
+ isReloading && (react_1.default.createElement("div", { className: "absolute right-3 top-3" },
1395
+ react_1.default.createElement(loading_1.Loading, { sizeClassName: "h-5 w-5" })))));
1396
+ };
1397
+ var renderLoadedChart = function (eachChart, index, spanClass) {
1249
1398
  var error = graphAnalyticsError[eachChart.title];
1250
1399
  if (error)
1251
1400
  return renderChartError(eachChart, error, spanClass);