2828
2929<script>
3030 const isBulkSubmitPage = <?= $ isBulkSubmitPage ? 'true ' : 'false ' ?> ;
31- let l1Relations = {missingTranslatedReferences: {}, originalReferences: {}};
32- let l2Relations = {missingTranslatedReferences: {}, originalReferences: {}};
31+ let l1Relations = {originalReferences: {}};
32+ let l2Relations = {originalReferences: {}};
3333 let globalButton;
3434</script>
3535
141141 </td>
142142 </tr>
143143 <tr id="relationsInfo">
144- <th>New content to be uploaded:</th>
144+ <th>Related content to be uploaded:</th>
145145 <td id="relatedContent">
146146 </td>
147147 </tr>
@@ -387,38 +387,27 @@ function (i, e) {
387387 minDate: 0
388388 });
389389
390- const mergeRelations = function mergeRelations(a, b) {
391- a = a || {};
392- b = b || {};
393- const result = JSON.parse(JSON.stringify(a));
394- for (const blogId in b) {
395- if (!result.hasOwnProperty(blogId)) {
396- result[blogId] = {};
397- }
398- for (const type in b[blogId]) {
399- if (!result[blogId].hasOwnProperty(type)) {
400- result[blogId][type] = [];
401- }
402- result[blogId][type] = result[blogId][type].concat(b[blogId][type]).filter((value, index, self) => self.indexOf(value) === index);
403- }
404- }
405-
406- return result;
407- }
408-
409390 const recalculateRelations = function recalculateRelations() {
410- $("#relatedContent").html("");
391+ const relatedContent = $("#relatedContent");
392+ relatedContent.html("");
411393 const relations = {};
412- let missingRelations = {};
394+ let allRelations = {};
413395 const cloneDepth = $('#cloneDepth').val();
414396 switch (cloneDepth) {
415397 case "0":
416398 return;
417399 case "1":
418- missingRelations = l1Relations.missingTranslatedReferences ;
400+ allRelations = l1Relations.originalReferences ;
419401 break;
420402 case "2":
421- missingRelations = mergeRelations(l1Relations.missingTranslatedReferences, l2Relations.missingTranslatedReferences);
403+ allRelations = {...l1Relations.originalReferences};
404+ for (const type in l2Relations.originalReferences) {
405+ if (allRelations[type]) {
406+ allRelations[type] = [...new Set([...allRelations[type], ...l2Relations.originalReferences[type]])];
407+ } else {
408+ allRelations[type] = l2Relations.originalReferences[type];
409+ }
410+ }
422411 break;
423412 default:
424413 console.error(`Unsupported clone depth value: ${cloneDepth}`);
@@ -430,20 +419,17 @@ function (i, e) {
430419 }
431420 return html;
432421 };
433- $(".job-wizard input.mcheck[type=checkbox]:checked").each(function () {
434- const blogId = this.dataset.blogId;
435- if (missingRelations && missingRelations.hasOwnProperty(blogId)) {
436- for (const sysType in missingRelations[blogId]) {
437- let sysCount = missingRelations[blogId][sysType].length;
438- if (relations.hasOwnProperty(sysType)) {
439- relations[sysType] += sysCount;
440- } else {
441- relations[sysType] = sysCount;
442- }
443- $("#relatedContent").html(buildRelationsHint(relations));
422+ if (allRelations && Object.keys(allRelations).length > 0) {
423+ for (const sysType in allRelations) {
424+ let sysCount = allRelations[sysType].length;
425+ if (relations.hasOwnProperty(sysType)) {
426+ relations[sysType] += sysCount;
427+ } else {
428+ relations[sysType] = sysCount;
444429 }
445430 }
446- });
431+ relatedContent.html(buildRelationsHint(relations));
432+ }
447433 };
448434
449435 const loadRelations = function loadRelations(contentType, contentId, level = 1) {
@@ -464,16 +450,10 @@ function (i, e) {
464450 case 2:
465451 const originalReferences = data.response.data.originalReferences;
466452 for (const relatedType in originalReferences) {
467- for (const relatedId of originalReferences[relatedType]) {
468- if (!l2Relations.originalReferences.hasOwnProperty(relatedType)) {
469- l2Relations.originalReferences[relatedType] = [];
470- }
471- l2Relations.originalReferences[relatedType] = l2Relations.originalReferences[relatedType].concat(originalReferences[relatedType]);
453+ if (!l2Relations.originalReferences.hasOwnProperty(relatedType)) {
454+ l2Relations.originalReferences[relatedType] = [];
472455 }
473- l2Relations.missingTranslatedReferences = mergeRelations(
474- l2Relations.missingTranslatedReferences,
475- data.response.data.missingTranslatedReferences,
476- );
456+ l2Relations.originalReferences[relatedType] = l2Relations.originalReferences[relatedType].concat(originalReferences[relatedType]);
477457 }
478458 break;
479459 }
@@ -547,12 +527,29 @@ function (i, e) {
547527 };
548528
549529 if (!isBulkSubmitPage) {
530+ const prepareRequest = (originalRefs) => {
531+ const result = {};
532+ $(".job-wizard input.mcheck[type=checkbox]:checked").each(function () {
533+ const blogId = this.dataset.blogId;
534+ result[blogId] = originalRefs;
535+ });
536+ return result;
537+ };
538+
550539 switch ($('#cloneDepth').val()) {
551540 case "1":
552- data.relations = {1: l1Relations.missingTranslatedReferences} ;
541+ data.relations = prepareRequest( l1Relations.originalReferences) ;
553542 break;
554543 case "2":
555- data.relations = {1: l1Relations.missingTranslatedReferences, 2: l2Relations.missingTranslatedReferences}
544+ const mergedOriginal = {...l1Relations.originalReferences};
545+ for (const type in l2Relations.originalReferences) {
546+ if (mergedOriginal[type]) {
547+ mergedOriginal[type] = [...new Set([...mergedOriginal[type], ...l2Relations.originalReferences[type]])];
548+ } else {
549+ mergedOriginal[type] = l2Relations.originalReferences[type];
550+ }
551+ }
552+ data.relations = prepareRequest(mergedOriginal);
556553 break;
557554 }
558555 }
0 commit comments