@topconsultnpm/sdkui-react 6.19.0-dev1.15 → 6.19.0-dev1.17

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.
@@ -432,19 +432,15 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
432
432
  type: 'multi',
433
433
  onClick: async (selected) => {
434
434
  if (!selectedManyToManyRelation || !focusedItem?.TID || !focusedItem?.DID) {
435
- console.log('Missing required data');
436
435
  return;
437
436
  }
438
437
  const isMaster = currentSearchResults[0].fromTID === selectedManyToManyRelation.masterTID;
439
438
  const isDetail = currentSearchResults[0].fromTID === selectedManyToManyRelation.detailTID;
440
- console.log('isMaster:', isMaster, 'isDetail:', isDetail);
441
439
  if (!isMaster && !isDetail) {
442
- console.log('TID does not match');
443
440
  return;
444
441
  }
445
442
  const tms = SDK_Globals.tmSession;
446
443
  if (!tms) {
447
- console.log('No session');
448
444
  return;
449
445
  }
450
446
  const se = new SearchEngine(tms);
@@ -660,51 +656,48 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
660
656
  const archiveMasterDocuments = async (tid) => {
661
657
  await archiveRelatedDocuments(tid, 'master');
662
658
  };
663
- const getAlreadyPairedDIDs = async (relation, currentTID, currentDID) => {
659
+ const getPairedDocuments = async (relation, currentTID, currentDID, searchEngine) => {
664
660
  if (!relation || !currentDID)
665
- return [];
661
+ return null;
666
662
  try {
667
- const tmSession = SDK_Globals.tmSession;
668
- if (!tmSession)
669
- return [];
670
- const searchEngine = tmSession.NewSearchEngine();
671
- if (!searchEngine)
672
- return [];
673
663
  const isMaster = currentTID === relation.masterTID;
674
664
  const pairedResults = isMaster
675
665
  ? await searchEngine.GetAllDetailDcmtsAsync(currentTID, currentDID)
676
666
  : await searchEngine.GetAllMasterDcmtsAsync(currentTID, currentDID);
677
667
  if (!pairedResults || pairedResults.length === 0)
678
- return [];
668
+ return null;
679
669
  const relationResult = pairedResults.find(r => r.relationID === relation.id);
680
670
  if (!relationResult?.dtdResult)
681
- return [];
682
- const pairedDIDs = [];
683
- const rows = relationResult.dtdResult.rows ?? [];
684
- const columns = relationResult.dtdResult.columns ?? [];
685
- const didColumnIndex = columns.findIndex(col => {
686
- const caption = col.caption?.toUpperCase();
687
- const mid = col.extendedProperties?.["MID"];
688
- const midNum = typeof mid === 'string' ? Number.parseInt(mid, 10) : mid;
689
- return caption === 'DID' || midNum === 5;
690
- });
691
- if (didColumnIndex === -1)
692
- return [];
693
- for (const row of rows) {
694
- const did = row[didColumnIndex];
695
- if (did) {
696
- const didNumber = typeof did === 'string' ? Number.parseInt(did, 10) : did;
697
- if (!Number.isNaN(didNumber)) {
698
- pairedDIDs.push(didNumber);
699
- }
700
- }
701
- }
702
- return pairedDIDs;
671
+ return null;
672
+ return relationResult;
703
673
  }
704
674
  catch (error) {
705
- console.error('getAlreadyPairedDIDs - Error:', error);
675
+ console.error('getPairedDocuments - Error:', error);
676
+ return null;
677
+ }
678
+ };
679
+ const extractPairedDIDs = (relationResult) => {
680
+ const pairedDIDs = [];
681
+ const rows = relationResult.dtdResult?.rows ?? [];
682
+ const columns = relationResult.dtdResult?.columns ?? [];
683
+ const didColumnIndex = columns.findIndex(col => {
684
+ const caption = col.caption?.toUpperCase();
685
+ const mid = col.extendedProperties?.["MID"];
686
+ const midNum = typeof mid === 'string' ? Number.parseInt(mid, 10) : mid;
687
+ return caption === 'DID' || midNum === 5;
688
+ });
689
+ if (didColumnIndex === -1)
706
690
  return [];
691
+ for (const row of rows) {
692
+ const did = row[didColumnIndex];
693
+ if (did) {
694
+ const didNumber = typeof did === 'string' ? Number.parseInt(did, 10) : did;
695
+ if (!Number.isNaN(didNumber)) {
696
+ pairedDIDs.push(didNumber);
697
+ }
698
+ }
707
699
  }
700
+ return pairedDIDs;
708
701
  };
709
702
  const executeManyToManyPairing = async (relation, isPairing) => {
710
703
  const searchEngine = SDK_Globals.tmSession?.NewSearchEngine();
@@ -777,6 +770,7 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
777
770
  }
778
771
  }
779
772
  if (notMappedMIDs && qdRetrieveParamsValue.select && qdRetrieveParamsValue.select.length > 0) {
773
+ //HERE -> Fetch missing parameter values from the current document to use in the main query
780
774
  const paramMetadata = await searchEngine.SearchByIDAsync(qdRetrieveParamsValue);
781
775
  if (paramMetadata?.dtdResult?.rows?.[0]) {
782
776
  for (const param of qd.params) {
@@ -810,7 +804,6 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
810
804
  const targetTID = relation.detailTID === selectedSearchResult?.fromTID
811
805
  ? relation.masterTID
812
806
  : relation.detailTID;
813
- const qdWithSystemMIDs = structuredClone(qd);
814
807
  const systemSelects = [
815
808
  { tid: targetTID, mid: SystemMIDsAsNumber.DID, visibility: 0 },
816
809
  { tid: targetTID, mid: SystemMIDsAsNumber.TID, visibility: 0 },
@@ -823,13 +816,39 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
823
816
  { tid: targetTID, mid: SystemMIDsAsNumber.FileSize, visibility: 0 },
824
817
  { tid: targetTID, mid: SystemMIDsAsNumber.PageCount, visibility: 0 },
825
818
  ];
826
- if (qdWithSystemMIDs.select) {
827
- qdWithSystemMIDs.select = [...systemSelects, ...qdWithSystemMIDs.select];
819
+ if (qd.select) {
820
+ qd.select = [...systemSelects, ...qd.select];
828
821
  }
829
822
  else {
830
- qdWithSystemMIDs.select = systemSelects;
823
+ qd.select = systemSelects;
831
824
  }
832
- const sq = await searchEngine.SearchByIDAsync(qdWithSystemMIDs);
825
+ const pairedDocumentsResult = await getPairedDocuments(relation, focusedItem.TID, focusedItem.DID, searchEngine);
826
+ if (!isPairing) {
827
+ if (!pairedDocumentsResult?.dtdResult?.rows || pairedDocumentsResult.dtdResult.rows.length === 0) {
828
+ ShowAlert({
829
+ message: "Nessun documento abbinato trovato.",
830
+ mode: 'warning',
831
+ title: 'Operazione molti-a-molti',
832
+ duration: 5000
833
+ });
834
+ return;
835
+ }
836
+ const pairedSq = {
837
+ fromTID: targetTID,
838
+ fromName: await DcmtTypeListCacheService.GetAsync(targetTID).then(d => d?.name ?? ''),
839
+ dtdResult: pairedDocumentsResult.dtdResult,
840
+ selectMIDs: pairedDocumentsResult.selectMIDs,
841
+ relationID: relation.id,
842
+ dcmtsReturned: pairedDocumentsResult.dtdResult.rows.length,
843
+ dcmtsFound: pairedDocumentsResult.dtdResult.rows.length
844
+ };
845
+ setPairedSearchResults([pairedSq]);
846
+ setIsPairingManyToMany(isPairing);
847
+ setShowPairDcmtsModal(true);
848
+ return;
849
+ }
850
+ //HERE -> For pair mode, execute the query and filter out already paired documents
851
+ const sq = await searchEngine.SearchByIDAsync(qd);
833
852
  if (!sq?.dtdResult?.rows || sq.dtdResult.rows.length === 0) {
834
853
  ShowAlert({
835
854
  message: "Nessun documento trovato.",
@@ -839,16 +858,11 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
839
858
  });
840
859
  return;
841
860
  }
842
- const pairedDIDs = await getAlreadyPairedDIDs(relation, focusedItem.TID, focusedItem.DID);
861
+ const pairedDIDs = pairedDocumentsResult ? extractPairedDIDs(pairedDocumentsResult) : [];
843
862
  const filteredRows = sq.dtdResult.rows.filter(row => {
844
863
  const did = row[0];
845
- const didNum = typeof did === 'string' ? parseInt(did, 10) : did;
846
- if (isPairing) {
847
- return !pairedDIDs.includes(didNum);
848
- }
849
- else {
850
- return pairedDIDs.includes(didNum);
851
- }
864
+ const didNum = typeof did === 'string' ? Number.parseInt(did, 10) : did;
865
+ return !pairedDIDs.includes(didNum);
852
866
  });
853
867
  const filteredSq = {
854
868
  ...sq,
@@ -861,14 +875,13 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
861
875
  };
862
876
  if (filteredRows.length === 0) {
863
877
  ShowAlert({
864
- message: isPairing ? "Nessun documento da abbinare." : "Nessun documento abbinato trovato.",
878
+ message: "Nessun documento da abbinare. Tutti i documenti risultanti dalla query sono già abbinati.",
865
879
  mode: 'warning',
866
880
  title: 'Operazione molti-a-molti',
867
881
  duration: 5000
868
882
  });
869
883
  return;
870
884
  }
871
- console.log(filteredSq);
872
885
  setPairedSearchResults([filteredSq]);
873
886
  setIsPairingManyToMany(isPairing);
874
887
  setShowPairDcmtsModal(true);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topconsultnpm/sdkui-react",
3
- "version": "6.19.0-dev1.15",
3
+ "version": "6.19.0-dev1.17",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",