blob: 7b48ecc333cc325c1ce29637f796438fbdd00af1 [file] [log] [blame]
/**
* @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.
*/
/** @polymerBehavior Gerrit.AccessBehavior */
export const 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',
},
revert: {
id: 'revert',
name: 'Revert',
},
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.
a.id.localeCompare(b.id)
);
},
};
// TODO(dmfilippov) Remove the following lines with assignments
// Plugins can use the behavior because it was accessible with
// the global Gerrit... variable. To avoid breaking changes in plugins
// temporary assign global variables.
window.Gerrit = window.Gerrit || {};
window.Gerrit.AccessBehavior = AccessBehavior;