| <!-- |
| @license |
| Copyright (C) 2017 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <script> |
| (function(window) { |
| 'use strict'; |
| |
| window.Gerrit = window.Gerrit || {}; |
| |
| /** @polymerBehavior Gerrit.AccessBehavior */ |
| Gerrit.AccessBehavior = { |
| properties: { |
| permissionValues: { |
| type: Object, |
| readOnly: true, |
| value: { |
| abandon: { |
| id: 'abandon', |
| name: 'Abandon', |
| }, |
| addPatchSet: { |
| id: 'addPatchSet', |
| name: 'Add Patch Set', |
| }, |
| create: { |
| id: 'create', |
| name: 'Create Reference', |
| }, |
| createTag: { |
| id: 'createTag', |
| name: 'Create Annotated Tag', |
| }, |
| createSignedTag: { |
| id: 'createSignedTag', |
| name: 'Create Signed Tag', |
| }, |
| delete: { |
| id: 'delete', |
| name: 'Delete Reference', |
| }, |
| deleteChanges: { |
| id: 'deleteChanges', |
| name: 'Delete Changes', |
| }, |
| deleteOwnChanges: { |
| id: 'deleteOwnChanges', |
| name: 'Delete Own Changes', |
| }, |
| editAssignee: { |
| id: 'editAssignee', |
| name: 'Edit Assignee', |
| }, |
| editHashtags: { |
| id: 'editHashtags', |
| name: 'Edit Hashtags', |
| }, |
| editTopicName: { |
| id: 'editTopicName', |
| name: 'Edit Topic Name', |
| }, |
| forgeAuthor: { |
| id: 'forgeAuthor', |
| name: 'Forge Author Identity', |
| }, |
| forgeCommitter: { |
| id: 'forgeCommitter', |
| name: 'Forge Committer Identity', |
| }, |
| forgeServerAsCommitter: { |
| id: 'forgeServerAsCommitter', |
| name: 'Forge Server Identity', |
| }, |
| owner: { |
| id: 'owner', |
| name: 'Owner', |
| }, |
| publishDrafts: { |
| id: 'publishDrafts', |
| name: 'Publish Drafts', |
| }, |
| push: { |
| id: 'push', |
| name: 'Push', |
| }, |
| pushMerge: { |
| id: 'pushMerge', |
| name: 'Push Merge Commit', |
| }, |
| read: { |
| id: 'read', |
| name: 'Read', |
| }, |
| rebase: { |
| id: 'rebase', |
| name: 'Rebase', |
| }, |
| removeReviewer: { |
| id: 'removeReviewer', |
| name: 'Remove Reviewer', |
| }, |
| submit: { |
| id: 'submit', |
| name: 'Submit', |
| }, |
| submitAs: { |
| id: 'submitAs', |
| name: 'Submit (On Behalf Of)', |
| }, |
| toggleWipState: { |
| id: 'toggleWipState', |
| name: 'Toggle Work In Progress State', |
| }, |
| viewPrivateChanges: { |
| id: 'viewPrivateChanges', |
| name: 'View Private Changes', |
| }, |
| }, |
| }, |
| }, |
| |
| /** |
| * @param {!Object} obj |
| * @return {!Array} returns a sorted array sorted by the id of the original |
| * object. |
| */ |
| toSortedArray(obj) { |
| if (!obj) { return []; } |
| return Object.keys(obj).map(key => { |
| return { |
| id: key, |
| value: obj[key], |
| }; |
| }).sort((a, b) => { |
| // Since IDs are strings, use localeCompare. |
| return a.id.localeCompare(b.id); |
| }); |
| }, |
| }; |
| })(window); |
| </script> |