Ignore:
Timestamp:
2023-11-21T17:24:00+13:00 (7 months ago)
Author:
anupama
Message:
  1. Moved the code that processes which prepares user comments marked for deletion into documentedit_scripts_usercomments.js (out of documentedit_scripts_util.js). 2. Call to encodeDelimiters(metaval) when preparing user comments to be edited, to match what document editing code does.
Location:
main/trunk/greenstone3/web/interfaces/default/js
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/default/js/documentedit_scripts_usercomments.js

    r38411 r38422  
    11/** Javascript file for editing and especially deleting user comments in a documentediting situation */
    22
    3 // Skeleton function that may be called by documentedit_scripts_util.js when saving and rebuilding.
    4 // This function should return all the doc sections' (actually only root section's) usercomments data so that
    5 // setArchivesMetadata can be called for root section and the entire collection rebuilt with the changes
     3// Function called by documentedit_scripts_util.js when saving and rebuilding.
     4// This function should return usercomments data (only exists for doc root's section) so that
     5// setMetadataArray can be called for doc root and the entire collection rebuilt with the changes
    66function getUserCommentsEditDataForSaving(userCommentsMetaFields, userCommentsRowsChanged) {
    77    // https://medium.com/@martin.crabtree/javascript-tracking-key-value-pairs-using-hashmaps-7de6df598257
     
    2020    var metaval = changedElem.value; //changedElem.textContent; // gets orig value
    2121    metaval = metaval.replace(/ /g, " "); // copied from docedit_scripts_utl, when procsesing the array called changes.
     22    metaval = encodeDelimiters(metaval);
    2223   
    2324    var currentElem = changedElem;
     
    6263    }
    6364   
     65    return docArray;
     66}
     67
     68// Function called by documentedit_scripts_util.js when saving and rebuilding.
     69// This function should return usercomments data (only exists for doc root's section) so that
     70// removeMetadataArray can be called for doc root and the collection rebuilt with the deletions
     71function getUserCommentsDeletions(userCommentsMetaFields, docids_to_delCommentsMetapositions) {
     72   
     73    var docids = Object.keys(docids_to_delCommentsMetapositions);
     74    var docArray = [];
     75    for(i = 0; i < docids.length; i++) { //if(docids.length > 0) {
     76      var _docid = docids[i];
     77      var delCommentsMetapositions = docids_to_delCommentsMetapositions[_docid];
     78     
     79
     80      // build up the data structure for all the usercomments to be deleted
     81      if(delCommentsMetapositions.length > 0) {
     82      //console.log("About to delete position: " + delCommentsMetapositions);
     83      var timestamp_rec = {
     84          metaname: userCommentsMetaFields[0],
     85          metapositions: delCommentsMetapositions
     86      };
     87      var username_rec = {
     88          metaname: userCommentsMetaFields[1],
     89          metapositions: delCommentsMetapositions
     90      };   
     91      var comment_rec = {
     92          metaname: userCommentsMetaFields[2],
     93          metapositions: delCommentsMetapositions
     94      };
     95   
     96   
     97      var doc_rec = {
     98          docid: _docid,
     99          metatable: [username_rec, timestamp_rec, comment_rec]
     100      };
     101
     102      docArray.push(doc_rec);   
     103      }
     104    }
     105
    64106    return docArray;
    65107}
  • main/trunk/greenstone3/web/interfaces/default/js/documentedit_scripts_util.js

    r38411 r38422  
    480480        docids_to_delCommentsMetapositions[docID].push(metapos);
    481481       
    482        
    483482        //console.log("docID : " + docID + " - metapos: " + metapos);
    484483    }
     
    502501    }
    503502
    504     var docids = Object.keys(docids_to_delCommentsMetapositions);
    505     var docArray = [];
    506     for(i = 0; i < docids.length; i++) { //if(docids.length > 0) {
    507       var _docid = docids[i];
    508       var delCommentsMetapositions = docids_to_delCommentsMetapositions[_docid];
    509      
    510 
    511       // build up the data structure for all the usercomments to be deleted
    512       if(delCommentsMetapositions.length > 0) {
    513       //console.log("About to delete position: " + delCommentsMetapositions);
    514       var timestamp_rec = {
    515           metaname: userCommentsMetaFields[0],
    516           metapositions: delCommentsMetapositions
    517       };
    518       var username_rec = {
    519           metaname: userCommentsMetaFields[1],
    520           metapositions: delCommentsMetapositions
    521       };   
    522       var comment_rec = {
    523           metaname: userCommentsMetaFields[2],
    524           metapositions: delCommentsMetapositions
    525       };
    526    
    527    
    528       var doc_rec = {
    529           docid: _docid,
    530           metatable: [username_rec, timestamp_rec, comment_rec]
    531       };
    532 
    533       docArray.push(doc_rec);   
    534       }
    535     }
    536 
    537     if(docArray.length > 0) {// or if(docids.length > 0)
     503    // we can now process the deleted user comments, by organizing them into a single JSON
     504    // so that a single call to removeMetadataArray can delete them all more efficiently
     505    var docArray = getUserCommentsDeletions(
     506    userCommentsMetaFields, docids_to_delCommentsMetapositions);
     507   
     508    if(docArray.length > 0) {
    538509    metadataChanges.push({type:'deleteUserComments', docArray:docArray});
    539510    addCollectionToBuild(collection);
     
    542513    docArray = [];
    543514    docids_to_delCommentsMetapositions = {};
    544     docids = [];
     515
    545516  }
    546517
Note: See TracChangeset for help on using the changeset viewer.