socialPane.js
function triageFriends (s) {
      outgoing = kb.each(s, foaf('knows'))
      incoming = kb.each(undefined, foaf('knows'), s) // @@ have to load the friends
      var confirmed = []
      var unconfirmed = []
      var requests = []

      for (let i = 0; i < outgoing.length; i++) {
        let friend = outgoing[i]
        let found = false
        for (let j = 0; j < incoming.length; j++) {
          if (incoming[j].sameTerm(friend)) {
            found = true
            break
          }
        }
        if (found) confirmed.push(friend)
        else unconfirmed.push(friend)
      } // outgoing

      for (let i = 0; i < incoming.length; i++) {
        let friend = incoming[i]
        // var lab = UI.utils.label(friend)
        let found = false
        for (let j = 0; j < outgoing.length; j++) {
          if (outgoing[j].sameTerm(friend)) {
            found = true
            break
          }
        }
        if (!found) requests.push(friend)
      } // incoming

      var cases = [['Acquaintances', outgoing], ['Mentioned as acquaintances by: ', requests]]
      for (let i = 0; i < cases.length; i++) {
        let thisCase = cases[i]
        let friends = thisCase[1]
        if (friends.length === 0) continue // Skip empty sections (sure?)

        let h3 = dom.createElement('h3')
        h3.textContent = thisCase[0]
        let htr = dom.createElement('tr')
        htr.appendChild(h3)
        mainTable.appendChild(htr)

        var items = []
        for (var j9 = 0; j9 < friends.length; j9++) {
          items.push([UI.utils.label(friends[j9]), friends[j9]])
        }
        items.sort()
        var last = null
        var fr
        for (var j7 = 0; j7 < items.length; j7++) {
          fr = items[j7][1]
          if (fr.sameTerm(last)) continue // unique
          last = fr
          if (UI.utils.label(fr) !== '...') { // This check is to avoid bnodes with no labels attached
            // appearing in the friends list with "..." - Oshani
            mainTable.appendChild(oneFriend(fr))
          }
        }
      }
    }
function triageFriends (s) {
      outgoing = kb.each(s, foaf('knows'))
      incoming = kb.each(undefined, foaf('knows'), s) // @@ have to load the friends
      var confirmed = []
      var unconfirmed = []
      var requests = []

      for (let i = 0; i < outgoing.length; i++) {
        let friend = outgoing[i]
        let found = false
        for (let j = 0; j < incoming.length; j++) {
          if (incoming[j].sameTerm(friend)) {
            found = true
            break
          }
        }
        if (found) confirmed.push(friend)
        else unconfirmed.push(friend)
      } // outgoing

      for (let i = 0; i < incoming.length; i++) {
        let friend = incoming[i]
        // var lab = UI.utils.label(friend)
        let found = false
        for (let j = 0; j < outgoing.length; j++) {
          if (outgoing[j].sameTerm(friend)) {
            found = true
            break
          }
        }
        if (!found) requests.push(friend)
      } // incoming

      var cases = [['Acquaintances', outgoing], ['Mentioned as acquaintances by: ', requests]]
      for (let i = 0; i < cases.length; i++) {
        let thisCase = cases[i]
        let friends = thisCase[1]
        if (friends.length === 0) continue // Skip empty sections (sure?)

        let h3 = dom.createElement('h3')
        h3.textContent = thisCase[0]
        let htr = dom.createElement('tr')
        htr.appendChild(h3)
        mainTable.appendChild(htr)

        var items = []
        for (var j9 = 0; j9 < friends.length; j9++) {
          items.push([UI.utils.label(friends[j9]), friends[j9]])
        }
        items.sort()
        var last = null
        var fr
        for (var j7 = 0; j7 < items.length; j7++) {
          fr = items[j7][1]
          if (fr.sameTerm(last)) continue // unique
          last = fr
          if (UI.utils.label(fr) !== '...') { // This check is to avoid bnodes with no labels attached
            // appearing in the friends list with "..." - Oshani
            mainTable.appendChild(oneFriend(fr))
          }
        }
      }
    }
function triageFriends ( s ) { outgoing = kb . each ( s , foaf ( 'knows' ) ) incoming = kb . each ( undefined , foaf ( 'knows' ) , s ) // @@ have to load the friends var confirmed = [ ] var unconfirmed = [ ] var requests = [ ] for ( let i = 0 ; i < outgoing . length ; i ++ ) { let friend = outgoing [ i ] let found = false for ( let j = 0 ; j < incoming . length ; j ++ ) { if ( incoming [ j ] . sameTerm ( friend ) ) { found = true break } } if ( found ) confirmed . push ( friend ) else unconfirmed . push ( friend ) } // outgoing for ( let i = 0 ; i < incoming . length ; i ++ ) { let friend = incoming [ i ] // var lab = UI.utils.label(friend) let found = false for ( let j = 0 ; j < outgoing . length ; j ++ ) { if ( outgoing [ j ] . sameTerm ( friend ) ) { found = true break } } if ( ! found ) requests . push ( friend ) } // incoming var cases = [ [ 'Acquaintances' , outgoing ] , [ 'Mentioned as acquaintances by: ' , requests ] ] for ( let i = 0 ; i < cases . length ; i ++ ) { let thisCase = cases [ i ] let friends = thisCase [ 1 ] if ( friends . length === 0 ) continue // Skip empty sections (sure?) let h3 = dom . createElement ( 'h3' ) h3 . textContent = thisCase [ 0 ] let htr = dom . createElement ( 'tr' ) htr . appendChild ( h3 ) mainTable . appendChild ( htr ) var items = [ ] for ( var j9 = 0 ; j9 < friends . length ; j9 ++ ) { items . push ( [ UI . utils . label ( friends [ j9 ] ) , friends [ j9 ] ] ) } items . sort ( ) var last = null var fr for ( var j7 = 0 ; j7 < items . length ; j7 ++ ) { fr = items [ j7 ] [ 1 ] if ( fr . sameTerm ( last ) ) continue // unique last = fr if ( UI . utils . label ( fr ) !== '...' ) { // This check is to avoid bnodes with no labels attached // appearing in the friends list with "..." - Oshani mainTable . appendChild ( oneFriend ( fr ) ) } } } }
Figure out which are reciprocated: @@ Does not look up profiles Does distinguish reciprocated from unreciprocated friendships
Figure out which are reciprocated :