function addNewPredicateObject (e) {
      if (UI.utils.getTarget(e).className !== 'bottom-border-active') return
      var This = outline.UserInput
      var target = UI.utils.getTarget(e)

        // UI.log.warn(ancestor(target,'TABLE').textContent);
      var insertTr = myDocument.createElement('tr')
      UI.utils.ancestor(target, 'DIV').insertBefore(insertTr, UI.utils.ancestor(target, 'TR'))
      var tempTr = myDocument.createElement('tr')
      var reqTerm1 = This.generateRequest('(TBD)', tempTr, true)
      insertTr.appendChild(tempTr.firstChild)
      var reqTerm2 = This.generateRequest('(Enter text or drag an object onto this field)', tempTr, false)
      insertTr.appendChild(tempTr.firstChild)
        // there should be an elegant way of doing this

        // Take the why of the last TR and write to it.
      if (UI.utils.ancestor(target, 'TR').previousSibling &&  // there is a previous predicate/object line
                UI.utils.ancestor(target, 'TR').previousSibling.AJAR_statement) {
        let preStat = UI.utils.ancestor(target, 'TR').previousSibling.AJAR_statement
            // This should always(?) input a non-inverse statement
        This.formUndetStat(insertTr, preStat.subject, reqTerm1, reqTerm2, preStat.why, false)
      } else { // no previous row: write to the document defining the subject
        var subject = UI.utils.getAbout(kb, UI.utils.ancestor(target.parentNode.parentNode, 'TD'))
        var doc = kb.sym(UI.rdf.Util.uri.docpart(subject.uri))
        This.formUndetStat(insertTr, subject, reqTerm1, reqTerm2, doc, false)
      }

      outline.walk('moveTo', insertTr.firstChild)
      UI.log.info('addNewPredicateObject: selection = ' + outline.getSelection().map(function (item) { return item.textContent }).join(', '))
      this.startFillInText(outline.getSelection()[0])
    }
function addNewPredicateObject (e) {
      if (UI.utils.getTarget(e).className !== 'bottom-border-active') return
      var This = outline.UserInput
      var target = UI.utils.getTarget(e)

        
      var insertTr = myDocument.createElement('tr')
      UI.utils.ancestor(target, 'DIV').insertBefore(insertTr, UI.utils.ancestor(target, 'TR'))
      var tempTr = myDocument.createElement('tr')
      var reqTerm1 = This.generateRequest('(TBD)', tempTr, true)
      insertTr.appendChild(tempTr.firstChild)
      var reqTerm2 = This.generateRequest('(Enter text or drag an object onto this field)', tempTr, false)
      insertTr.appendChild(tempTr.firstChild)
        

        
      if (UI.utils.ancestor(target, 'TR').previousSibling &&  
                UI.utils.ancestor(target, 'TR').previousSibling.AJAR_statement) {
        let preStat = UI.utils.ancestor(target, 'TR').previousSibling.AJAR_statement
            
        This.formUndetStat(insertTr, preStat.subject, reqTerm1, reqTerm2, preStat.why, false)
      } else { 
        var subject = UI.utils.getAbout(kb, UI.utils.ancestor(target.parentNode.parentNode, 'TD'))
        var doc = kb.sym(UI.rdf.Util.uri.docpart(subject.uri))
        This.formUndetStat(insertTr, subject, reqTerm1, reqTerm2, doc, false)
      }

      outline.walk('moveTo', insertTr.firstChild)
      UI.log.info('addNewPredicateObject: selection = ' + outline.getSelection().map(function (item) { return item.textContent }).join(', '))
      this.startFillInText(outline.getSelection()[0])
    }
function addNewPredicateObject ( e ) { if ( UI . utils . getTarget ( e ) . className !== 'bottom-border-active' ) return var This = outline . UserInput var target = UI . utils . getTarget ( e ) // UI.log.warn(ancestor(target,'TABLE').textContent); var insertTr = myDocument . createElement ( 'tr' ) UI . utils . ancestor ( target , 'DIV' ) . insertBefore ( insertTr , UI . utils . ancestor ( target , 'TR' ) ) var tempTr = myDocument . createElement ( 'tr' ) var reqTerm1 = This . generateRequest ( '(TBD)' , tempTr , true ) insertTr . appendChild ( tempTr . firstChild ) var reqTerm2 = This . generateRequest ( '(Enter text or drag an object onto this field)' , tempTr , false ) insertTr . appendChild ( tempTr . firstChild ) // there should be an elegant way of doing this // Take the why of the last TR and write to it. if ( UI . utils . ancestor ( target , 'TR' ) . previousSibling && // there is a previous predicate/object line UI . utils . ancestor ( target , 'TR' ) . previousSibling . AJAR_statement ) { let preStat = UI . utils . ancestor ( target , 'TR' ) . previousSibling . AJAR_statement // This should always(?) input a non-inverse statement This . formUndetStat ( insertTr , preStat . subject , reqTerm1 , reqTerm2 , preStat . why , false ) } else { // no previous row: write to the document defining the subject var subject = UI . utils . getAbout ( kb , UI . utils . ancestor ( target . parentNode . parentNode , 'TD' ) ) var doc = kb . sym ( UI . rdf . Util . uri . docpart ( subject . uri ) ) This . formUndetStat ( insertTr , subject , reqTerm1 , reqTerm2 , doc , false ) } outline . walk ( 'moveTo' , insertTr . firstChild ) UI . log . info ( 'addNewPredicateObject: selection = ' + outline . getSelection ( ) . map ( function ( item ) { return item . textContent } ) . join ( ', ' ) ) this . startFillInText ( outline . getSelection ( ) [ 0 ] ) }
Called when the blue cross under the default pane is clicked. Add a new row to a property list ( P and O)
Called when the blue cross under the default pane is clicked . Add a new row to a property list ( P and O )