summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/users_select/utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/users_select/utils.js')
-rw-r--r--app/assets/javascripts/users_select/utils.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/app/assets/javascripts/users_select/utils.js b/app/assets/javascripts/users_select/utils.js
new file mode 100644
index 00000000000..b46fd15fb77
--- /dev/null
+++ b/app/assets/javascripts/users_select/utils.js
@@ -0,0 +1,27 @@
+/**
+ * Get options from data attributes on passed `$select`.
+ * @param {jQuery} $select
+ * @param {Object} optionsMap e.g. { optionKeyName: 'dataAttributeName' }
+ */
+export const getAjaxUsersSelectOptions = ($select, optionsMap) => {
+ return Object.keys(optionsMap).reduce((accumulator, optionKey) => {
+ const dataKey = optionsMap[optionKey];
+ accumulator[optionKey] = $select.data(dataKey);
+
+ return accumulator;
+ }, {});
+};
+
+/**
+ * Get query parameters used for users request from passed `options` parameter
+ * @param {Object} options e.g. { currentUserId: 1, fooBar: 'baz' }
+ * @param {Object} paramsMap e.g. { user_id: 'currentUserId', foo_bar: 'fooBar' }
+ */
+export const getAjaxUsersSelectParams = (options, paramsMap) => {
+ return Object.keys(paramsMap).reduce((accumulator, paramKey) => {
+ const optionKey = paramsMap[paramKey];
+ accumulator[paramKey] = options[optionKey] || null;
+
+ return accumulator;
+ }, {});
+};