@iapps/d2-web-sdk 1.1.8 → 1.1.12

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.
@@ -1,13 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseCoordinates = parseCoordinates;
4
+ function isGeoJsonPointLike(candidate) {
5
+ return (!!candidate &&
6
+ typeof candidate === 'object' &&
7
+ candidate.type === 'Point' &&
8
+ Array.isArray(candidate.coordinates));
9
+ }
4
10
  /**
5
11
  * Parses a coordinate value into a [longitude, latitude] pair of strings.
6
12
  *
7
- * Supported string inputs:
8
- * - "[39.319364,-6.069623]" // JSON-style
13
+ * Supported inputs:
14
+ * - "[39.319364,-6.069623]" // JSON-style string
9
15
  * - "39.319364,-6.069623" // comma-separated
10
16
  * - "39.319364 -6.069623" // space-separated
17
+ * - { type: "Point", coordinates: [39.192299, -6.164641] } // GeoJSON Point
11
18
  *
12
19
  * Returns:
13
20
  * - ["39.319364", "-6.069623"] when valid (lon, lat as strings)
@@ -17,48 +24,54 @@ exports.parseCoordinates = parseCoordinates;
17
24
  * - Follows GeoJSON convention: [longitude, latitude]
18
25
  * - Valid ranges: lon ∈ [-180, 180], lat ∈ [-90, 90]
19
26
  */
