Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:

      All.

      Description

      This is a complete rewrite of Futon as a single page app using sammy.js.

      I've been working on it for some time at

      https://github.com/mikeal/couchdb/tree/sammy

      Changes
      -------------

      • Everything expect for session.html is loaded dynamically as a content replace to index.html.
      • The total amount of javascript loaded at any time is about 1/3, a combination of removing abstractions and some very large jQuery plugins.
      • Load times for all pages is dramatically reduced
      • URL structure of futon now mimics the CouchDB REST API except at #/
      • An intended side-effect of the new URL structure is that the button to pull up the current page as a request to CouchDB works everywhere
      • Unified error handling (Any network or HTTP error is now displayed as error bubbled at the top of the page content)
      • All "paging" is now done inline making the loads faster and more usable
      • Many dialogs have been removed in favor of simpler UI elements (as a side effect it's more mobile friendly).
      • All dbinfo is in database page as well as the "total size" calculated from the db size and the size of all the views.
      • db page includes support for start/end queries against _all_docs
      • Stats page now includes all info from _stats
      • added _changes page
      • Cleaned up loading of test files (faster and parallelized now). The test are now automatically sorted alpha regardless of the order in the array definition.
      • New Document viewer/editor
        • In-line "auto-save"
        • Full revision information and restoration
        • New UI shows all arrays and objects as initially collapsed to improve handling of large docs.
        • Load time, even with incredibly large objects, is almost instance (a combination of not using a table and only creating elements in the expanded view after you click to expand them)
      • New Views Page
        • Emphasis is now on building queries with building view functions a secondary function.
        • All view options exposed, options now allowed are disabled.
        • All queries can be built in this view and then
        • Creating new views, and editing views, is now a process of editing and saving design documents, all usage of temp views has been removed.
        • include_docs expand/collapse when in query

        Activity

        mikeal created issue -
        Hide
        mikeal added a comment -

        Futon2 diff.

        Show
        mikeal added a comment - Futon2 diff.
        mikeal made changes -
        Field Original Value New Value
        Attachment futon2.diff [ 12459837 ]
        Hide
        Nicholas Orr added a comment - - edited

        issues I've found (git commit: ef29a70 using safari 5.0.2 win7)

        on the views screen (overview > database > _views)

        • i click on a design doc, get a list of views on the right, no matter which one I click on the screen only loads the last view in the list. if I change the url in the address bar i can access the other views
        • even though reduce is not ticked it is true, changing the url to reduce=false produces a non-reduced list of rows
        • getting rid of the dropdown for group_level means we have to click the field, highlight/clear the current value, type a number, then press tab to get a response - this seems like a one step back sort of thing, clicking a dropdown and by selecting a value a result produced straight away is responsive in comparison
          • suggest, making this a dropdown or fire event onkeyup instead of onblur/onchange. this of course would mean two operations if the person wants a double digit group, though futon1 only goes up to 9, is that a limit? then just make the field maxlength=1
        • there is a disconnect between pressing "edit" on a view and the textarea updating with the view functions and the rest of the controls, the controls are connected to the view in the addressbar, pressing save gets everything back in sync, however this seems like a step back as well. in the current futon, the whole screen is synced to the view in the dropdown, in futon2 all views are visible, the current one is not obvious and we can click edit on any of the views
          • suggest clicking edit make the view that we want to edit change the screen to that view and bold this view's text so it is clear we are now dealing with this view.
            • alternative, only expose edit link on the current view, want to edit a view not being looked at, click it, then click edit. doing this will also prevent an issue i found that when i create a new view, by pressing new, typing text i can click edit on the other views and when i press save, the new view gets the code in the textareas, the view is calculated and result is returned, however now when i click edit on a different view and press save the view the code is saved to is the new one i created... if i do enough of this random clicking on edit I can create an "underfined" view...
        • only enable group/group_level if reduce is true
        • clicking an ID in the results doesn't open the document, in futon1 it opens the document

        This is what I've noticed so far.
        Really like all the extra info you have exposed and it does feel responsive in comparison to futon1 - awesome sauce

        Nicholas

        Show
        Nicholas Orr added a comment - - edited issues I've found (git commit: ef29a70 using safari 5.0.2 win7) on the views screen (overview > database > _views) i click on a design doc, get a list of views on the right, no matter which one I click on the screen only loads the last view in the list. if I change the url in the address bar i can access the other views even though reduce is not ticked it is true, changing the url to reduce=false produces a non-reduced list of rows getting rid of the dropdown for group_level means we have to click the field, highlight/clear the current value, type a number, then press tab to get a response - this seems like a one step back sort of thing, clicking a dropdown and by selecting a value a result produced straight away is responsive in comparison suggest, making this a dropdown or fire event onkeyup instead of onblur/onchange. this of course would mean two operations if the person wants a double digit group, though futon1 only goes up to 9, is that a limit? then just make the field maxlength=1 there is a disconnect between pressing "edit" on a view and the textarea updating with the view functions and the rest of the controls, the controls are connected to the view in the addressbar, pressing save gets everything back in sync, however this seems like a step back as well. in the current futon, the whole screen is synced to the view in the dropdown, in futon2 all views are visible, the current one is not obvious and we can click edit on any of the views suggest clicking edit make the view that we want to edit change the screen to that view and bold this view's text so it is clear we are now dealing with this view. alternative, only expose edit link on the current view, want to edit a view not being looked at, click it, then click edit. doing this will also prevent an issue i found that when i create a new view, by pressing new, typing text i can click edit on the other views and when i press save, the new view gets the code in the textareas, the view is calculated and result is returned, however now when i click edit on a different view and press save the view the code is saved to is the new one i created... if i do enough of this random clicking on edit I can create an "underfined" view... only enable group/group_level if reduce is true clicking an ID in the results doesn't open the document, in futon1 it opens the document This is what I've noticed so far. Really like all the extra info you have exposed and it does feel responsive in comparison to futon1 - awesome sauce Nicholas
        Hide
        mikeal added a comment -

        great comments, i'm gonna get on top of this tomorrow.

        the view editing was the last thing I did so I'm not that surprised that it's not as refined as I would like.

        Show
        mikeal added a comment - great comments, i'm gonna get on top of this tomorrow. the view editing was the last thing I did so I'm not that surprised that it's not as refined as I would like.
        Hide
        Benjamin Young added a comment -

        I've picked up with Mikeal's work and have been hacking on Futon2 in my CouchDB Github repo:
        https://github.com/bigbluehat/couchdb

        I'm sure there's still plenty more to address, so I won't submit a patch just yet.

        So far, though, I've been working on making the API "show through" the UI where possible (in the Title, bread crumbs), I've added some tabs when you're inside the database "area," and a database "drop down" for switching dbs while in the database "area."

        I'll not my post my whole list of hopes and dreams here, but if anyone's interested in forking and collaborating, I'd love to the help. Feedback welcome.

        Thanks,
        Benjamin

        Show
        Benjamin Young added a comment - I've picked up with Mikeal's work and have been hacking on Futon2 in my CouchDB Github repo: https://github.com/bigbluehat/couchdb I'm sure there's still plenty more to address, so I won't submit a patch just yet. So far, though, I've been working on making the API "show through" the UI where possible (in the Title, bread crumbs), I've added some tabs when you're inside the database "area," and a database "drop down" for switching dbs while in the database "area." I'll not my post my whole list of hopes and dreams here, but if anyone's interested in forking and collaborating, I'd love to the help. Feedback welcome. Thanks, Benjamin
        Hide
        Benoit Chesneau added a comment -

        any possibility you could provide a patch that doesn't remove current futon ? So we can test both in the same time ?

        Show
        Benoit Chesneau added a comment - any possibility you could provide a patch that doesn't remove current futon ? So we can test both in the same time ?
        Hide
        Paul Joseph Davis added a comment -

        There's this thing I wrote a long time ago for people wanting to hack on Futon without updating their source tree.

        https://github.com/davisp/futonproxy

        Show
        Paul Joseph Davis added a comment - There's this thing I wrote a long time ago for people wanting to hack on Futon without updating their source tree. https://github.com/davisp/futonproxy
        Hide
        Benjamin Young added a comment -

        Another option is to symlink the www directory under share with a different name (ex: futon2) and then added this to your config:
        [httpd_global_handlers]
        _utils2=

        {couch_httpd_misc_handlers, handle_utils_dir_req, "couchdb_1.0.1/share/couchdb/futon2"}

        Obviously alter the path above to the directory you've got futon2 in.

        Show
        Benjamin Young added a comment - Another option is to symlink the www directory under share with a different name (ex: futon2) and then added this to your config: [httpd_global_handlers] _utils2= {couch_httpd_misc_handlers, handle_utils_dir_req, "couchdb_1.0.1/share/couchdb/futon2"} Obviously alter the path above to the directory you've got futon2 in.
        Hide
        Benjamin Young added a comment -

        Because it was so wonderfully easy to do, I've made Futon2 a CouchApp:
        https://github.com/BigBlueHat/couchdb/commit/7fa137a60661afe515a00a02fb52d56ecb564c0a

        There's basic setup information in the README:
        https://github.com/BigBlueHat/couchdb/tree/sammy/share/futon

        The primary advantage is that web developers who aren't interested in building the latest CouchDB but who would like to contribute to Futon, may now do so without needing to compile CouchDB.

        Please Note: I am not proposing that the CouchApp be used in place of _utils/ but simply as a development option for developers who are primarily interested in the client-side aspects of CouchDB (and who likely don't want to take the time to build another instance of CouchDB to do so).

        This also provides the opportunity for others to "dog food" Futon 2 along side _utils with out significant alteration to their environment.

        Hope it's useful.

        Show
        Benjamin Young added a comment - Because it was so wonderfully easy to do, I've made Futon2 a CouchApp: https://github.com/BigBlueHat/couchdb/commit/7fa137a60661afe515a00a02fb52d56ecb564c0a There's basic setup information in the README: https://github.com/BigBlueHat/couchdb/tree/sammy/share/futon The primary advantage is that web developers who aren't interested in building the latest CouchDB but who would like to contribute to Futon, may now do so without needing to compile CouchDB. Please Note: I am not proposing that the CouchApp be used in place of _utils/ but simply as a development option for developers who are primarily interested in the client-side aspects of CouchDB (and who likely don't want to take the time to build another instance of CouchDB to do so). This also provides the opportunity for others to "dog food" Futon 2 along side _utils with out significant alteration to their environment. Hope it's useful.
        Hide
        Alexander Shorin added a comment -

        Superseded by Fauxton. Feel free to share features with him (:

        Show
        Alexander Shorin added a comment - Superseded by Fauxton. Feel free to share features with him (:
        Alexander Shorin made changes -
        Status Open [ 1 ] Closed [ 6 ]
        Resolution Won't Fix [ 2 ]

          People

          • Assignee:
            Unassigned
            Reporter:
            mikeal
          • Votes:
            2 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development