| Index: appengine/monorail/static/js/tracker/tracker-fields.js
|
| diff --git a/appengine/monorail/static/js/tracker/tracker-fields.js b/appengine/monorail/static/js/tracker/tracker-fields.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..cf91e6e35a16956fdfab570ef981ad6142ff5eb3
|
| --- /dev/null
|
| +++ b/appengine/monorail/static/js/tracker/tracker-fields.js
|
| @@ -0,0 +1,86 @@
|
| +/* Copyright 2016 The Chromium Authors. All Rights Reserved.
|
| + *
|
| + * Use of this source code is governed by a BSD-style
|
| + * license that can be found in the LICENSE file or at
|
| + * https://developers.google.com/open-source/licenses/bsd
|
| + */
|
| +
|
| +/**
|
| + * This file contains JS code for editing fields and field definitions.
|
| + */
|
| +
|
| +var TKR_fieldNameXmlHttp;
|
| +
|
| +
|
| +/**
|
| + * Function that communicates with the server.
|
| + * @param {string} projectName Current project name.
|
| + * @param {string} fieldName The proposed field name.
|
| + * @param {string} token security token.
|
| + */
|
| +function TKR_checkFieldNameOnServer(projectName, fieldName, token) {
|
| + var url = ('/p/' + projectName + '/fields/checkName' +
|
| + '?field=' + encodeURIComponent(fieldName) +
|
| + '&token=' + token);
|
| + TKR_fieldNameXmlHttp = XH_XmlHttpCreate();
|
| + XH_XmlHttpGET(TKR_fieldNameXmlHttp, url, TKR_fieldNameCallback);
|
| +}
|
| +
|
| +/**
|
| + * The communication with the server has made some progress. If it is
|
| + * done, then process the response.
|
| + */
|
| +function TKR_fieldNameCallback() {
|
| + if (TKR_fieldNameXmlHttp.readyState == 4) {
|
| + if (TKR_fieldNameXmlHttp.status == 200) {
|
| + TKR_gotFieldNameFeed(TKR_fieldNameXmlHttp);
|
| + }
|
| + }
|
| +}
|
| +
|
| +
|
| +/**
|
| + * Function that evaluates the server response and sets the error message.
|
| + * @param {object} xhr AJAX response with JSON text.
|
| + */
|
| +function TKR_gotFieldNameFeed(xhr) {
|
| + var json_data = null;
|
| + try {
|
| + json_data = CS_parseJSON(xhr);
|
| + }
|
| + catch (e) {
|
| + return;
|
| + }
|
| + var errorMessage = json_data['error_message'];
|
| + $('fieldnamefeedback').innerText = errorMessage;
|
| +
|
| + var choicesLines = [];
|
| + if (json_data['choices'].length > 0) {
|
| + for (var i = 0; i < json_data['choices'].length; i++) {
|
| + choicesLines.push(
|
| + json_data['choices'][i]['name'] + ' = ' +
|
| + json_data['choices'][i]['doc']);
|
| + }
|
| + $('choices').innerText = choicesLines.join('\n');
|
| + $('field_type').value = 'enum_type';
|
| + $('choices_row').style.display = '';
|
| + enableOtherTypeOptions(true);
|
| + } else {
|
| + enableOtherTypeOptions(false);
|
| + }
|
| +
|
| + $('submit_btn').disabled = errorMessage ? 'disabled' : '';
|
| +}
|
| +
|
| +
|
| +function enableOtherTypeOptions(disabled) {
|
| + var type_option_el = $('field_type').firstChild;
|
| + while (type_option_el) {
|
| + if (type_option_el.tagName == 'OPTION') {
|
| + if (type_option_el.value != 'enum_type') {
|
| + type_option_el.disabled = disabled ? 'disabled' : '';
|
| + }
|
| + }
|
| + type_option_el = type_option_el.nextSibling;
|
| + }
|
| +}
|
|
|