 5823b8ec32
			
		
	
	5823b8ec32
	
	
	
		
			
			Without this field, only admins can modify repos created with this form.
Change-Id: I1a332571a2074617ab270c3fffaf2d4932d14a6a
(cherry picked from commit 5e32484fab)
		
	
		
			
				
	
	
		
			133 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * @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.
 | |
|  */
 | |
| (function() {
 | |
|   'use strict';
 | |
| 
 | |
|   Polymer({
 | |
|     is: 'gr-create-repo-dialog',
 | |
| 
 | |
|     properties: {
 | |
|       params: Object,
 | |
|       hasNewRepoName: {
 | |
|         type: Boolean,
 | |
|         notify: true,
 | |
|         value: false,
 | |
|       },
 | |
| 
 | |
|       /** @type {?} */
 | |
|       _repoConfig: {
 | |
|         type: Object,
 | |
|         value: () => {
 | |
|           // Set default values for dropdowns.
 | |
|           return {
 | |
|             create_empty_commit: true,
 | |
|             permissions_only: false,
 | |
|           };
 | |
|         },
 | |
|       },
 | |
|       _repoCreated: {
 | |
|         type: Boolean,
 | |
|         value: false,
 | |
|       },
 | |
|       _repoOwner: String,
 | |
|       _repoOwnerId: {
 | |
|         type: String,
 | |
|         observer: '_repoOwnerIdUpdate',
 | |
|       },
 | |
| 
 | |
|       _query: {
 | |
|         type: Function,
 | |
|         value() {
 | |
|           return this._getRepoSuggestions.bind(this);
 | |
|         },
 | |
|       },
 | |
|       _queryGroups: {
 | |
|         type: Function,
 | |
|         value() {
 | |
|           return this._getGroupSuggestions.bind(this);
 | |
|         },
 | |
|       },
 | |
|     },
 | |
| 
 | |
|     observers: [
 | |
|       '_updateRepoName(_repoConfig.name)',
 | |
|     ],
 | |
| 
 | |
|     behaviors: [
 | |
|       Gerrit.BaseUrlBehavior,
 | |
|       Gerrit.URLEncodingBehavior,
 | |
|     ],
 | |
| 
 | |
|     _computeRepoUrl(repoName) {
 | |
|       return this.getBaseUrl() + '/admin/repos/' +
 | |
|           this.encodeURL(repoName, true);
 | |
|     },
 | |
| 
 | |
|     _updateRepoName(name) {
 | |
|       this.hasNewRepoName = !!name;
 | |
|     },
 | |
| 
 | |
|     _repoOwnerIdUpdate(id) {
 | |
|       if (id) {
 | |
|         this.set('_repoConfig.owners', [id]);
 | |
|       } else {
 | |
|         this.set('_repoConfig.owners', undefined);
 | |
|       }
 | |
|     },
 | |
| 
 | |
|     handleCreateRepo() {
 | |
|       return this.$.restAPI.createRepo(this._repoConfig)
 | |
|           .then(repoRegistered => {
 | |
|             if (repoRegistered.status === 201) {
 | |
|               this._repoCreated = true;
 | |
|               page.show(this._computeRepoUrl(this._repoConfig.name));
 | |
|             }
 | |
|           });
 | |
|     },
 | |
| 
 | |
|     _getRepoSuggestions(input) {
 | |
|       return this.$.restAPI.getSuggestedProjects(input)
 | |
|           .then(response => {
 | |
|             const repos = [];
 | |
|             for (const key in response) {
 | |
|               if (!response.hasOwnProperty(key)) { continue; }
 | |
|               repos.push({
 | |
|                 name: key,
 | |
|                 value: response[key],
 | |
|               });
 | |
|             }
 | |
|             return repos;
 | |
|           });
 | |
|     },
 | |
| 
 | |
|     _getGroupSuggestions(input) {
 | |
|       return this.$.restAPI.getSuggestedGroups(input)
 | |
|           .then(response => {
 | |
|             const groups = [];
 | |
|             for (const key in response) {
 | |
|               if (!response.hasOwnProperty(key)) { continue; }
 | |
|               groups.push({
 | |
|                 name: key,
 | |
|                 value: decodeURIComponent(response[key].id),
 | |
|               });
 | |
|             }
 | |
|             return groups;
 | |
|           });
 | |
|     },
 | |
|   });
 | |
| })();
 |