Blockchain explorer for Ethereum based network and a tool for inspecting and analyzing EVM based blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blockscout/apps/block_scout_web/assets/js/lib/datepicker.js

87 lines
2.2 KiB

import * as Pikaday from 'pikaday'
import moment from 'moment'
import $ from 'jquery'
const DATE_FORMAT = 'YYYY-MM-DD'
const $button = $('#export-csv-button')
// eslint-disable-next-line
const _instance1 = new Pikaday({
field: $('.js-datepicker-from')[0],
onSelect: (date) => onSelect(date, 'from_period'),
defaultDate: moment().add(-1, 'months').toDate(),
setDefaultDate: true,
maxDate: new Date(),
format: DATE_FORMAT
})
// eslint-disable-next-line
const _instance2 = new Pikaday({
field: $('.js-datepicker-to')[0],
onSelect: (date) => onSelect(date, 'to_period'),
defaultDate: new Date(),
setDefaultDate: true,
maxDate: new Date(),
format: DATE_FORMAT
})
$button.on('click', () => {
$button.addClass('spinner')
// eslint-disable-next-line
const resp = grecaptcha.getResponse()
if (resp) {
$.ajax({
url: './captcha?type=JSON',
type: 'POST',
headers: {
'x-csrf-token': $('[name=_csrf_token]').val()
},
data: {
type: 'JSON',
captchaResponse: resp
}
})
.done(function (data) {
// eslint-disable-next-line
grecaptcha.reset()
const dataJson = JSON.parse(data)
if (dataJson.success) {
$button.removeClass('spinner')
location.href = $button.data('link')
} else {
$button.removeClass('spinner')
return false
}
})
.fail(function (_jqXHR, textStatus) {
$button.removeClass('spinner')
})
} else {
$button.removeClass('spinner')
}
})
function onSelect (date, paramToReplace) {
const formattedDate = moment(date).format(DATE_FORMAT)
if (date) {
const csvExportPath = $button.data('link')
const updatedCsvExportUrl = replaceUrlParam(csvExportPath, paramToReplace, formattedDate)
$button.data('link', updatedCsvExportUrl)
}
}
function replaceUrlParam (url, paramName, paramValue) {
if (paramValue == null) {
paramValue = ''
}
const pattern = new RegExp('\\b(' + paramName + '=).*?(&|#|$)')
if (url.search(pattern) >= 0) {
return url.replace(pattern, '$1' + paramValue + '$2')
}
url = url.replace(/[?#]$/, '')
return url + (url.indexOf('?') > 0 ? '&' : '?') + paramName + '=' + paramValue
}