datastake-daf 0.6.750 → 0.6.752

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.
Files changed (28) hide show
  1. package/dist/components/index.js +118 -111
  2. package/dist/pages/index.js +307 -222
  3. package/dist/utils/index.js +24 -0
  4. package/package.json +1 -1
  5. package/src/@daf/core/components/DynamicForm/index.jsx +26 -11
  6. package/src/@daf/pages/Dashboards/SupplyChain/components/ChartsContainer/components/GenderDistribution/index.js +2 -2
  7. package/src/@daf/pages/Dashboards/SupplyChain/components/ChartsContainer/components/Identification/hook.js +1 -1
  8. package/src/@daf/pages/Dashboards/SupplyChain/components/SupplyChainMap/index.js +6 -1
  9. package/src/@daf/pages/Dashboards/UserDashboard/components/MineSites/helper.js +3 -3
  10. package/src/@daf/pages/Locations/MineSite/index.jsx +1 -1
  11. package/src/@daf/pages/Summary/Minesite/components/MineDetailsSection/index.js +51 -0
  12. package/src/@daf/pages/Summary/Minesite/components/MineSiteDetails/config.js +31 -37
  13. package/src/@daf/pages/Summary/Minesite/components/MineSiteDetails/index.js +4 -16
  14. package/src/@daf/pages/Summary/Minesite/components/StakeholderMapping/config.js +6 -6
  15. package/src/@daf/pages/Summary/Minesite/components/StakeholderMapping/helper.js +13 -16
  16. package/src/@daf/pages/Summary/Minesite/components/StakeholderMapping/index.js +3 -3
  17. package/src/@daf/pages/Summary/Minesite/index.jsx +15 -19
  18. package/src/@daf/pages/Summary/Operator/components/Governance/config.js +4 -4
  19. package/src/@daf/pages/Summary/Operator/components/Governance/helper.js +8 -11
  20. package/src/@daf/pages/Summary/Operator/components/Governance/index.js +9 -3
  21. package/src/@daf/pages/Summary/Operator/index.jsx +6 -4
  22. package/src/@daf/pages/Summary/components/InformationAvailability/components/Contributions/index.js +16 -5
  23. package/src/@daf/pages/Summary/components/InformationAvailability/components/InformationCompleteness/index.js +2 -3
  24. package/src/@daf/pages/Summary/components/InformationAvailability/index.js +7 -4
  25. package/src/@daf/pages/Summary/hook.js +3 -3
  26. package/src/constants/locales/en/translation.js +8 -0
  27. package/src/constants/locales/fr/translation.js +8 -0
  28. package/src/constants/locales/sp/translation.js +8 -0
@@ -10323,7 +10323,12 @@ function SupplyChainMap({
10323
10323
  },
10324
10324
  link: true,
10325
10325
  onClickLink: data => {
10326
- goTo(getRedirectLink(`/app/view/stakeholders/${data.datastakeId}`));
10326
+ const locationTypes = ['mineSite', 'village'];
10327
+ if (locationTypes.includes(data.type)) {
10328
+ goTo(getRedirectLink(`/app/view/locations/${data.datastakeId}`));
10329
+ } else {
10330
+ goTo(getRedirectLink(`/app/view/stakeholders/${data.datastakeId}`));
10331
+ }
10327
10332
  }
10328
10333
  })
10329
10334
  });
