| Index: appengine/swarming/elements/res/imp/common/url-param.html
|
| diff --git a/appengine/swarming/elements/res/imp/common/url-param.html b/appengine/swarming/elements/res/imp/common/url-param.html
|
| deleted file mode 100644
|
| index feedc23dd6e45b490824102bf7745545965a12e5..0000000000000000000000000000000000000000
|
| --- a/appengine/swarming/elements/res/imp/common/url-param.html
|
| +++ /dev/null
|
| @@ -1,188 +0,0 @@
|
| -<!--
|
| - Copyright 2016 The LUCI Authors. All rights reserved.
|
| - Use of this source code is governed under the Apache License, Version 2.0
|
| - that can be found in the LICENSE file.
|
| -
|
| - This in an HTML Import-able file that contains the definition
|
| - of the following elements:
|
| -
|
| - <url-param>
|
| -
|
| - This element uses two-way* data binding to synchronize a URL parameter with
|
| - a variable. On page load, if the parameter is provided in the URL, its value
|
| - is assigned to the variable. When the variable changes, its new value is
|
| - updated in the URL. If there are problems, a toast message will pop up and
|
| - display it.
|
| -
|
| - * It's not exactly two-way, because the URL is not watched for changes. This
|
| - is fine in most cases, since the page reloads when the URL is changed by the
|
| - user, and it should be rare that the parameter is changed by a different
|
| - piece of code.
|
| -
|
| - This element requires version 1.0.1 or greater of the npm package
|
| - skia-common-js and that the common.js from that package is included before
|
| - the instantiation of this element.
|
| -
|
| - Attributes:
|
| - default_value: String, Default value to be used. This will be clobbered
|
| - by any value given in an element's properties.
|
| - default_values: Array<String>, Default values to be used if multi is set to
|
| - true. This will be clobbered by any value given in an element's
|
| - properties.
|
| - multi: Boolean, Whether the variable can take multiple values. Default is
|
| - false. If true, 'value' must be an array of strings and default_values
|
| - will be used instead of default_value.
|
| - name: String, The name of the URL parameter.
|
| - valid: Array<String> Acceptable values. Default is null. If empty or
|
| - null, any value is accepted. If an invalid value is provided in the
|
| - URL parameters, the existing or default value is used.
|
| - value: String|Array<String>, The value(s) of the URL parameter.
|
| -
|
| -
|
| - Events:
|
| - None
|
| -
|
| - Methods:
|
| - None
|
| --->
|
| -
|
| -<link rel="import" href="/res/imp/bower_components/paper-toast/paper-toast.html">
|
| -
|
| -<dom-module id="url-param">
|
| - <template>
|
| - <paper-toast id="toast"></paper-toast>
|
| - </template>
|
| - <script>
|
| - (function(){
|
| - Polymer({
|
| - is: 'url-param',
|
| - properties: {
|
| - default_value: {
|
| - type: String,
|
| - },
|
| - default_values: {
|
| - type: Array,
|
| - },
|
| - multi: {
|
| - type: Boolean,
|
| - value: false,
|
| - },
|
| - name: {
|
| - type: String,
|
| - },
|
| - valid: {
|
| - type: Array,
|
| - },
|
| - value: {
|
| - type: String,
|
| - value: '',
|
| - notify: true,
|
| - observer: '_valueChanged',
|
| - },
|
| -
|
| - _loaded: {
|
| - type: Boolean,
|
| - value: false,
|
| - }
|
| - },
|
| - // Listens to array changes for multi urls
|
| - observers: ["_valueChanged(value.splices)"],
|
| -
|
| - ready: function () {
|
| - this._loaded = true;
|
| -
|
| - // Read the URL parameters. If our variable is set, save its value.
|
| - // Otherwise, place our value in the URL.
|
| - var val = this._getURL();
|
| - if (val && this._isValid(val)) {
|
| - this.set('value', val);
|
| - } else if (this.default_value && this._isValid(this.default_value)) {
|
| - this.set('value', this.default_value);
|
| - }
|
| - else if (this.multi && this.default_values && this._isValid(this.default_values)) {
|
| - this.set('value', this.default_values);
|
| - }
|
| - else {
|
| - this._putURL();
|
| - }
|
| - },
|
| - // Retrieve the value for our variable from the URL.
|
| - _getURL: function () {
|
| - var vals = sk.query.toParamSet(window.location.search.substring(1))[this.name];
|
| - if (!vals) {
|
| - return null;
|
| - }
|
| - if (this.multi) {
|
| - return vals;
|
| - }
|
| - if (vals.length > 1) {
|
| - this._error('Multiple values provided for ' + this.name + ' but only one accepted: ' + vals);
|
| - return null;
|
| - }
|
| - return vals[0];
|
| - },
|
| - // Store the value for our variable in the URL.
|
| - _putURL: function () {
|
| - var params = sk.query.toParamSet(window.location.search.substring(1));
|
| - delete params[this.name];
|
| - if (!this.value || Array.isArray(this.value) && this.value.length == 0) {
|
| - } else
|
| - // Don't insert undefined/empty values.
|
| - {
|
| - if (this.multi) {
|
| - params[this.name] = this.value;
|
| - } else {
|
| - params[this.name] = [this.value];
|
| - }
|
| - }
|
| - var newUrl = window.location.href.split('?')[0] + '?' + sk.query.fromParamSet(params);
|
| - window.history.replaceState('', '', newUrl);
|
| - },
|
| - // Check to see whether the given value is valid.
|
| - _isValid: function (val) {
|
| - var checkValid = function (val) {
|
| - if (this.valid) {
|
| - for (var i = 0; i < this.valid.length; i++) {
|
| - if (val == this.valid[i]) {
|
| - return true;
|
| - }
|
| - }
|
| - this._error('Invalid value for ' + this.name + ': "' + val + '". Must be one of: ' + this.valid);
|
| - return false;
|
| - }
|
| - return true;
|
| - }.bind(this);
|
| - if (this.multi) {
|
| - // Verify that it's an array and that all elements are valid.
|
| - if (!Array.isArray(val)) {
|
| - this._error('url-param-sk: Value is not an array: ' + val);
|
| - return false;
|
| - }
|
| - for (var i = 0; i < val.length; i++) {
|
| - if (!checkValid(val[i])) {
|
| - return false;
|
| - }
|
| - }
|
| - } else {
|
| - if (Array.isArray(val)) {
|
| - this._error('Multiple values provided for ' + this.name + ' but only one accepted: ' + val);
|
| - }
|
| - return checkValid(val);
|
| - }
|
| - return true;
|
| - },
|
| - _valueChanged: function () {
|
| - if (this._loaded) {
|
| - // Save our value to the URL.
|
| - this._putURL();
|
| - }
|
| - },
|
| - _error: function (msg) {
|
| - console.log('[ERROR] '+msg);
|
| - this.set('$.toast.text', msg);
|
| - this.$.toast.show();
|
| - }
|
| - });
|
| - })()
|
| - </script>
|
| -</dom-module>
|
|
|