• Jump To … +
    server.coffee src/actionknob.coffee src/autosem.coffee src/bitbucket_kba.coffee src/browserlog.coffee src/datareduction.coffee src/dci.coffee src/dciknob.coffee src/deeseeeye.coffee src/dnd.coffee src/doof.coffee src/formurla-mngr.coffee src/fractalpanel.coffee src/fractalpanel_test.coffee src/front.coffee src/ingestor.coffee src/kbabitbucket.coffee src/knobctrl.coffee src/lib_test.coffee src/nanoclock.coffee src/noodb.coffee src/noodbabstract.coffee src/noodbbrowser.coffee src/noodbbrowser_test.coffee src/noodbsec.coffee src/noorauth.coffee src/noorplugin.coffee src/noorquery.coffee src/noorvm.coffee src/noorwrite.coffee src/quadparser.coffee src/quadparsern3.coffee src/rbac.coffee src/reactor.coffee src/rebase.coffee src/rsrcidx.coffee src/sandboxactions.coffee src/screen_ctx.coffee src/spogi.coffee src/tabular_widget.coffee src/visctrl.coffee src/voicesknob.coffee src/whowhen.coffee src/xsd2native.coffee
  • whowhen.coffee

  • ¶
    date_to_now = require("./nanoclock").date_to_now
    one_million = require("./nanoclock").one_million
    rebase = require("./rebase")
    int_to_base = rebase.int_to_base
    base_to_int = rebase.base_to_int
    
    class WhoWhen
      constructor: (@user_symbol, @session_no, date) ->
        if date?
          @setTime(date)
      parse: (@who_when_str) ->
        part = @who_when_str.split("_")
        @user_no = base_to_int(part[0])
        @user_symbol = part[0]
        @session_no = base_to_int(part[1])
        @sec = base_to_int(part[2])
        @nsec = base_to_int(part[3])
        this
      build: (@user_symbol, @session_no, @sec, @nsec) ->
        this
      build_from_user_sess_time: (user_symbol, session_no, date) ->
  • ¶

    TODO improve time accuracy of nsec https://www.npmjs.com/package/performance-now add performance-now to package.json https://developer.mozilla.org/en-US/docs/Web/API/Performance.now console.warn(“use of WhoWhen.buidl_from_user_sess_time() is hazardous, use NooDB.clock”)

        now = date_to_now(date)
        @build(user_symbol, session_no, now.sec, now.nsec)
      setTime: (date) ->
  • ¶

    console.warn(“use of WhoWhen.setTime() is hazardous, use NooDB.clock”)

        now = date_to_now(date)
        @sec = now.sec
        @nsec = now.nsec
        this
      getDate: ->
        msec = (@sec * 1000) + ((@nsec / one_million) | 0)
        new Date(msec)
      getISO: ->
        @getDate().toISOString()
      toString: ->
        return "user: #{@user_symbol}, sess: #{int_to_base(@sess_no)}, sec: #{@sec}, nsec: #{@nsec}"
      repr: ->
        return [@user_symbol
                int_to_base(@session_no)
                int_to_base(@sec)
                int_to_base(@nsec)].join("_")
      toSafeCURIE: ->
        return "[nrn:#{@repr()}]"
      now: ->
        return {sec: @sec, nsec: @nsec}
      whn: ->
        @now()
      sess: ->
        return {user_symbol: @user_symbol, session_no: @session_no}
      cmp: (other) ->
        if @sec > other.sec
          return 1
        if @sec is other.sec
          if @nsec > other.nsec
            return 1
          if @nsec is other.sec
            return 0
        return -1
    
    (exports ? this).WhoWhen = WhoWhen