@@ -12152,7 +12157,7 @@ function useIdentification({
12152
12157
  return {
12153
12158
  title: "Products",
12154
12159
  items: values.map(val => ({
12155
- label: options.minerals.find(mineral => mineral.value === val.typeOfProduct)?.label || val.typeOfProduct,
12160
+ label: options?.minerals?.find(mineral => mineral.value === val.typeOfProduct)?.label || val.typeOfProduct,
12156
12161
  color: colors[allSeenProducts.indexOf(val.typeOfProduct) % colors.length],
12157
12162
  value: val.value.toLocaleString()
12158
12163
  }))
@@ -12807,7 +12812,7 @@ function GenderDistribution({
12807
12812
  return renderTooltipJsx({
12808
12813
  title: t("Role"),
12809
12814
  items: [{
12810
- label: options?.optionPositionSupplyChain.find(o => {
12815
+ label: options?.optionPositionSupplyChain?.find(o => {
12811
12816
  return o.value === item.key;
12812
12817
  }).label || item.key,
12813
12818
  value: data[item.key] || 0
@@ -12823,7 +12828,7 @@ function GenderDistribution({
12823
12828
  }))
12824
12829
  });
12825
12830
  }
12826
- const _config = config.find(c => c.key === item.key);
12831
+ const _config = config?.find(c => c.key === item.key);
12827
12832
  if (_config) {
12828
12833
  return renderTooltipJsx({
12829
12834
  title: t("Gender"),
@@ -13387,7 +13392,7 @@ const onClickLink = (data, getRedirectLink, activeTab, goTo, user) => {
13387
13392
  if (activeTab === "stakeholder") {
13388
13393
  switch (data.stakeholderType) {
13389
13394
  case "operator":
13390
- return goTo(getLink(`/app/summary/operators/${data?.datastakeId}`));
13395
+ return goTo(getLink(`/app/operator-summary/${data?.datastakeId}`));
13391
13396
  case "worker":
13392
13397
  return goTo(getLink(`/app/view/workers/${data?.datastakeId}`));
13393
13398
  default:
@@ -13397,7 +13402,7 @@ const onClickLink = (data, getRedirectLink, activeTab, goTo, user) => {
13397
13402
  if (activeTab === "event") {
13398
13403
  switch (data.category) {
13399
13404
  case "mineSite":
13400
- return goTo(getLink(`/app/summary/scl/${data?.datastakeId}`));
13405
+ return goTo(getLink(`/app/mine-summary/${data?.datastakeId}`));
13401
13406
  default:
13402
13407
  return goTo(getLink(`/app/view/locations/${data?.datastakeId}`));
13403
13408
  }
@@ -13406,7 +13411,7 @@ const onClickLink = (data, getRedirectLink, activeTab, goTo, user) => {
13406
13411
  case "mineSite":
13407
13412
  {
13408
13413
  const isOwnData = user?.company?.id === data?.authorId;
13409
- return goTo(`/app/summary/scl/${data?.datastakeId}${!isOwnData ? `?sourceId=${data?.authorId}` : ""}`);
13414
+ return goTo(`/app/mine-summary/${data?.datastakeId}${!isOwnData ? `?sourceId=${data?.authorId}` : ""}`);
13410
13415
  }
13411
13416
  case "area":
13412
13417
  return goTo(getLink(`/app/view/conflict-areas/${data?.datastakeId}`));
@@ -29369,21 +29374,27 @@ function DynamicForm({
29369
29374
  }
29370
29375
  }, [data]);
29371
29376
 
29372
- // Initialize default values for hidden fields
29377
+ // Initialize default values for hidden and disabled fields
29373
29378
  React.useEffect(() => {
29374
29379
  if (Object.keys(form).length > 0) {
29375
29380
  const updatedValues = {
29376
29381
  ...values
29377
29382
  };
29378
29383
  let hasChanges = false;
29384
+ const isEditMode = data && (data.id || data._id);
29379
29385
 
29380
- // Process all form fields to set default values for hidden fields
29386
+ // Process all form fields to set default values for hidden and disabled fields
29381
29387
  Object.keys(form).forEach(formKey => {
29382
29388
  Object.keys(form[formKey]).forEach(fieldKey => {
29383
29389
  const field = form[formKey][fieldKey];
29384
- if (field?.meta?.hidden === true && field?.meta?.defaultValue !== undefined) {
29385
- const fieldId = field.dataId || fieldKey;
29386
- if (!propHasValue(updatedValues[fieldId])) {
29390
+ const fieldId = field.dataId || fieldKey;
29391
+
29392
+ // Check if field is disabled
29393
+ const isDisabled = field?.meta?.disableEdit && typeof field?.meta?.disableEdit === 'object' ? isModal ? field.meta.disableEdit.create || field.meta.disableEdit.modal || field?.meta?.disableEdit?.edit && isEditMode : field.meta.disableEdit.create || field.meta.disableEdit.drawer || field?.meta?.disableEdit?.edit && isEditMode : field?.meta?.disableEdit;
29394
+
29395
+ // Set default value for hidden fields or disabled fields with default values
29396
+ if (field?.meta?.defaultValue !== undefined && !propHasValue(updatedValues[fieldId])) {
29397
+ if (field?.meta?.hidden === true || isDisabled) {
29387
29398
  updatedValues[fieldId] = field.meta.defaultValue;
29388
29399
  hasChanges = true;
29389
29400
  }
@@ -29396,7 +29407,7 @@ function DynamicForm({
29396
29407
  MainForm.setFieldsValue(updatedValues);
29397
29408
  }
29398
29409
  }
29399
- }, [form]);
29410
+ }, [form, data, isModal]);
29400
29411
  const setSelectedForm = id => {
29401
29412
  setForms(Forms.map(form => {
29402
29413
  id === form.id ? form.selected = true : form.selected = false;
@@ -29469,11 +29480,15 @@ function DynamicForm({
29469
29480
  }
29470
29481
  value = fileList;
29471
29482
  }
29472
- // Handle default values for hidden fields
29473
- if (input?.meta?.hidden === true && input?.meta?.defaultValue !== undefined && !propHasValue(value)) {
29474
- value = input.meta.defaultValue;
29475
- if (typeof path === 'string') {
29476
- dot__default["default"].str(path, value, values);
29483
+ // Handle default values for hidden fields and disabled fields
29484
+ if (input?.meta?.defaultValue !== undefined && !propHasValue(value)) {
29485
+ const isFieldHidden = input?.meta?.hidden === true;
29486
+ const isFieldDisabled = props.disabled || isDisabled;
29487
+ if (isFieldHidden || isFieldDisabled) {
29488
+ value = input.meta.defaultValue;
29489
+ if (typeof path === 'string') {
29490
+ dot__default["default"].str(path, value, values);
29491
+ }
29477
29492
  }
29478
29493
  }
29479
29494
  const config = {
@@ -35045,7 +35060,7 @@ const ProductionSitesTable = ({
35045
35060
  goTo: goTo,
35046
35061
  defaultActiveTab: "own",
35047
35062
  columns: columns,
35048
- data: data,
35063
+ data: data?.data,
35049
35064
  checkboxConfig: checkboxConfig,
35050
35065
  APP: APP,
35051
35066
  getApiBaseUrl: getApiBaseUrl,
@@ -35210,13 +35225,13 @@ const useSummary = ({
35210
35225
  }
35211
35226
  }, [params?.id, hasSelect, getOne, getMultiple, _partners, isPdf, id, filters]);
35212
35227
  React.useEffect(() => {
35213
- if (selectedItem && _partners !== undefined) {
35228
+ if ((selectedItem || params?.id) && _partners !== undefined) {
35214
35229
  const fetchSingleItem = async () => {
35215
35230
  setLoading(true);
35216
35231
  try {
35217
35232
  const {
35218
35233
  data
35219
- } = await service.getOne(selectedItem, {
35234
+ } = await service.getOne(selectedItem || params?.id, {
35220
35235
  sources: _partners
35221
35236
  });
35222
35237
  setSingleItemData(data);
@@ -35228,7 +35243,7 @@ const useSummary = ({
35228
35243
  };
35229
35244
  fetchSingleItem();
35230
35245
  }
35231
- }, [selectedItem, service, _partners]);
35246
+ }, [selectedItem, service, _partners, params?.id]);
35232
35247
  React.useEffect(() => {
35233
35248
  _setPartners(selectedPartners?.partners);
35234
35249
  }, [selectedPartners]);
@@ -35583,8 +35598,8 @@ const InformationCompleteness = ({
35583
35598
  }) => {
35584
35599
  const graphData = React.useMemo(() => {
35585
35600
  const keys = {
35586
- ownDataCompletion: data?.ownDataCompletion || 0,
35587
- consolidatedCompletion: data?.consolidatedCompletion || 0
35601
+ ownDataCompletion: typeof data?.percentage === "object" ? data?.percentage?.percentage : data?.percentage || 0,
35602
+ consolidatedCompletion: data?.consolidatedPercentage || 0
35588
35603
  };
35589
35604
  const _data = Object.keys(keys).map(key => {
35590
35605
  const item = keys[key];
@@ -35620,22 +35635,32 @@ const InformationCompleteness = ({
35620
35635
  const Contributions = ({
35621
35636
  data = {},
35622
35637
  loading = false,
35623
- t = () => {}
35638
+ t = () => {},
35639
+ partners = []
35624
35640
  }) => {
35641
+ const dataPoints = data?.datapointsByAuthor || {};
35642
+ const _data = React.useMemo(() => {
35643
+ return Object.keys(dataPoints).map(key => {
35644
+ return {
35645
+ name: partners?.find(partner => partner.id === key)?.name,
35646
+ datapoints: dataPoints[key]
35647
+ };
35648
+ });
35649
+ }, [dataPoints, partners]);
35625
35650
  return /*#__PURE__*/jsxRuntime.jsx(Widget, {
35626
35651
  title: t("Contributions"),
35627
35652
  className: "with-border-header h-w-btn-header",
35628
35653
  loading: loading,
35629
35654
  children: /*#__PURE__*/jsxRuntime.jsx(BarChart, {
35630
- data: data?.stakeholders || [],
35631
- xFieldKey: "completedDatapoints",
35632
- yFieldKey: "author",
35655
+ data: _data || [],
35656
+ xFieldKey: "datapoints",
35657
+ yFieldKey: "name",
35633
35658
  renderTooltipContent: (title, item) => {
35634
35659
  return {
35635
35660
  title: title,
35636
35661
  items: [{
35637
35662
  label: t("Datapoints"),
35638
- value: item?.[0]?.data?.completedDatapoints || 0
35663
+ value: item?.[0]?.data?.datapoints || 0
35639
35664
  }]
35640
35665
  };
35641
35666
  }
@@ -35646,15 +35671,18 @@ const Contributions = ({
35646
35671
  const InformationAvailability = ({
35647
35672
  selectedPartners = {},
35648
35673
  t = () => {},
35649
- id
35674
+ id,
35675
+ subject,
35676
+ partners
35650
35677
  }) => {
35651
35678
  const defaultFetchConfig = React.useMemo(() => ({
35652
- basepath: "analytics",
35653
- url: "/widgets/completeness",
35679
+ basepath: subject === "stakeholder" ? "stakeholder" : "location",
35680
+ url: `/completion/${id}`,
35654
35681
  defaultData: [],
35655
35682
  stop: selectedPartners?.loading,
35656
35683
  filters: {
35657
- datastakeId: id,
35684
+ // datastakeId: id,
35685
+ scope: subject === "stakeholder" ? "operatorInfo" : "locationInfo",
35658
35686
  sources: selectedPartners?.partners || []
35659
35687
  }
35660
35688
  }), [id, selectedPartners]);
@@ -35677,7 +35705,8 @@ const InformationAvailability = ({
35677
35705
  }), /*#__PURE__*/jsxRuntime.jsx(Contributions, {
35678
35706
  data: data,
35679
35707
  loading: loading,
35680
- t: t
35708
+ t: t,
35709
+ partners: partners
35681
35710
  })]
35682
35711
  })
35683
35712
  });
@@ -36324,25 +36353,25 @@ const TradeRelationships = ({
36324
36353
 
36325
36354
  const IconNodesConfig$1 = {
36326
36355
  beneficiaries: {
36327
- name: "nashiriki::beneficiaries",
36356
+ name: "Beneficiaries",
36328
36357
  icon: "CoinsHand",
36329
36358
  order: 3,
36330
36359
  emptyName: "no-beneficiaries"
36331
36360
  },
36332
36361
  boardMembers: {
36333
- name: "nashiriki::board-members",
36362
+ name: "Board Members",
36334
36363
  icon: "Users",
36335
36364
  order: 1,
36336
36365
  emptyName: "no-board-members"
36337
36366
  },
36338
36367
  management: {
36339
- name: "nashiriki::management",
36368
+ name: "Management",
36340
36369
  icon: "Filters",
36341
36370
  order: 2,
36342
36371
  emptyName: "no-management"
36343
36372
  },
36344
36373
  shareholders: {
36345
- name: "nashiriki::stakeholders",
36374
+ name: "Stakeholders",
36346
36375
  icon: "PercentCircle",
36347
36376
  order: 4,
36348
36377
  emptyName: "no-stakeholders"
@@ -36356,25 +36385,27 @@ const getGovernanceData = ({
36356
36385
  options,
36357
36386
  t,
36358
36387
  goTo,
36359
- selectedPartners
36388
+ selectedPartners,
36389
+ mainSubject
36360
36390
  }) => {
36361
36391
  const {
36362
36392
  sources,
36363
36393
  ...rest
36364
36394
  } = data;
36365
36395
  const _data = rest;
36396
+ const mainSubjectData = _data?.[mainSubject];
36366
36397
  return {
36367
- id: operatorData?.datastakeId || id,
36368
- name: t(operatorData?.name || ""),
36398
+ id: mainSubjectData?.datastakeId || id,
36399
+ name: mainSubjectData?.name || "",
36369
36400
  country: {
36370
- label: options?.countries?.find(country => country.value === operatorData?.country)?.label || "",
36401
+ label: findOptions(mainSubjectData?.country, options?.countries) || "",
36371
36402
  value: (operatorData?.country || "").toLowerCase() || ""
36372
36403
  },
36373
36404
  onClick: () => {
36374
36405
  goTo(`/app/view/operators/${operatorData?.datastakeId || id}`);
36375
36406
  },
36376
36407
  totalSources: selectedPartners?.partners?.length || 0,
36377
- children: Object.keys(_data)?.map((key, index) => {
36408
+ children: Object.keys(_data || {})?.filter(key => key !== mainSubject)?.map((key, index) => {
36378
36409
  return {
36379
36410
  id: key,
36380
36411
  name: t(IconNodesConfig$1[key]?.name),
@@ -36390,7 +36421,7 @@ const getGovernanceData = ({
36390
36421
  id: child?.datastakeId || "",
36391
36422
  name: child?.name || "",
36392
36423
  country: {
36393
- label: options?.countries?.find(country => country.value === child?.country)?.label || "",
36424
+ label: findOptions(child?.country, options?.countries) || "",
36394
36425
  value: (child?.country || "").toLowerCase() || ""
36395
36426
  },
36396
36427
  totalSources: child?.sources || 0,
@@ -36841,12 +36872,18 @@ const Governance = ({
36841
36872
  filters: {
36842
36873
  datastakeId: id,
36843
36874
  sources: selectedPartners?.partners || [],
36844
- coreSubject: "stakeholder"
36875
+ coreSubject: "stakeholder",
36876
+ metrics: {
36877
+ shareholders: ['shareholders'],
36878
+ boardMembers: ['boardMembers'],
36879
+ management: ['management'],
36880
+ beneficiaries: ['directBeneficiaries']
36881
+ }
36845
36882
  },
36846
36883
  defaultData: {},
36847
36884
  stop: selectedPartners?.loading
36848
36885
  };
36849
- }, [selectedPartners]);
36886
+ }, [selectedPartners, id]);
36850
36887
  const {
36851
36888
  data,
36852
36889
  loading
@@ -36861,7 +36898,8 @@ const Governance = ({
36861
36898
  options,
36862
36899
  t,
36863
36900
  goTo,
36864
- selectedPartners
36901
+ selectedPartners,
36902
+ mainSubject: "stakeholder"
36865
36903
  });
36866
36904
  }, [data, operatorData, options, t]);
36867
36905
  return /*#__PURE__*/jsxRuntime.jsx(Widget, {
@@ -36937,7 +36975,7 @@ const OperatorSummary = ({
36937
36975
  });
36938
36976
  return /*#__PURE__*/jsxRuntime.jsxs(DashboardLayout, {
36939
36977
  header: /*#__PURE__*/jsxRuntime.jsx(DAFHeader, {
36940
- title: t('Operator Summary'),
36978
+ title: hasSelect ? t("Operator Review") : (singleItemData?.name || "") + " " + t("Summary"),
36941
36979
  className: "with-border-header h-w-btn-header no-px-body",
36942
36980
  goBackTo: !hasSelect && goBack,
36943
36981
  addedHeaderFirst: true,
@@ -36999,13 +37037,15 @@ const OperatorSummary = ({
36999
37037
  selectedPartners: selectedPartners,
37000
37038
  t: t,
37001
37039
  id: params?.id || selectedItem,
37002
- data: hasSelect ? singleItemData : data,
37040
+ data: singleItemData,
37003
37041
  loading: loading
37004
37042
  }), /*#__PURE__*/jsxRuntime.jsx("section", {
37005
37043
  children: /*#__PURE__*/jsxRuntime.jsx(InformationAvailability, {
37006
37044
  selectedPartners: selectedPartners,
37007
37045
  t: t,
37008
- id: params?.id || selectedItem
37046
+ id: params?.id || selectedItem,
37047
+ subject: "stakeholder",
37048
+ partners: partners
37009
37049
  })
37010
37050
  }), /*#__PURE__*/jsxRuntime.jsx("section", {
37011
37051
  children: /*#__PURE__*/jsxRuntime.jsx(TradeRelationships, {
@@ -37015,7 +37055,7 @@ const OperatorSummary = ({
37015
37055
  options: options,
37016
37056
  goTo: goTo,
37017
37057
  getRedirectLink: getRedirectLink,
37018
- operatorData: hasSelect ? singleItemData : data
37058
+ operatorData: singleItemData
37019
37059
  })
37020
37060
  }), /*#__PURE__*/jsxRuntime.jsx("section", {
37021
37061
  children: /*#__PURE__*/jsxRuntime.jsx(Governance, {
@@ -37025,7 +37065,7 @@ const OperatorSummary = ({
37025
37065
  options: options,
37026
37066
  goTo: goTo,
37027
37067
  getRedirectLink: getRedirectLink,
37028
- operatorData: hasSelect ? singleItemData : data
37068
+ operatorData: singleItemData
37029
37069
  })
37030
37070
  })]
37031
37071
  });
@@ -41376,161 +41416,27 @@ const RestorationActivitySummary = ({
41376
41416
  });
41377
41417
  };
41378
41418
 
41379
- function getKeyIndicatorsConfig({
41380
- t,
41381
- data
41382
- }) {
41383
- return [{
41384
- label: t("Extraction Methods"),
41385
- render: () => {
41386
- if (!data?.extractionPoints?.length) {
41387
- return "-";
41388
- }
41389
- return /*#__PURE__*/jsxRuntime.jsx("div", {
41390
- style: {
41391
- display: "flex",
41392
- flexWrap: "wrap"
41393
- },
41394
- children: data?.extractionPoints?.map(method => {
41395
- return /*#__PURE__*/jsxRuntime.jsx(antd.Tag, {
41396
- style: {
41397
- marginBottom: 8
41398
- },
41399
- children: method
41400
- }, method);
41401
- })
41402
- });
41403
- }
41404
- }, {
41405
- label: t("Products"),
41406
- render: () => {
41407
- if (data?.productsOfLocation?.length === 0) {
41408
- return "-";
41409
- }
41410
- return /*#__PURE__*/jsxRuntime.jsx("div", {
41411
- style: {
41412
- display: "flex",
41413
- flexWrap: "wrap"
41414
- },
41415
- children: data?.productsOfLocation?.map(product => {
41416
- return /*#__PURE__*/jsxRuntime.jsx(antd.Tag, {
41417
- style: {
41418
- marginBottom: 8
41419
- },
41420
- color: getTagColor(product),
41421
- children: product
41422
- }, product);
41423
- })
41424
- });
41425
- }
41426
- }, {
41427
- label: t("Number of Workers on Site"),
41428
- render: () => {
41429
- if (!data.workers) {
41430
- return "-";
41431
- }
41432
- return data.workers;
41433
- }
41434
- }];
41435
- }
41436
-
41437
- const MineSiteDetails = ({
41438
- locationData = {},
41439
- loading = false,
41440
- t = () => {},
41441
- options = {}
41442
- }) => {
41443
- const data = React.useMemo(() => {
41444
- return {
41445
- extractionPoints: (locationData?.extractionMethod || []).map(method => {
41446
- const _method = options?.extractionMethodsOptions?.find(option => option.value === method)?.label;
41447
- return _method;
41448
- }),
41449
- products: ((locationData?.products || []).map(product => product.typeOfProduct) || []).map(product => {
41450
- const _product = options?.minerals?.find(option => option.value === product)?.label;
41451
- return _product;
41452
- }),
41453
- workers: locationData?.totalNumberOfWorkers || 0
41454
- };
41455
- }, [locationData, options]);
41456
- const config = React.useMemo(() => getKeyIndicatorsConfig({
41457
- t,
41458
- data
41459
- }), [t, data]);
41460
- return /*#__PURE__*/jsxRuntime.jsx(KeyIndicatorsWidget, {
41461
- title: t("Mine Site Details"),
41462
- className: "value-center small-content row-content-col",
41463
- config: config,
41464
- loading: loading,
41465
- widgetClassName: "custom-width-b"
41466
- });
41467
- };
41468
-
41469
- const LocationMap = ({
41470
- selectedPartners = {},
41471
- t = () => {},
41472
- params,
41473
- locationData = {},
41474
- loading = false
41475
- }) => {
41476
- const data = React.useMemo(() => {
41477
- return {
41478
- gps: locationData?.gps || {},
41479
- name: locationData?.name || "",
41480
- admin_level_01: locationData?.linking?.SCL?.[locationData?.administrativeLevel1]?.name || "",
41481
- admin_level_02: locationData?.linking?.SCL?.[locationData?.administrativeLevel2]?.name || "",
41482
- country: locationData?.country
41483
- };
41484
- }, [locationData]);
41485
- return /*#__PURE__*/jsxRuntime.jsx(Widget, {
41486
- title: t("Location"),
41487
- className: "no-px no-pb-body overflow-hidden",
41488
- loading: loading,
41489
- children: /*#__PURE__*/jsxRuntime.jsx(Map$1, {
41490
- showSider: false,
41491
- primaryLink: true,
41492
- mapConfig: {
41493
- maxZoom: 10
41494
- },
41495
- type: "location",
41496
- data: [data],
41497
- renderTooltip: () => {
41498
- data?.country;
41499
- const adminLevel1Label = t("Province");
41500
- const adminLevel2Label = t("Territory");
41501
- return [{
41502
- label: t(adminLevel1Label),
41503
- value: data?.admin_level_01 || "--"
41504
- }, {
41505
- label: t(adminLevel2Label),
41506
- value: data?.admin_level_02 || "--"
41507
- }];
41508
- }
41509
- })
41510
- });
41511
- };
41512
-
41513
41419
  const IconNodesConfig = {
41514
- operators: {
41515
- name: "nashiriki::Operators",
41420
+ operator: {
41421
+ name: "Operators",
41516
41422
  icon: "Worker",
41517
41423
  order: 1,
41518
41424
  emptyName: "no-operators"
41519
41425
  },
41520
- traders: {
41521
- name: "nashiriki::Traders",
41426
+ trader: {
41427
+ name: "Traders",
41522
41428
  icon: "Handshake",
41523
41429
  order: 2,
41524
41430
  emptyName: "no-traders"
41525
41431
  },
41526
41432
  government: {
41527
- name: "nashiriki::Government",
41433
+ name: "Government",
41528
41434
  icon: "KYC",
41529
41435
  order: 3,
41530
41436
  emptyName: "no-government"
41531
41437
  },
41532
41438
  other: {
41533
- name: "nashiriki::Other",
41439
+ name: "Other",
41534
41440
  icon: "CivilSociety",
41535
41441
  order: 4,
41536
41442
  emptyName: "no-other"
@@ -41544,22 +41450,24 @@ const getStakeholderMappingData = ({
41544
41450
  options,
41545
41451
  t,
41546
41452
  goTo,
41547
- selectedPartners
41453
+ selectedPartners,
41454
+ mainSubject
41548
41455
  }) => {
41549
41456
  const _data = data;
41457
+ const mainSubjectData = _data?.[mainSubject];
41550
41458
  return {
41551
- id: id,
41552
- name: locationData?.name || "",
41459
+ id: mainSubjectData?.datastakeId || "",
41460
+ name: mainSubjectData?.name || "",
41553
41461
  country: {
41554
- label: options?.countries?.find(country => country.value === locationData?.country)?.label || "",
41555
- value: (locationData?.country || "").toLowerCase() || ""
41462
+ label: findOptions(mainSubjectData?.country, options?.countries) || "",
41463
+ value: (mainSubjectData?.country || "").toLowerCase() || ""
41556
41464
  },
41557
- onClick: () => goTo(`/app/view/production-sites/${id}`),
41465
+ onClick: () => goTo(`/app/view/production-sites/${mainSubjectData?.datastakeId}`),
41558
41466
  totalSources: selectedPartners?.partners?.length || 0,
41559
41467
  backgroundColor: "#FFD6E7",
41560
41468
  iconColor: "#C41D7F",
41561
41469
  icon: "DashboardLocations",
41562
- children: Object.keys(_data)?.map((key, index) => {
41470
+ children: Object.keys(_data)?.filter(key => key !== mainSubject)?.map((key, index) => {
41563
41471
  return {
41564
41472
  id: key,
41565
41473
  name: t(IconNodesConfig[key]?.name),
@@ -41569,13 +41477,13 @@ const getStakeholderMappingData = ({
41569
41477
  iconHoverColor: "#fff",
41570
41478
  hoverColor: "#36cfca",
41571
41479
  content: _data[key].length,
41572
- emptyName: IconNodesConfig[key]?.emptyName ? t(`nashiriki::${IconNodesConfig[key]?.emptyName}`) : undefined,
41480
+ emptyName: IconNodesConfig[key]?.emptyName ? t(`${IconNodesConfig[key]?.emptyName}`) : undefined,
41573
41481
  children: (_data[key] || [])?.map(child => {
41574
41482
  return {
41575
41483
  id: child?.datastakeId || "",
41576
41484
  name: child?.name || "",
41577
41485
  country: {
41578
- label: options?.countries?.find(country => country.value === child?.country)?.label || "",
41486
+ label: findOptions(child?.country, options?.countries) || "",
41579
41487
  value: child?.country ? child?.country?.toLowerCase() : ""
41580
41488
  },
41581
41489
  icon: "DashboardStakeholder",
@@ -41587,8 +41495,8 @@ const getStakeholderMappingData = ({
41587
41495
  goTo(`/app/view/stakeholders/${child.datastakeId}`);
41588
41496
  },
41589
41497
  totalSources: child?.sources || 0,
41590
- tooltipHeader: t("nashiriki::link-details"),
41591
- tooltipLabel: t("nashiriki::sources-reporting"),
41498
+ tooltipHeader: t("link-details"),
41499
+ tooltipLabel: t("sources-reporting"),
41592
41500
  value: child?.sources || 0
41593
41501
  };
41594
41502
  })
@@ -41617,8 +41525,8 @@ const StakeholderMapping = ({
41617
41525
  coreSubject: "location",
41618
41526
  filterBySources: false,
41619
41527
  metrics: {
41620
- operator: ['operator'],
41621
- government: ['custom', 'governance'],
41528
+ operator: ['operator', 'operator.clientLocation'],
41529
+ government: ['custom.stakeholderId', 'governance'],
41622
41530
  trader: ['trade'],
41623
41531
  other: ['civilSociety', 'international']
41624
41532
  }
@@ -41639,7 +41547,8 @@ const StakeholderMapping = ({
41639
41547
  options,
41640
41548
  t,
41641
41549
  goTo,
41642
- selectedPartners
41550
+ selectedPartners,
41551
+ mainSubject: "mine"
41643
41552
  });
41644
41553
  }, [data, locationData, id, options, t, goTo, selectedPartners]);
41645
41554
  return /*#__PURE__*/jsxRuntime.jsx(Widget, {
@@ -41658,6 +41567,184 @@ const StakeholderMapping = ({
41658
41567
  });
41659
41568
  };
41660
41569
 
41570
+ function getKeyIndicatorsConfig({
41571
+ t,
41572
+ data
41573
+ }) {
41574
+ return [{
41575
+ label: t("Extraction Methods"),
41576
+ render: () => {
41577
+ const validExtractionPoints = data?.extractionPoints?.filter(Boolean) || [];
41578
+ if (validExtractionPoints?.length === 0 || !validExtractionPoints) {
41579
+ return "-";
41580
+ }
41581
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
41582
+ children: validExtractionPoints?.map((method, index) => {
41583
+ return /*#__PURE__*/jsxRuntime.jsxs(React__default["default"].Fragment, {
41584
+ children: [/*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
41585
+ title: method,
41586
+ children: /*#__PURE__*/jsxRuntime.jsx("span", {
41587
+ style: {
41588
+ fontWeight: "normal"
41589
+ },
41590
+ children: method
41591
+ })
41592
+ }), index < validExtractionPoints.length - 1 && ", "]
41593
+ }, method);
41594
+ })
41595
+ });
41596
+ }
41597
+ }, {
41598
+ label: t("Products"),
41599
+ render: () => {
41600
+ const validProducts = data?.products?.filter(Boolean) || [];
41601
+ if (validProducts?.length === 0 || !validProducts) {
41602
+ return "-";
41603
+ }
41604
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
41605
+ children: validProducts?.map((product, index) => {
41606
+ return /*#__PURE__*/jsxRuntime.jsxs(React__default["default"].Fragment, {
41607
+ children: [/*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
41608
+ title: product,
41609
+ children: /*#__PURE__*/jsxRuntime.jsx("span", {
41610
+ style: {
41611
+ fontWeight: "normal",
41612
+ color: getTagColor(product)
41613
+ },
41614
+ children: product
41615
+ })
41616
+ }), index < validProducts.length - 1 && ", "]
41617
+ }, product);
41618
+ })
41619
+ });
41620
+ }
41621
+ }, {
41622
+ label: t("Number of Workers on Site"),
41623
+ render: () => {
41624
+ if (!data.workers) {
41625
+ return 0;
41626
+ }
41627
+ return /*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
41628
+ title: data.workers,
41629
+ children: data.workers
41630
+ });
41631
+ }
41632
+ }];
41633
+ }
41634
+
41635
+ const MineSiteDetails = ({
41636
+ locationData = {},
41637
+ loading = false,
41638
+ t = () => {},
41639
+ options = {}
41640
+ }) => {
41641
+ const data = React.useMemo(() => {
41642
+ const products = locationData?.products?.map(product => product.typeOfProduct);
41643
+ return {
41644
+ extractionPoints: findOptions(locationData?.extractionMethod, options?.extractionMethodsOptions),
41645
+ products: findOptions(products, options?.mineralOptions),
41646
+ workers: locationData?.totalNumberOfWorkers || 0
41647
+ };
41648
+ }, [locationData, options]);
41649
+ const config = React.useMemo(() => getKeyIndicatorsConfig({
41650
+ t,
41651
+ data
41652
+ }), [t, data]);
41653
+ return /*#__PURE__*/jsxRuntime.jsx(KeyIndicatorsWidget, {
41654
+ title: t("Mine Site Details"),
41655
+ className: "value-center small-content row-content-col",
41656
+ config: config,
41657
+ loading: loading,
41658
+ widgetClassName: "custom-width-b"
41659
+ });
41660
+ };
41661
+
41662
+ const LocationMap = ({
41663
+ selectedPartners = {},
41664
+ t = () => {},
41665
+ params,
41666
+ locationData = {},
41667
+ loading = false
41668
+ }) => {
41669
+ const data = React.useMemo(() => {
41670
+ return {
41671
+ gps: locationData?.gps || {},
41672
+ name: locationData?.name || "",
41673
+ admin_level_01: locationData?.linking?.SCL?.[locationData?.administrativeLevel1]?.name || "",
41674
+ admin_level_02: locationData?.linking?.SCL?.[locationData?.administrativeLevel2]?.name || "",
41675
+ country: locationData?.country
41676
+ };
41677
+ }, [locationData]);
41678
+ return /*#__PURE__*/jsxRuntime.jsx(Widget, {
41679
+ title: t("Location"),
41680
+ className: "no-px no-pb-body overflow-hidden",
41681
+ loading: loading,
41682
+ children: /*#__PURE__*/jsxRuntime.jsx(Map$1, {
41683
+ showSider: false,
41684
+ primaryLink: true,
41685
+ mapConfig: {
41686
+ maxZoom: 10
41687
+ },
41688
+ type: "location",
41689
+ data: [data],
41690
+ renderTooltip: () => {
41691
+ data?.country;
41692
+ const adminLevel1Label = t("Province");
41693
+ const adminLevel2Label = t("Territory");
41694
+ return [{
41695
+ label: t(adminLevel1Label),
41696
+ value: data?.admin_level_01 || "--"
41697
+ }, {
41698
+ label: t(adminLevel2Label),
41699
+ value: data?.admin_level_02 || "--"
41700
+ }];
41701
+ }
41702
+ })
41703
+ });
41704
+ };
41705
+
41706
+ const MineDetailsSection = ({
41707
+ locationData = {},
41708
+ loading = false,
41709
+ t = () => {},
41710
+ options = {},
41711
+ selectedPartners = {},
41712
+ params = {}
41713
+ }) => {
41714
+ const defaultFetchConfig = React.useMemo(() => ({
41715
+ basepath: "analytics",
41716
+ url: '/widgets/mine-site-details',
41717
+ defaultData: [],
41718
+ stop: selectedPartners?.loading,
41719
+ filters: {
41720
+ datastakeId: locationData?.datastakeId,
41721
+ sources: selectedPartners?.partners || [],
41722
+ metrics: ['extractionMethod', 'products', 'totalNumberOfWorkers', 'gps', 'administrativeLevel1', 'administrativeLevel2'],
41723
+ filterBySources: false
41724
+ }
41725
+ }), [selectedPartners, locationData]);
41726
+ const {
41727
+ data,
41728
+ loading: loadingData
41729
+ } = useWidgetFetch({
41730
+ config: defaultFetchConfig
41731
+ });
41732
+ return /*#__PURE__*/jsxRuntime.jsxs("section", {
41733
+ children: [/*#__PURE__*/jsxRuntime.jsx(MineSiteDetails, {
41734
+ locationData: data,
41735
+ loading: loading || loadingData,
41736
+ t: t,
41737
+ options: options
41738
+ }), /*#__PURE__*/jsxRuntime.jsx(LocationMap, {
41739
+ selectedPartners: selectedPartners,
41740
+ t: t,
41741
+ params: params,
41742
+ locationData: data,
41743
+ loading: loading || loadingData
41744
+ })]
41745
+ });
41746
+ };
41747
+
41661
41748
  const MineSummary = ({
41662
41749
  hasSelect = false,
41663
41750
  loading = false,
@@ -41712,9 +41799,10 @@ const MineSummary = ({
41712
41799
  });
41713
41800
  return /*#__PURE__*/jsxRuntime.jsxs(DashboardLayout, {
41714
41801
  header: /*#__PURE__*/jsxRuntime.jsx(DAFHeader, {
41715
- title: t('Mine Summary'),
41802
+ title: hasSelect ? t("Mine Review") : (singleItemData?.name || "") + " " + t("Summary"),
41716
41803
  className: "with-border-header h-w-btn-header no-px-body",
41717
41804
  goBackTo: !hasSelect && goBack,
41805
+ loading: loading,
41718
41806
  addedHeaderFirst: true,
41719
41807
  actionButtons: [{
41720
41808
  tooltip: t("Details"),
@@ -41769,31 +41857,28 @@ const MineSummary = ({
41769
41857
  size: "small"
41770
41858
  }) : null
41771
41859
  })
41772
- }), /*#__PURE__*/jsxRuntime.jsxs("section", {
41773
- children: [/*#__PURE__*/jsxRuntime.jsx(MineSiteDetails, {
41774
- locationData: hasSelect ? singleItemData : data,
41775
- loading: loadingData,
41776
- t: t,
41777
- options: options
41778
- }), /*#__PURE__*/jsxRuntime.jsx(LocationMap, {
41779
- selectedPartners: selectedPartners,
41780
- t: t,
41781
- params: params,
41782
- locationData: hasSelect ? singleItemData : data,
41783
- loading: loadingData
41784
- })]
41860
+ }), /*#__PURE__*/jsxRuntime.jsx(MineDetailsSection, {
41861
+ locationData: singleItemData,
41862
+ loading: loadingData,
41863
+ t: t,
41864
+ options: options,
41865
+ selectedPartners: selectedPartners,
41866
+ params: params
41785
41867
  }), /*#__PURE__*/jsxRuntime.jsx("section", {
41786
41868
  children: /*#__PURE__*/jsxRuntime.jsx(InformationAvailability, {
41787
41869
  selectedPartners: selectedPartners,
41788
41870
  t: t,
41789
- id: params?.id || selectedItem
41871
+ id: params?.id || selectedItem,
41872
+ partners: partners
41790
41873
  })
41791
41874
  }), /*#__PURE__*/jsxRuntime.jsx("section", {
41792
41875
  children: /*#__PURE__*/jsxRuntime.jsx(StakeholderMapping, {
41793
41876
  selectedPartners: selectedPartners,
41794
41877
  t: t,
41795
41878
  id: params?.id || selectedItem,
41796
- locationData: hasSelect ? singleItemData : data
41879
+ locationData: singleItemData,
41880
+ goTo: goTo,
41881
+ options: options
41797
41882
  })
41798
41883
  })]
41799
41884
  });