From b2ce600820b9c6799b7fec8740e70b8c1ce35d4d Mon Sep 17 00:00:00 2001 From: Urban Rotnik Date: Wed, 6 Nov 2019 11:29:00 +0100 Subject: [PATCH] Add delimiter column for repository_column --- .../columns_initializers/list_column_type.js | 27 ++++++++++++++++--- .../javascripts/repository_columns/index.js | 1 + .../list_columns_controller.rb | 10 ++++++- .../repository_columns_controller.rb | 12 +++------ app/helpers/repository_columns_helper.rb | 9 +++++++ .../update_list_column_service.rb | 2 +- .../manage_column_partials/_list.html.erb | 17 ++++++------ config/initializers/constants.rb | 7 ++++- config/locales/en.yml | 1 + ...3702_add_delimiter_to_repository_column.rb | 7 +++++ db/structure.sql | 6 +++-- .../list_columns_controller_spec.rb | 4 +-- 12 files changed, 76 insertions(+), 27 deletions(-) create mode 100644 app/helpers/repository_columns_helper.rb create mode 100644 db/migrate/20191105143702_add_delimiter_to_repository_column.rb diff --git a/app/assets/javascripts/repository_columns/columns_initializers/list_column_type.js b/app/assets/javascripts/repository_columns/columns_initializers/list_column_type.js index b5ba2ab26..517813a93 100644 --- a/app/assets/javascripts/repository_columns/columns_initializers/list_column_type.js +++ b/app/assets/javascripts/repository_columns/columns_initializers/list_column_type.js @@ -1,4 +1,4 @@ -/* global GLOBAL_CONSTANTS */ +/* global GLOBAL_CONSTANTS I18n */ /* eslint-disable no-unused-vars */ var RepositoryListColumnType = (function() { var manageModal = '#manageRepositoryColumn'; @@ -9,6 +9,7 @@ var RepositoryListColumnType = (function() { function textToItems(text, delimiter) { var res = []; + var usedDelimiter = ''; var definedDelimiters = { return: '\n', comma: ',', @@ -16,18 +17,23 @@ var RepositoryListColumnType = (function() { space: ' ' }; - var delimiters = [] + var delimiters = []; if (delimiter === 'auto') { - delimiters = ['\n', ',', ';', '|', ' ']; + delimiters = ['\n', ',', ';', ' ']; } else { delimiters.push(definedDelimiters[delimiter]); } $.each(delimiters, (index, currentDelimiter) => { res = text.trim().split(currentDelimiter); + usedDelimiter = Object + .keys(definedDelimiters) + .find(key => definedDelimiters[key] === currentDelimiter); + if (res.length > 1) { return false; } + return true; }); res = res.filter(Boolean).filter(onlyUnique); @@ -35,9 +41,16 @@ var RepositoryListColumnType = (function() { $.each(res, (index, option) => { res[index] = option.slice(0, GLOBAL_CONSTANTS.NAME_MAX_LENGTH); }); + + $('select#delimiter').attr('data-used-delimiter', usedDelimiter); return res; } + function pluralizeWord(count, noun, suffix = 's') { + return `${noun}${count !== 1 ? suffix : ''}`; + } + + function drawDropdownPreview(items) { var $manageModal = $(manageModal); var $dropdownPreview = $manageModal.find('.dropdown-preview select'); @@ -48,6 +61,13 @@ var RepositoryListColumnType = (function() { text: item })); }); + + if (items.length === 0) { + $dropdownPreview.append($('