Modifying predicate permissions always jumps back to the top of the list

Moved from GitHub ratel/129

Posted by danielmai:

Editing ACL permissions is a huge hassle with this bug.

Steps to reproduce:

  1. Run Dgraph cluster with ACL enabled.

  2. Log in as groot.

  3. Have a reasonable number of predicates in the schema. Use Bulk Edit to load the following schema with 100 predicates:

    100-predicates.schema
    predicate001: string .
    predicate002: string .
    predicate003: string .
    predicate004: string .
    predicate005: string .
    predicate006: string .
    predicate007: string .
    predicate008: string .
    predicate009: string .
    predicate010: string .
    predicate011: string .
    predicate012: string .
    predicate013: string .
    predicate014: string .
    predicate015: string .
    predicate016: string .
    predicate017: string .
    predicate018: string .
    predicate019: string .
    predicate020: string .
    predicate021: string .
    predicate022: string .
    predicate023: string .
    predicate024: string .
    predicate025: string .
    predicate026: string .
    predicate027: string .
    predicate028: string .
    predicate029: string .
    predicate030: string .
    predicate031: string .
    predicate032: string .
    predicate033: string .
    predicate034: string .
    predicate035: string .
    predicate036: string .
    predicate037: string .
    predicate038: string .
    predicate039: string .
    predicate040: string .
    predicate041: string .
    predicate042: string .
    predicate043: string .
    predicate044: string .
    predicate045: string .
    predicate046: string .
    predicate047: string .
    predicate048: string .
    predicate049: string .
    predicate050: string .
    predicate051: string .
    predicate052: string .
    predicate053: string .
    predicate054: string .
    predicate055: string .
    predicate056: string .
    predicate057: string .
    predicate058: string .
    predicate059: string .
    predicate060: string .
    predicate061: string .
    predicate062: string .
    predicate063: string .
    predicate064: string .
    predicate065: string .
    predicate066: string .
    predicate067: string .
    predicate068: string .
    predicate069: string .
    predicate070: string .
    predicate071: string .
    predicate072: string .
    predicate073: string .
    predicate074: string .
    predicate075: string .
    predicate076: string .
    predicate077: string .
    predicate078: string .
    predicate079: string .
    predicate080: string .
    predicate081: string .
    predicate082: string .
    predicate083: string .
    predicate084: string .
    predicate085: string .
    predicate086: string .
    predicate087: string .
    predicate088: string .
    predicate089: string .
    predicate090: string .
    predicate091: string .
    predicate092: string .
    predicate093: string .
    predicate094: string .
    predicate095: string .
    predicate096: string .
    predicate097: string .
    predicate098: string .
    predicate099: string .
    predicate100: string .
     
  4. Go to the ACL tab and add a Group.

  5. Click on the group to edit the predicate permissions.

  6. Scroll all the way to the bottom until you see “predicate100”.

  7. Click on the “Read” checkbox for predicate100. The view will then be scrolled all the way to the top.

This isn’t a great experience. In order to change the permissions for a particular predicate, you need to scroll down each time to update the Read, Modify, or Write permission checkboxes.