Create/edit attribute definition screen
/grouper/grouperUi/appHtml/grouper.html?operation=SimpleAttributeUpdate.createEdit
- title of screen with help information infodot
- combobox to search for attributes to edit
- combobox has icon for application (box)
- should only show attributes which are editable by the user
- can search by uuid
- can search by name (separates by spaces, case-insensitive, searches by all substrings)
- edit attribute definition button will populate screen with the existing details of the attribute definition
- if no attribute definition if chosen, but the edit button is pressed, it will give a friendly error
- new attribute definition button will show blank fields for attribute definition details
- "new" attributes should not show the delete or edit actions buttons
- folder of attribute definition is readonly for edit with folder icons, or combobox for new
- folder combobox has folder icon inside
- folder combobox shows results where user has CREATE in the folder
- folder combobox shows results of the uuid of the folder, or the name substring split by whitespace
- folder is designated with a required asterisk on create
- folder has a friendly error message if not entered on create
- uuid in readonly mode for edits, not there for new
- extension (id) should be readonly for edit, or writable for create
- extension (id) is designated with a required asterisk on create
- extension (id) has a friendly error message if not entered on create
- attribute type has drop down for new, readonly for edit
- attribute type has all options of AttributeDefType enum: attribute, type, limit, domain, permission
- attribute type is designated with a required asterisk on create
- attribute type has a friendly error message if not entered on create. Note, there is a blank option
- attribute type should populate the correct value on edit
- description is editable for new or edit
- description should populate correctly for existing records
- description is a textarea and is not required
- multiAssignable is editable for new or edit
- multiAssignable should populate correctly for existing records
- multiAssignable is a checkbox, defaults to unchecked, and is not required
- value type is editable for new or edit
- value type should populate correctly for existing records
- value type is a drop down, defaults to none, and is not required
- value type has all options of AttributeDefValueType enum: floating, integer, marker, memberId, string, timestamp
- value type has no blank option
- multiValued is editable for new or edit
- multiValued should populate correctly for existing records
- multiValued is a checkbox, defaults to unchecked, and is not required
- multiValued cannot be checked if the value type is marker, a friendly error will appear
- assignTo is a grid of checkboxes for what the attribute can be assigned to
- assignTo has a required indicator
- assignTo will show a friendly error if none selected
- assignTo will populate correctly for existing records
- assignTo defaults to none for new records
- assignTo text should not wrap lines for legibility
- if a permission, then is not assignable to the correct object types, give a friendly error
- if a permission, then cannot be multi-assignable, give a friendly error
- if a permission, then if not no-value, give a friendly error
- all labels have tooltips
- the delete button is on the left and should delete the attribute definition
- the delete button should ask for confirmation before deleting the attribute definition
- the cancel button should refresh the screen in a blank and reset state
- the save button should save the data, popup a success alert, and redraw the saved information
- security is checked again on the save button
Action panel
- add an edit actions button
- edit actions button should only appear for permissions
- this button opens a panel below the attribute definition
- add an infodot on actions header
- change actions textfield can take space, comma, or semi separated actions
- button to add actions will add any actions in the textfield
- button to add actions should not allow blank input
- button to add actions should add any actions, allowing duplicates (will be skipped)
- button to add actions will give a friendly success message
- button to add actions will redraw the action panel
- button to add actions will remove
- button to add will remove the edit action panel if applicable
- button to replace actions will do the same thing as add (side effects, etc), but will replace the action list with the inputted action(s)
Edit action panel
- cant edit action if there is only one action (no other actions to change the hierarchies about)
- when editing an action, show the action name of the action being edited
- when editing an action, give drop down of available actions which can imply
- when adding an action that implies, do not allow blank
- button for "add action that implies this action" should have action name embedded so it is easy to read
- when clicking "add action that implies this action", add that relationship
- when clicking "add action that implies this action", give a friendly success message
- when editing an action, give drop down of available actions which can be implied by
- when adding an action that implies, do not allow blank
- button for "add action that is implied by this action" should have action name embedded so it is easy to read
- when clicking "add action that is implied by this action", add that relationship
- when clicking "add action that is implies by this action", give a friendly success message
- when editing an action, show the immediate and effective implies
- when editing an action, show the immediate implies
- when editing an action, show an X next to each immediate imply
- when editing an action, X next to each immediate imply should have a confirm
- when editing an action, X next to immediate imply should break the relationship
- when editing an action, X next to immediate imply should give friendly success message
- add action name again on screen between impies and implied by to break up the two sides of the hierarchy
- when editing an action, show the immediate and effective implied by
- when editing an action, show the immediate implied by
- when editing an action, show an X next to each immediate implied by
- when editing an action, X next to each immediate implied by should have a confirm
- when editing an action, X next to immediate implied by should break the relationship
- when editing an action, X next to immediate implied by should give friendly success message
Privilege panel
- attribute privilege edit button opens up a privilege panel
- privilege panel shows all 6 privileges, and each subject which has an assignment
- subjects shown can be immediate or effective
- header of privilege list repeats every X rows, configurable by simpleAttributeUpdate.repeatPrivilegeHeaderAfterRows from media.properties
- show checkboxes with ones checked when immediately assigned
- show images of green allow or red deny where green means immediately or effectively assigned
- show different tooltip on image for immediate, effective, or immediate_and_effective
- have a combo to add subjects to top of list
- combo should search subjects and display the top results (like add member in membership lite screen)
- keep hidden fields of who is in additional list list
- keep hidden field for each privilege entry to keep the old state so we know what the user changed (not step on other's toes)
- if there are no privilege changes detected, show friendly message
- alternate row colors so the rows are easy to differentiate
- on the confirm message on privilege assign, if the privilege is already there (race condition?), then show warning
- on the confirm message, so a different message for revoke or assign
- on the confirm message show the gui label, and the friendly label for privilege
- filter membership type checkbox should show effective members (defaults to off)
- add assign to all in attributeDef edit panel
- show effective privileges due to action inheritance (e.g. admin implies read)
- show effective privileges due to global assignment
- page the privileges
- allow configurable page size
- test each page number displayed at the bottom
- if a page is selected, then do not show the additional selected subjects
- show a message that the paging is not precise if additional entities are listed
- if you submit the privilege panel, you could change the everyentity privileges, so refresh the edit panel as well
- make the image clickable on the privilege panel
- the image on the privilege panel should confirm the selection
- the image confirm should be different for allow and deny
- scroll to anchor not to bottom or whatever
- if a paging button is pressed, it should maintain the indirect privileges checkbox
- changing the indirect privilege checkbox should reset paging to the first page
- each page submit should do a total page size, since the numbers can change
- clicking on the "privileges" button in the attribute def edit panel should clear paging
TODO
- When going to the attribute action panel, try to scroll the browser down when it appears
- Unit test the UI logic methods
- Show who created / last edited the attribute definition
- Show auditing on the attribute definition
- Escape description for HTML, and actions
- Make sure there is page level documentation on new/edit screen
- Add a delete button for attribute definition
- Add auditing on create/edit/delete
- If a stem is entered which doesnt exist, should we create if not exist? :)
- Search comboboxes on name or display name