20
- function parseCoordinates(value) {
21
- if (!value)
22
- return null;
23
- const trimmed = value.trim();
24
- if (!trimmed)
27
+ function parseCoordinates(input) {
28
+ if (input == null)
25
29
  return null;
26
- const validateAndNormalizePair = (parts) => {
27
- if (parts.length !== 2)
30
+ const normalizeLonLatPair = (coordinateParts) => {
31
+ if (!coordinateParts || coordinateParts.length !== 2)
28
32
  return null;
29
- const lonText = parts[0].trim();
30
- const latText = parts[1].trim();
31
- if (!lonText || !latText)
33
+ const longitudeText = String(coordinateParts[0]).trim();
34
+ const latitudeText = String(coordinateParts[1]).trim();
35
+ if (!longitudeText || !latitudeText)
32
36
  return null;
33
- const lonNum = Number(lonText);
34
- const latNum = Number(latText);
35
- if (!Number.isFinite(lonNum) || !Number.isFinite(latNum)) {
37
+ const longitude = Number(longitudeText);
38
+ const latitude = Number(latitudeText);
39
+ if (!Number.isFinite(longitude) || !Number.isFinite(latitude))
36
40
  return null;
37
- }
38
- const isLonValid = lonNum >= -180 && lonNum <= 180;
39
- const isLatValid = latNum >= -90 && latNum <= 90;
40
- if (!isLonValid || !isLatValid) {
41
+ const isLongitudeValid = longitude >= -180 && longitude <= 180;
42
+ const isLatitudeValid = latitude >= -90 && latitude <= 90;
43
+ if (!isLongitudeValid || !isLatitudeValid)
41
44
  return null;
42
- }
43
- return [lonText, latText];
45
+ return [longitudeText, latitudeText];
44
46
  };
45
- if (trimmed.startsWith('[') && trimmed.endsWith(']')) {
46
- const inner = trimmed.slice(1, -1);
47
- const parts = inner.split(',');
48
- const result = validateAndNormalizePair(parts);
49
- if (result)
50
- return result;
47
+ // GeoJSON Point support
48
+ if (isGeoJsonPointLike(input)) {
49
+ const geoJsonCoordinates = input.coordinates;
50
+ return normalizeLonLatPair(geoJsonCoordinates);
51
+ }
52
+ // String-based input handling
53
+ if (typeof input !== 'string')
54
+ return null;
55
+ const trimmedInput = input.trim();
56
+ if (!trimmedInput)
57
+ return null;
58
+ // "[lon,lat]" format
59
+ if (trimmedInput.startsWith('[') && trimmedInput.endsWith(']')) {
60
+ const bracketContent = trimmedInput.slice(1, -1);
61
+ const commaSeparatedValues = bracketContent
62
+ .split(',')
63
+ .map((value) => value.trim());
64
+ return normalizeLonLatPair(commaSeparatedValues);
51
65
  }
52
- if (trimmed.includes(',')) {
53
- const parts = trimmed.split(',');
54
- const result = validateAndNormalizePair(parts);
55
- if (result)
56
- return result;
66
+ // "lon,lat" format
67
+ if (trimmedInput.includes(',')) {
68
+ const commaSeparatedValues = trimmedInput
69
+ .split(',')
70
+ .map((value) => value.trim());
71
+ return normalizeLonLatPair(commaSeparatedValues);
57
72
  }
58
- const spaceParts = trimmed.split(/\s+/);
59
- const result = validateAndNormalizePair(spaceParts);
60
- if (result)
61
- return result;
62
- return null;
73
+ // "lon lat" format
74
+ const spaceSeparatedValues = trimmedInput.split(/\s+/);
75
+ return normalizeLonLatPair(spaceSeparatedValues);
63
76
  }
64
77
  //# sourceMappingURL=form.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form.helper.js","sourceRoot":"","sources":["../../../../../../../../packages/dhis2-web-sdk/src/lib/modules/tracker/helpers/form.helper.ts"],"names":[],"mappings":";;AAgBA,4CAiDC;AAjED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,gBAAgB,CAAC,KAAqB;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,wBAAwB,GAAG,CAAC,KAAe,EAAmB,EAAE;QAClE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEpC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEhC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAEtC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAE/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC;QACnD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,CAAC;QAEjD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC9B,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"form.helper.js","sourceRoot":"","sources":["../../../../../../../../packages/dhis2-web-sdk/src/lib/modules/tracker/helpers/form.helper.ts"],"names":[],"mappings":"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"}
@@ -8,5 +8,10 @@ export declare class Pager {
8
8
  index?: number;
9
9
  pageOffset?: number;
10
10
  constructor(pager?: Partial<Pager>);
11
+ /**
12
+ * Backward + forward compatible:
13
+ * - legacy: skipPaging=true/false
14
+ * - updated: paging=false/true + page/pageSize
15
+ */
11
16
  getPagingQueryParams(): string;
12
17
  }
@@ -1,30 +1,70 @@
1
1
  "use strict";
2
+ // export class Pager {
3
+ // pageSize: number;
4
+ // pageCount?: number;
5
+ // page: number;
6
+ // paging: boolean;
7
+ // total?: number;
8
+ // index?: number;
9
+ // pageOffset?: number;
2
10
  var _Pager_instances, _Pager_getIndex, _Pager_getOffset;
3
11
  Object.defineProperty(exports, "__esModule", { value: true });
4
12
  exports.Pager = void 0;
5
13
  const tslib_1 = require("tslib");
14
+ // constructor(pager?: Partial<Pager>) {
15
+ // this.pageSize = pager?.pageSize || 50;
16
+ // this.page = pager?.page || 1;
17
+ // this.paging = pager?.paging ?? true;
18
+ // this.total = pager?.total;
19
+ // this.index = this.#getIndex();
20
+ // this.pageCount = pager?.pageCount;
21
+ // this.pageOffset = this.#getOffset();
22
+ // }
23
+ // #getIndex(): number {
24
+ // return this.page, this.pageSize * (this.page - 1);
25
+ // }
26
+ // #getOffset(): number {
27
+ // return (this.page - 1) * this.pageSize;
28
+ // }
29
+ // getPagingQueryParams(): string {
30
+ // if (!this.paging) {
31
+ // return 'skipPaging=true&paging=false';
32
+ // }
33
+ // return `page=${this.page || 1}&pageSize=${
34
+ // this.pageSize || 50
35
+ // }&skipPaging=false&totalPages=true`;
36
+ // }
37
+ // }
6
38
  class Pager {
7
39
  constructor(pager) {
8
- var _a;
40
+ var _a, _b, _c;
9
41
  _Pager_instances.add(this);
10
- this.pageSize = (pager === null || pager === void 0 ? void 0 : pager.pageSize) || 50;
11
- this.page = (pager === null || pager === void 0 ? void 0 : pager.page) || 1;
12
- this.paging = (_a = pager === null || pager === void 0 ? void 0 : pager.paging) !== null && _a !== void 0 ? _a : true;
42
+ this.pageSize = (_a = pager === null || pager === void 0 ? void 0 : pager.pageSize) !== null && _a !== void 0 ? _a : 50;
43
+ this.page = (_b = pager === null || pager === void 0 ? void 0 : pager.page) !== null && _b !== void 0 ? _b : 1;
44
+ this.paging = (_c = pager === null || pager === void 0 ? void 0 : pager.paging) !== null && _c !== void 0 ? _c : true;
13
45
  this.total = pager === null || pager === void 0 ? void 0 : pager.total;
14
- this.index = tslib_1.__classPrivateFieldGet(this, _Pager_instances, "m", _Pager_getIndex).call(this);
15
46
  this.pageCount = pager === null || pager === void 0 ? void 0 : pager.pageCount;
47
+ this.index = tslib_1.__classPrivateFieldGet(this, _Pager_instances, "m", _Pager_getIndex).call(this);
16
48
  this.pageOffset = tslib_1.__classPrivateFieldGet(this, _Pager_instances, "m", _Pager_getOffset).call(this);
17
49
  }
50
+ /**
51
+ * Backward + forward compatible:
52
+ * - legacy: skipPaging=true/false
53
+ * - updated: paging=false/true + page/pageSize
54
+ */
18
55
  getPagingQueryParams() {
56
+ var _a, _b;
19
57
  if (!this.paging) {
20
- return 'skipPaging=true';
58
+ return 'paging=false&skipPaging=true';
21
59
  }
22
- return `page=${this.page || 1}&pageSize=${this.pageSize || 50}&skipPaging=false&totalPages=true`;
60
+ const page = (_a = this.page) !== null && _a !== void 0 ? _a : 1;
61
+ const pageSize = (_b = this.pageSize) !== null && _b !== void 0 ? _b : 50;
62
+ return `paging=true&page=${page}&pageSize=${pageSize}&skipPaging=false&totalPages=true`;
23
63
  }
24
64
  }
25
65
  exports.Pager = Pager;
26
66
  _Pager_instances = new WeakSet(), _Pager_getIndex = function _Pager_getIndex() {
27
- return this.page, this.pageSize * (this.page - 1);
67
+ return this.pageSize * (this.page - 1);
28
68
  }, _Pager_getOffset = function _Pager_getOffset() {
29
69
  return (this.page - 1) * this.pageSize;
30
70
  };
@@ -1 +1 @@
1
- {"version":3,"file":"pager.model.js","sourceRoot":"","sources":["../../../../../../../packages/dhis2-web-sdk/src/lib/shared/models/pager.model.ts"],"names":[],"mappings":";;;;;AAAA,MAAa,KAAK;IAShB,YAAY,KAAsB;;;QAChC,IAAI,CAAC,QAAQ,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,KAAI,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,KAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,IAAI,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,+BAAA,IAAI,yCAAU,MAAd,IAAI,CAAY,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,+BAAA,IAAI,0CAAW,MAAf,IAAI,CAAa,CAAC;IACtC,CAAC;IAUD,oBAAoB;QAElB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED,OAAO,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,aAC3B,IAAI,CAAC,QAAQ,IAAI,EACnB,mCAAmC,CAAC;IACtC,CAAC;CACF;AArCD,sBAqCC;;IAjBG,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AACpD,CAAC;IAGC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"pager.model.js","sourceRoot":"","sources":["../../../../../../../packages/dhis2-web-sdk/src/lib/shared/models/pager.model.ts"],"names":[],"mappings":";AAAA,uBAAuB;AACvB,sBAAsB;AACtB,wBAAwB;AACxB,kBAAkB;AAClB,qBAAqB;AACrB,oBAAoB;AACpB,oBAAoB;AACpB,yBAAyB;;;;;AAEzB,0CAA0C;AAC1C,6CAA6C;AAC7C,oCAAoC;AACpC,2CAA2C;AAC3C,iCAAiC;AACjC,qCAAqC;AACrC,yCAAyC;AACzC,2CAA2C;AAC3C,MAAM;AAEN,0BAA0B;AAC1B,yDAAyD;AACzD,MAAM;AAEN,2BAA2B;AAC3B,8CAA8C;AAC9C,MAAM;AAEN,qCAAqC;AAErC,0BAA0B;AAC1B,+CAA+C;AAC/C,QAAQ;AAER,iDAAiD;AACjD,4BAA4B;AAC5B,2CAA2C;AAC3C,MAAM;AACN,IAAI;AAEJ,MAAa,KAAK;IAShB,YAAY,KAAsB;;;QAChC,IAAI,CAAC,QAAQ,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,mCAAI,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,mCAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,IAAI,CAAC;QAEpC,IAAI,CAAC,KAAK,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAC;QAElC,IAAI,CAAC,KAAK,GAAG,+BAAA,IAAI,yCAAU,MAAd,IAAI,CAAY,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,+BAAA,IAAI,0CAAW,MAAf,IAAI,CAAa,CAAC;IACtC,CAAC;IAUD;;;;OAIG;IACH,oBAAoB;;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,8BAA8B,CAAC;QACxC,CAAC;QAED,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,IAAI,mCAAI,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE,CAAC;QAErC,OAAO,oBAAoB,IAAI,aAAa,QAAQ,mCAAmC,CAAC;IAC1F,CAAC;CACF;AA5CD,sBA4CC;;IAtBG,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;IAGC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AACzC,CAAC"}