
* stable-3.0: Add "readOnly"-endpoint parameter to repo-config endpoint Change-Id: I535b5a9b74a4244b5c70fb35e58469aaf8fa0fb7
380 lines
17 KiB
HTML
380 lines
17 KiB
HTML
<!--
|
|
@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.
|
|
-->
|
|
|
|
<link rel="import" href="/bower_components/polymer/polymer.html">
|
|
<link rel="import" href="/bower_components/iron-autogrow-textarea/iron-autogrow-textarea.html">
|
|
<link rel="import" href="/bower_components/iron-input/iron-input.html">
|
|
<link rel="import" href="../../../behaviors/fire-behavior/fire-behavior.html">
|
|
|
|
<link rel="import" href="../../plugins/gr-endpoint-decorator/gr-endpoint-decorator.html">
|
|
<link rel="import" href="../../shared/gr-download-commands/gr-download-commands.html">
|
|
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
|
|
<link rel="import" href="../../shared/gr-select/gr-select.html">
|
|
<link rel="import" href="../../../styles/gr-form-styles.html">
|
|
<link rel="import" href="../../../styles/gr-subpage-styles.html">
|
|
<link rel="import" href="../../../styles/shared-styles.html">
|
|
<link rel="import" href="../gr-repo-plugin-config/gr-repo-plugin-config.html">
|
|
|
|
<dom-module id="gr-repo">
|
|
<template>
|
|
<style include="shared-styles"></style>
|
|
<style include="gr-subpage-styles">
|
|
h2.edited:after {
|
|
color: var(--deemphasized-text-color);
|
|
content: ' *';
|
|
}
|
|
.loading,
|
|
.hide {
|
|
display: none;
|
|
}
|
|
#loading.loading {
|
|
display: block;
|
|
}
|
|
#loading:not(.loading) {
|
|
display: none;
|
|
}
|
|
#options .repositorySettings {
|
|
display: none;
|
|
}
|
|
#options .repositorySettings.showConfig {
|
|
display: block;
|
|
}
|
|
</style>
|
|
<style include="gr-form-styles"></style>
|
|
<main class="gr-form-styles read-only">
|
|
<style include="shared-styles"></style>
|
|
<div class="info">
|
|
<h1 id="Title" class$="name">
|
|
[[repo]]
|
|
<hr/>
|
|
</h1>
|
|
<div>
|
|
<a href$="[[_computeChangesUrl(repo)]]">(view changes)</a>
|
|
</div>
|
|
</div>
|
|
<div id="loading" class$="[[_computeLoadingClass(_loading)]]">Loading...</div>
|
|
<div id="loadedContent" class$="[[_computeLoadingClass(_loading)]]">
|
|
<div id="downloadContent" class$="[[_computeHideClass(_schemes)]]">
|
|
<h2 id="download">Download</h2>
|
|
<fieldset>
|
|
<gr-download-commands
|
|
id="downloadCommands"
|
|
commands="[[_computeCommands(repo, _schemesObj, _selectedScheme)]]"
|
|
schemes="[[_schemes]]"
|
|
selected-scheme="{{_selectedScheme}}"></gr-download-commands>
|
|
</fieldset>
|
|
</div>
|
|
<h2 id="configurations"
|
|
class$="[[_computeHeaderClass(_configChanged)]]">Configurations</h2>
|
|
<div id="form">
|
|
<fieldset>
|
|
<h3 id="Description">Description</h3>
|
|
<fieldset>
|
|
<iron-autogrow-textarea
|
|
id="descriptionInput"
|
|
class="description"
|
|
autocomplete="on"
|
|
placeholder="<Insert repo description here>"
|
|
bind-value="{{_repoConfig.description}}"
|
|
disabled$="[[_readOnly]]"></iron-autogrow-textarea>
|
|
</fieldset>
|
|
<h3 id="Options">Repository Options</h3>
|
|
<fieldset id="options">
|
|
<section>
|
|
<span class="title">State</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="stateSelect"
|
|
bind-value="{{_repoConfig.state}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat" items=[[_states]]>
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Submit type</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="submitTypeSelect"
|
|
bind-value="{{_repoConfig.submit_type}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatSubmitTypeSelect(_repoConfig)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Allow content merges</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="contentMergeSelect"
|
|
bind-value="{{_repoConfig.use_content_merge.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.use_content_merge)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">
|
|
Create a new change for every commit not in the target branch
|
|
</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="newChangeSelect"
|
|
bind-value="{{_repoConfig.create_new_change_for_all_not_in_target.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.create_new_change_for_all_not_in_target)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Require Change-Id in commit message</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="requireChangeIdSelect"
|
|
bind-value="{{_repoConfig.require_change_id.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.require_change_id)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section
|
|
id="enableSignedPushSettings"
|
|
class$="repositorySettings [[_computeRepositoriesClass(_repoConfig.enable_signed_push)]]">
|
|
<span class="title">Enable signed push</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="enableSignedPush"
|
|
bind-value="{{_repoConfig.enable_signed_push.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.enable_signed_push)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section
|
|
id="requireSignedPushSettings"
|
|
class$="repositorySettings [[_computeRepositoriesClass(_repoConfig.require_signed_push)]]">
|
|
<span class="title">Require signed push</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="requireSignedPush"
|
|
bind-value="{{_repoConfig.require_signed_push.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.require_signed_push)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">
|
|
Reject implicit merges when changes are pushed for review</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="rejectImplicitMergesSelect"
|
|
bind-value="{{_repoConfig.reject_implicit_merges.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.reject_implicit_merges)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">
|
|
Enable adding unregistered users as reviewers and CCs on changes</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="unRegisteredCcSelect"
|
|
bind-value="{{_repoConfig.enable_reviewer_by_email.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.enable_reviewer_by_email)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">
|
|
Set all new changes private by default</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="setAllnewChangesPrivateByDefaultSelect"
|
|
bind-value="{{_repoConfig.private_by_default.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.private_by_default)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">
|
|
Set new changes to "work in progress" by default</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="setAllNewChangesWorkInProgressByDefaultSelect"
|
|
bind-value="{{_repoConfig.work_in_progress_by_default.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.work_in_progress_by_default)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Maximum Git object size limit</span>
|
|
<span class="value">
|
|
<iron-input
|
|
id="maxGitObjSizeIronInput"
|
|
bind-value="{{_repoConfig.max_object_size_limit.configured_value}}"
|
|
type="text"
|
|
disabled$="[[_readOnly]]">
|
|
<input
|
|
id="maxGitObjSizeInput"
|
|
bind-value="{{_repoConfig.max_object_size_limit.configured_value}}"
|
|
is="iron-input"
|
|
type="text"
|
|
disabled$="[[_readOnly]]">
|
|
</iron-input>
|
|
<template is="dom-if" if="[[_repoConfig.max_object_size_limit.value]]">
|
|
effective: [[_repoConfig.max_object_size_limit.value]] bytes
|
|
</template>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Match authored date with committer date upon submit</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="matchAuthoredDateWithCommitterDateSelect"
|
|
bind-value="{{_repoConfig.match_author_to_committer_date.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.match_author_to_committer_date)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Reject empty commit upon submit</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="rejectEmptyCommitSelect"
|
|
bind-value="{{_repoConfig.reject_empty_commit.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.reject_empty_commit)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
</fieldset>
|
|
<h3 id="Options">Contributor Agreements</h3>
|
|
<fieldset id="agreements">
|
|
<section>
|
|
<span class="title">
|
|
Require a valid contributor agreement to upload</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="contributorAgreementSelect"
|
|
bind-value="{{_repoConfig.use_contributor_agreements.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.use_contributor_agreements)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Require Signed-off-by in commit message</span>
|
|
<span class="value">
|
|
<gr-select
|
|
id="useSignedOffBySelect"
|
|
bind-value="{{_repoConfig.use_signed_off_by.configured_value}}">
|
|
<select disabled$="[[_readOnly]]">
|
|
<template is="dom-repeat"
|
|
items="[[_formatBooleanSelect(_repoConfig.use_signed_off_by)]]">
|
|
<option value="[[item.value]]">[[item.label]]</option>
|
|
</template>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
</fieldset>
|
|
<div
|
|
class$="pluginConfig [[_computeHideClass(_pluginData)]]"
|
|
on-plugin-config-changed="_handlePluginConfigChanged">
|
|
<h3>Plugins</h3>
|
|
<template is="dom-repeat" items="[[_pluginData]]" as="data">
|
|
<gr-repo-plugin-config
|
|
plugin-data="[[data]]"></gr-repo-plugin-config>
|
|
</template>
|
|
</div>
|
|
<gr-button
|
|
on-click="_handleSaveRepoConfig"
|
|
disabled$="[[_computeButtonDisabled(_readOnly, _configChanged)]]">Save changes</gr-button>
|
|
</fieldset>
|
|
<gr-endpoint-decorator name="repo-config">
|
|
<gr-endpoint-param name="repoName" value="[[repo]]"></gr-endpoint-param>
|
|
<gr-endpoint-param name="readOnly" value="[[_readOnly]]"></gr-endpoint-param>
|
|
</gr-endpoint-decorator>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
<gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
|
|
</template>
|
|
<script src="gr-repo.js"></script>
|
|
</dom-module>
|