/** * @license * Copyright (C) 2018 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-included-in-dialog', _legacyUndefinedCheck: true, /** * Fired when the user presses the close button. * * @event close */ properties: { /** @type {?} */ changeNum: { type: Object, observer: '_resetData', }, /** @type {?} */ _includedIn: Object, _loaded: { type: Boolean, value: false, }, _filterText: { type: String, value: '', }, }, behaviors: [ Gerrit.FireBehavior, ], loadData() { if (!this.changeNum) { return; } this._filterText = ''; return this.$.restAPI.getChangeIncludedIn(this.changeNum).then( configs => { if (!configs) { return; } this._includedIn = configs; this._loaded = true; }); }, _resetData() { this._includedIn = null; this._loaded = false; }, _computeGroups(includedIn, filterText) { if (!includedIn) { return []; } const filter = item => !filterText.length || item.toLowerCase().indexOf(filterText.toLowerCase()) !== -1; const groups = [ {title: 'Branches', items: includedIn.branches.filter(filter)}, {title: 'Tags', items: includedIn.tags.filter(filter)}, ]; if (includedIn.external) { for (const externalKey of Object.keys(includedIn.external)) { groups.push({ title: externalKey, items: includedIn.external[externalKey].filter(filter), }); } } return groups.filter(g => g.items.length); }, _handleCloseTap(e) { e.preventDefault(); this.fire('close', null, {bubbles: false}); }, _computeLoadingClass(loaded) { return loaded ? 'loading loaded' : 'loading'; }, _onFilterChanged() { this.debounce('filter-change', () => { this._filterText = this.$.filterInput.bindValue; }, 100); }, }); })();