diff options
Diffstat (limited to 'app/assets/javascripts/pages/admin/application_settings')
4 files changed, 71 insertions, 11 deletions
diff --git a/app/assets/javascripts/pages/admin/application_settings/general/components/signup_form.vue b/app/assets/javascripts/pages/admin/application_settings/general/components/signup_form.vue index c2510a16d2f..3ef75b3ef0e 100644 --- a/app/assets/javascripts/pages/admin/application_settings/general/components/signup_form.vue +++ b/app/assets/javascripts/pages/admin/application_settings/general/components/signup_form.vue @@ -140,8 +140,8 @@ export default { return { id: 'signup-settings-modal', text: n__( - 'ApplicationSettings|By making this change, you will automatically approve %d user with the pending approval status.', - 'ApplicationSettings|By making this change, you will automatically approve %d users with the pending approval status.', + 'ApplicationSettings|By making this change, you will automatically approve %d user who is pending approval.', + 'ApplicationSettings|By making this change, you will automatically approve %d users who are pending approval.', pendingUserCount, ), actionPrimary: { @@ -157,7 +157,7 @@ export default { actionCancel: { text: __('Cancel'), }, - title: s__('ApplicationSettings|Approve users in the pending approval status?'), + title: s__('ApplicationSettings|Approve users who are pending approval?'), }; }, }, diff --git a/app/assets/javascripts/pages/admin/application_settings/payload_downloader.js b/app/assets/javascripts/pages/admin/application_settings/payload_downloader.js new file mode 100644 index 00000000000..67eee2c3209 --- /dev/null +++ b/app/assets/javascripts/pages/admin/application_settings/payload_downloader.js @@ -0,0 +1,52 @@ +import createFlash from '~/flash'; +import axios from '../../../lib/utils/axios_utils'; +import { __ } from '../../../locale'; + +export default class PayloadDownloader { + constructor(trigger) { + this.trigger = trigger; + } + + init() { + this.spinner = this.trigger.querySelector('.js-spinner'); + this.text = this.trigger.querySelector('.js-text'); + + this.trigger.addEventListener('click', (event) => { + event.preventDefault(); + + return this.requestPayload(); + }); + } + + requestPayload() { + this.spinner.classList.add('d-inline-flex'); + + return axios + .get(this.trigger.dataset.endpoint, { + responseType: 'json', + }) + .then(({ data }) => { + PayloadDownloader.downloadFile(data); + }) + .catch(() => { + createFlash({ + message: __('Error fetching payload data.'), + }); + }) + .finally(() => { + this.spinner.classList.remove('d-inline-flex'); + }); + } + + static downloadFile(data) { + const blob = new Blob([JSON.stringify(data)], { type: 'application/json' }); + + const link = document.createElement('a'); + link.href = window.URL.createObjectURL(blob); + link.download = `${data.recorded_at.slice(0, 10)} payload.json`; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + window.URL.revokeObjectURL(link.href); + } +} diff --git a/app/assets/javascripts/pages/admin/application_settings/payload_previewer.js b/app/assets/javascripts/pages/admin/application_settings/payload_previewer.js index 08f6633f424..c017cf0afa2 100644 --- a/app/assets/javascripts/pages/admin/application_settings/payload_previewer.js +++ b/app/assets/javascripts/pages/admin/application_settings/payload_previewer.js @@ -5,7 +5,6 @@ import { __ } from '../../../locale'; export default class PayloadPreviewer { constructor(trigger) { this.trigger = trigger; - this.container = document.querySelector(trigger.dataset.payloadSelector); this.isVisible = false; this.isInserted = false; } @@ -23,21 +22,27 @@ export default class PayloadPreviewer { }); } + getContainer() { + return document.querySelector(this.trigger.dataset.payloadSelector); + } + requestPayload() { if (this.isInserted) return this.showPayload(); - this.spinner.classList.add('d-inline-flex'); + this.spinner.classList.add('gl-display-inline-flex'); + + const container = this.getContainer(); return axios - .get(this.container.dataset.endpoint, { + .get(container.dataset.endpoint, { responseType: 'text', }) .then(({ data }) => { - this.spinner.classList.remove('d-inline-flex'); + this.spinner.classList.remove('gl-display-inline-flex'); this.insertPayload(data); }) .catch(() => { - this.spinner.classList.remove('d-inline-flex'); + this.spinner.classList.remove('gl-display-inline-flex'); createFlash({ message: __('Error fetching payload data.'), }); @@ -46,19 +51,19 @@ export default class PayloadPreviewer { hidePayload() { this.isVisible = false; - this.container.classList.add('d-none'); + this.getContainer().classList.add('gl-display-none'); this.text.textContent = __('Preview payload'); } showPayload() { this.isVisible = true; - this.container.classList.remove('d-none'); + this.getContainer().classList.remove('gl-display-none'); this.text.textContent = __('Hide payload'); } insertPayload(data) { this.isInserted = true; - this.container.innerHTML = data; + this.getContainer().innerHTML = data; this.showPayload(); } } diff --git a/app/assets/javascripts/pages/admin/application_settings/service_usage_data/index.js b/app/assets/javascripts/pages/admin/application_settings/service_usage_data/index.js new file mode 100644 index 00000000000..8a12e753847 --- /dev/null +++ b/app/assets/javascripts/pages/admin/application_settings/service_usage_data/index.js @@ -0,0 +1,3 @@ +import initServiceUsageData from '~/admin/application_settings/setup_service_usage_data'; + +initServiceUsageData(); |