Add ability to pick the dates of the logs viewed
This commit is contained in:
parent
7b38482fd9
commit
a3b834cd66
8 changed files with 909 additions and 54 deletions
|
@ -1059,7 +1059,7 @@ def delete_webhook(namespace_name, repository_name, public_id):
|
||||||
webhook.delete_instance()
|
webhook.delete_instance()
|
||||||
return webhook
|
return webhook
|
||||||
|
|
||||||
def list_logs(user_or_organization_name, start_time, performer = None, repository = None):
|
def list_logs(user_or_organization_name, start_time, end_time, performer = None, repository = None):
|
||||||
joined = LogEntry.select().join(User)
|
joined = LogEntry.select().join(User)
|
||||||
if repository:
|
if repository:
|
||||||
joined = joined.where(LogEntry.repository == repository)
|
joined = joined.where(LogEntry.repository == repository)
|
||||||
|
@ -1067,7 +1067,10 @@ def list_logs(user_or_organization_name, start_time, performer = None, repositor
|
||||||
if performer:
|
if performer:
|
||||||
joined = joined.where(LogEntry.performer == performer)
|
joined = joined.where(LogEntry.performer == performer)
|
||||||
|
|
||||||
return joined.where(User.username == user_or_organization_name, LogEntry.datetime >= start_time).order_by(LogEntry.datetime.desc())
|
return joined.where(
|
||||||
|
User.username == user_or_organization_name,
|
||||||
|
LogEntry.datetime >= start_time,
|
||||||
|
LogEntry.datetime <= end_time).order_by(LogEntry.datetime.desc())
|
||||||
|
|
||||||
def log_action(kind_name, user_or_organization_name, performer=None, repository=None,
|
def log_action(kind_name, user_or_organization_name, performer=None, repository=None,
|
||||||
access_token=None, ip=None, metadata={}, timestamp=None):
|
access_token=None, ip=None, metadata={}, timestamp=None):
|
||||||
|
|
|
@ -742,24 +742,6 @@ def update_repo_api(namespace, repository):
|
||||||
abort(403)
|
abort(403)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/api/repository/<path:repository>/logs', methods=['GET'])
|
|
||||||
@api_login_required
|
|
||||||
@parse_repository_name
|
|
||||||
def repo_logs_api(namespace, repository):
|
|
||||||
permission = AdministerRepositoryPermission(namespace, repository)
|
|
||||||
if permission.can():
|
|
||||||
repo = model.get_repository(namespace, repository)
|
|
||||||
if not repo:
|
|
||||||
abort(404)
|
|
||||||
|
|
||||||
logs = model.list_logs(namespace, repository = repo)
|
|
||||||
return jsonify({
|
|
||||||
'logs': [log_view(log) for log in logs]
|
|
||||||
})
|
|
||||||
|
|
||||||
abort(403)
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/api/repository/<path:repository>/changevisibility',
|
@app.route('/api/repository/<path:repository>/changevisibility',
|
||||||
methods=['POST'])
|
methods=['POST'])
|
||||||
@api_login_required
|
@api_login_required
|
||||||
|
@ -1751,22 +1733,66 @@ def log_view(log):
|
||||||
|
|
||||||
return view
|
return view
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/api/repository/<path:repository>/logs', methods=['GET'])
|
||||||
|
@api_login_required
|
||||||
|
@parse_repository_name
|
||||||
|
def repo_logs_api(namespace, repository):
|
||||||
|
permission = AdministerRepositoryPermission(namespace, repository)
|
||||||
|
if permission.can():
|
||||||
|
repo = model.get_repository(namespace, repository)
|
||||||
|
if not repo:
|
||||||
|
abort(404)
|
||||||
|
|
||||||
|
start_time = request.args.get('starttime', None)
|
||||||
|
end_time = request.args.get('endtime', None)
|
||||||
|
return get_logs(namespace, start_time, end_time, repository=repo)
|
||||||
|
|
||||||
|
abort(403)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/api/organization/<orgname>/logs', methods=['GET'])
|
@app.route('/api/organization/<orgname>/logs', methods=['GET'])
|
||||||
@api_login_required
|
@api_login_required
|
||||||
def org_logs_api(orgname):
|
def org_logs_api(orgname):
|
||||||
permission = AdministerOrganizationPermission(orgname)
|
permission = AdministerOrganizationPermission(orgname)
|
||||||
if permission.can():
|
if permission.can():
|
||||||
performer_name = request.args.get('performer', None)
|
performer_name = request.args.get('performer', None)
|
||||||
performer = None
|
start_time = request.args.get('starttime', None)
|
||||||
if performer_name:
|
end_time = request.args.get('endtime', None)
|
||||||
performer = model.get_user(performer_name)
|
|
||||||
|
|
||||||
week_ago = datetime.today() - timedelta(7) # One week
|
return get_logs(orgname, start_time, end_time, performer_name=performer_name)
|
||||||
logs = model.list_logs(orgname, week_ago, performer = performer)
|
|
||||||
return jsonify({
|
|
||||||
'start_time': week_ago,
|
|
||||||
'logs': [log_view(log) for log in logs]
|
|
||||||
})
|
|
||||||
|
|
||||||
abort(403)
|
abort(403)
|
||||||
|
|
||||||
|
|
||||||
|
def get_logs(namespace, start_time, end_time, performer_name=None, repository=None):
|
||||||
|
performer = None
|
||||||
|
if performer_name:
|
||||||
|
performer = model.get_user(performer_name)
|
||||||
|
|
||||||
|
if start_time:
|
||||||
|
try:
|
||||||
|
start_time = datetime.strptime(start_time, '%m/%d/%Y')
|
||||||
|
except ValueError:
|
||||||
|
start_time = None
|
||||||
|
|
||||||
|
if not start_time:
|
||||||
|
start_time = datetime.today() - timedelta(7) # One week
|
||||||
|
|
||||||
|
if end_time:
|
||||||
|
try:
|
||||||
|
end_time = datetime.strptime(end_time, '%m/%d/%Y')
|
||||||
|
except ValueError:
|
||||||
|
end_time = None
|
||||||
|
|
||||||
|
if not end_time:
|
||||||
|
end_time = datetime.today()
|
||||||
|
|
||||||
|
logs = model.list_logs(namespace, start_time, end_time, performer = performer, repository=repository)
|
||||||
|
return jsonify({
|
||||||
|
'start_time': start_time,
|
||||||
|
'end_time': end_time,
|
||||||
|
'logs': [log_view(log) for log in logs]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
|
@ -160,6 +160,13 @@ i.toggle-icon:hover {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.logs-view-element .header input {
|
||||||
|
font-size: 14px;
|
||||||
|
text-align: center;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
.logs-view-element .header .right {
|
.logs-view-element .header .right {
|
||||||
float: right;
|
float: right;
|
||||||
|
|
|
@ -1,23 +1,28 @@
|
||||||
<div class="logs-view-element">
|
<div class="logs-view-element">
|
||||||
|
|
||||||
|
<div class="container header">
|
||||||
|
<span class="header-text">
|
||||||
|
<span ng-show="!performer">Usage Logs</span>
|
||||||
|
<span class="entity-reference" name="performer.username" isrobot="performer.is_robot" ng-show="performer"></span>
|
||||||
|
<span id="logs-range" class="mini">
|
||||||
|
<input type="text" class="input-small" name="start" ng-model="logStartDate" data-date-format="mm/dd/yyyy" bs-datepicker/>
|
||||||
|
<span class="add-on">to</span>
|
||||||
|
<input type="text" class="input-small" name="end" ng-model="logEndDate" data-date-format="mm/dd/yyyy" bs-datepicker/>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
<span class="right">
|
||||||
|
<i class="fa fa-bar-chart-o toggle-icon" ng-class="chartVisible ? 'active' : ''"
|
||||||
|
ng-click="toggleChart()" title="Toggle Chart" bs-tooltip="tooltip.title"></i>
|
||||||
|
<a href="{{ logsPath }}" download="usage-log.json" target="_new">
|
||||||
|
<i class="fa fa-download toggle-icon" title="Download Logs" bs-tooltip="tooltip.title"></i>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div ng-show="loading">
|
<div ng-show="loading">
|
||||||
<i class="fa fa-spinner fa-spin fa-3x"></i>
|
<i class="fa fa-spinner fa-spin fa-3x"></i>
|
||||||
</div>
|
</div>
|
||||||
<div ng-show="!loading">
|
<div ng-show="!loading">
|
||||||
<div class="container header">
|
|
||||||
<span class="header-text">
|
|
||||||
<span ng-show="!performer">Usage Logs</span>
|
|
||||||
<span class="entity-reference" name="performer.username" isrobot="performer.is_robot" ng-show="performer"></span>
|
|
||||||
<span class="mini">For the last seven days</span>
|
|
||||||
</span>
|
|
||||||
<span class="right">
|
|
||||||
<i class="fa fa-bar-chart-o toggle-icon" ng-class="chartVisible ? 'active' : ''"
|
|
||||||
ng-click="toggleChart()" title="Toggle Chart" bs-tooltip="tooltip.title"></i>
|
|
||||||
<a href="{{ logsPath }}" download="usage-log.json" target="_new">
|
|
||||||
<i class="fa fa-download toggle-icon" title="Download Logs" bs-tooltip="tooltip.title"></i>
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="bar-chart" style="width: 800px; height: 500px;" ng-show="chartVisible">
|
<div id="bar-chart" style="width: 800px; height: 500px;" ng-show="chartVisible">
|
||||||
<svg style="width: 800px; height: 500px;"></svg>
|
<svg style="width: 800px; height: 500px;"></svg>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -690,6 +690,10 @@ quayApp.directive('logsView', function () {
|
||||||
$scope.chartVisible = true;
|
$scope.chartVisible = true;
|
||||||
$scope.logsPath = '';
|
$scope.logsPath = '';
|
||||||
|
|
||||||
|
var datetime = new Date();
|
||||||
|
$scope.logStartDate = new Date(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate() - 7);
|
||||||
|
$scope.logEndDate = new Date(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate());
|
||||||
|
|
||||||
var logDescriptions = {
|
var logDescriptions = {
|
||||||
'account_change_plan': 'Change plan',
|
'account_change_plan': 'Change plan',
|
||||||
'account_change_cc': 'Update credit card',
|
'account_change_cc': 'Update credit card',
|
||||||
|
@ -770,11 +774,24 @@ quayApp.directive('logsView', function () {
|
||||||
'org_set_team_role': 'Change team permission'
|
'org_set_team_role': 'Change team permission'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var getDateString = function(date) {
|
||||||
|
return (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
|
||||||
|
};
|
||||||
|
|
||||||
|
var getOffsetDate = function(date, days) {
|
||||||
|
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);
|
||||||
|
};
|
||||||
|
|
||||||
var update = function() {
|
var update = function() {
|
||||||
if (!$scope.visible || (!$scope.organization && !$scope.user && !$scope.repository)) {
|
if (!$scope.visible || (!$scope.organization && !$scope.user && !$scope.repository)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var twoWeeksAgo = getOffsetDate($scope.logEndDate, -14);
|
||||||
|
if ($scope.logStartDate >= $scope.logEndDate || $scope.logStartDate < twoWeeksAgo) {
|
||||||
|
$scope.logStartDate = twoWeeksAgo;
|
||||||
|
}
|
||||||
|
|
||||||
$scope.loading = true;
|
$scope.loading = true;
|
||||||
|
|
||||||
var url = getRestUrl('user/logs');
|
var url = getRestUrl('user/logs');
|
||||||
|
@ -785,10 +802,13 @@ quayApp.directive('logsView', function () {
|
||||||
url = getRestUrl('repository', $scope.repository.namespace, $scope.repository.name, 'logs');
|
url = getRestUrl('repository', $scope.repository.namespace, $scope.repository.name, 'logs');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
url += '?starttime=' + encodeURIComponent(getDateString($scope.logStartDate));
|
||||||
|
url += '&endtime=' + encodeURIComponent(getDateString($scope.logEndDate));
|
||||||
|
|
||||||
if ($scope.performer) {
|
if ($scope.performer) {
|
||||||
url += '?performer=' + encodeURIComponent($scope.performer.username);
|
url += '&performer=' + encodeURIComponent($scope.performer.username);
|
||||||
}
|
}
|
||||||
|
|
||||||
var loadLogs = Restangular.one(url);
|
var loadLogs = Restangular.one(url);
|
||||||
loadLogs.customGET().then(function(resp) {
|
loadLogs.customGET().then(function(resp) {
|
||||||
$scope.logsPath = '/api/' + url;
|
$scope.logsPath = '/api/' + url;
|
||||||
|
@ -800,7 +820,7 @@ quayApp.directive('logsView', function () {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.chart.draw('bar-chart', resp.logs);
|
$scope.chart.draw('bar-chart', resp.logs, $scope.logStartDate, $scope.logEndDate);
|
||||||
$scope.kindsAllowed = null;
|
$scope.kindsAllowed = null;
|
||||||
$scope.logs = resp.logs;
|
$scope.logs = resp.logs;
|
||||||
$scope.loading = false;
|
$scope.loading = false;
|
||||||
|
@ -858,6 +878,8 @@ quayApp.directive('logsView', function () {
|
||||||
$scope.$watch('repository', update);
|
$scope.$watch('repository', update);
|
||||||
$scope.$watch('visible', update);
|
$scope.$watch('visible', update);
|
||||||
$scope.$watch('performer', update);
|
$scope.$watch('performer', update);
|
||||||
|
$scope.$watch('logStartDate', update);
|
||||||
|
$scope.$watch('logEndDate', update);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1460,7 +1460,7 @@ LogUsageChart.prototype.handleStateChange_ = function(e) {
|
||||||
/**
|
/**
|
||||||
* Draws the chart in the given container element.
|
* Draws the chart in the given container element.
|
||||||
*/
|
*/
|
||||||
LogUsageChart.prototype.draw = function(container, logData) {
|
LogUsageChart.prototype.draw = function(container, logData, startDate, endDate) {
|
||||||
// Reset the container's contents.
|
// Reset the container's contents.
|
||||||
document.getElementById(container).innerHTML = '<svg></svg>';
|
document.getElementById(container).innerHTML = '<svg></svg>';
|
||||||
|
|
||||||
|
@ -1487,12 +1487,12 @@ LogUsageChart.prototype.draw = function(container, logData) {
|
||||||
|
|
||||||
chart.multibar.delay(0);
|
chart.multibar.delay(0);
|
||||||
|
|
||||||
// Create the x-axis domain to encompass a week from today.
|
// Create the x-axis domain to encompass the full date range.
|
||||||
var domain = [];
|
var domain = [];
|
||||||
var datetime = new Date();
|
var datetime = startDate;
|
||||||
datetime = new Date(datetime.getUTCFullYear(), datetime.getUTCMonth(), datetime.getUTCDate());
|
while (datetime <= endDate) {
|
||||||
for (var i = 7; i >= 0; --i) {
|
domain.push(datetime);
|
||||||
domain.push(offsetDate(datetime, -1 * i));
|
datetime = offsetDate(datetime, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
chart.xDomain(domain);
|
chart.xDomain(domain);
|
||||||
|
|
790
static/lib/datepicker3.css
Normal file
790
static/lib/datepicker3.css
Normal file
|
@ -0,0 +1,790 @@
|
||||||
|
/*!
|
||||||
|
* Datepicker for Bootstrap
|
||||||
|
*
|
||||||
|
* Copyright 2012 Stefan Petre
|
||||||
|
* Improvements by Andrew Rowls
|
||||||
|
* Licensed under the Apache License v2.0
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
.datepicker {
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
direction: ltr;
|
||||||
|
/*.dow {
|
||||||
|
border-top: 1px solid #ddd !important;
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
.datepicker-inline {
|
||||||
|
width: 220px;
|
||||||
|
}
|
||||||
|
.datepicker.datepicker-rtl {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
.datepicker.datepicker-rtl table tr td span {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown {
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown:before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border-left: 7px solid transparent;
|
||||||
|
border-right: 7px solid transparent;
|
||||||
|
border-bottom: 7px solid #ccc;
|
||||||
|
border-top: 0;
|
||||||
|
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown:after {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-bottom: 6px solid #fff;
|
||||||
|
border-top: 0;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-left:before {
|
||||||
|
left: 6px;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-left:after {
|
||||||
|
left: 7px;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-right:before {
|
||||||
|
right: 6px;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-right:after {
|
||||||
|
right: 7px;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-top:before {
|
||||||
|
top: -7px;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-top:after {
|
||||||
|
top: -6px;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-bottom:before {
|
||||||
|
bottom: -7px;
|
||||||
|
border-bottom: 0;
|
||||||
|
border-top: 7px solid #999;
|
||||||
|
}
|
||||||
|
.datepicker-dropdown.datepicker-orient-bottom:after {
|
||||||
|
bottom: -6px;
|
||||||
|
border-bottom: 0;
|
||||||
|
border-top: 6px solid #fff;
|
||||||
|
}
|
||||||
|
.datepicker > div {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.datepicker.days div.datepicker-days {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.datepicker.months div.datepicker-months {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.datepicker.years div.datepicker-years {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.datepicker table {
|
||||||
|
margin: 0;
|
||||||
|
-webkit-touch-callout: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-khtml-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
.datepicker table tr td,
|
||||||
|
.datepicker table tr th {
|
||||||
|
text-align: center;
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.table-striped .datepicker table tr td,
|
||||||
|
.table-striped .datepicker table tr th {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.day:hover,
|
||||||
|
.datepicker table tr td.day.focused {
|
||||||
|
background: #eeeeee;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.old,
|
||||||
|
.datepicker table tr td.new {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.disabled,
|
||||||
|
.datepicker table tr td.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #999999;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.today,
|
||||||
|
.datepicker table tr td.today:hover,
|
||||||
|
.datepicker table tr td.today.disabled,
|
||||||
|
.datepicker table tr td.today.disabled:hover {
|
||||||
|
color: #000000;
|
||||||
|
background-color: #ffdb99;
|
||||||
|
border-color: #ffb733;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.today:hover,
|
||||||
|
.datepicker table tr td.today:hover:hover,
|
||||||
|
.datepicker table tr td.today.disabled:hover,
|
||||||
|
.datepicker table tr td.today.disabled:hover:hover,
|
||||||
|
.datepicker table tr td.today:focus,
|
||||||
|
.datepicker table tr td.today:hover:focus,
|
||||||
|
.datepicker table tr td.today.disabled:focus,
|
||||||
|
.datepicker table tr td.today.disabled:hover:focus,
|
||||||
|
.datepicker table tr td.today:active,
|
||||||
|
.datepicker table tr td.today:hover:active,
|
||||||
|
.datepicker table tr td.today.disabled:active,
|
||||||
|
.datepicker table tr td.today.disabled:hover:active,
|
||||||
|
.datepicker table tr td.today.active,
|
||||||
|
.datepicker table tr td.today:hover.active,
|
||||||
|
.datepicker table tr td.today.disabled.active,
|
||||||
|
.datepicker table tr td.today.disabled:hover.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.today,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.today:hover,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.today.disabled,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
|
||||||
|
color: #000000;
|
||||||
|
background-color: #ffcd70;
|
||||||
|
border-color: #f59e00;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.today:active,
|
||||||
|
.datepicker table tr td.today:hover:active,
|
||||||
|
.datepicker table tr td.today.disabled:active,
|
||||||
|
.datepicker table tr td.today.disabled:hover:active,
|
||||||
|
.datepicker table tr td.today.active,
|
||||||
|
.datepicker table tr td.today:hover.active,
|
||||||
|
.datepicker table tr td.today.disabled.active,
|
||||||
|
.datepicker table tr td.today.disabled:hover.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.today,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.today:hover,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.today.disabled,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.today.disabled,
|
||||||
|
.datepicker table tr td.today:hover.disabled,
|
||||||
|
.datepicker table tr td.today.disabled.disabled,
|
||||||
|
.datepicker table tr td.today.disabled:hover.disabled,
|
||||||
|
.datepicker table tr td.today[disabled],
|
||||||
|
.datepicker table tr td.today:hover[disabled],
|
||||||
|
.datepicker table tr td.today.disabled[disabled],
|
||||||
|
.datepicker table tr td.today.disabled:hover[disabled],
|
||||||
|
fieldset[disabled] .datepicker table tr td.today,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today.disabled,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today.disabled:hover,
|
||||||
|
.datepicker table tr td.today.disabled:hover,
|
||||||
|
.datepicker table tr td.today:hover.disabled:hover,
|
||||||
|
.datepicker table tr td.today.disabled.disabled:hover,
|
||||||
|
.datepicker table tr td.today.disabled:hover.disabled:hover,
|
||||||
|
.datepicker table tr td.today[disabled]:hover,
|
||||||
|
.datepicker table tr td.today:hover[disabled]:hover,
|
||||||
|
.datepicker table tr td.today.disabled[disabled]:hover,
|
||||||
|
.datepicker table tr td.today.disabled:hover[disabled]:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today:hover:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today.disabled:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
|
||||||
|
.datepicker table tr td.today.disabled:focus,
|
||||||
|
.datepicker table tr td.today:hover.disabled:focus,
|
||||||
|
.datepicker table tr td.today.disabled.disabled:focus,
|
||||||
|
.datepicker table tr td.today.disabled:hover.disabled:focus,
|
||||||
|
.datepicker table tr td.today[disabled]:focus,
|
||||||
|
.datepicker table tr td.today:hover[disabled]:focus,
|
||||||
|
.datepicker table tr td.today.disabled[disabled]:focus,
|
||||||
|
.datepicker table tr td.today.disabled:hover[disabled]:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today:hover:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today.disabled:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
|
||||||
|
.datepicker table tr td.today.disabled:active,
|
||||||
|
.datepicker table tr td.today:hover.disabled:active,
|
||||||
|
.datepicker table tr td.today.disabled.disabled:active,
|
||||||
|
.datepicker table tr td.today.disabled:hover.disabled:active,
|
||||||
|
.datepicker table tr td.today[disabled]:active,
|
||||||
|
.datepicker table tr td.today:hover[disabled]:active,
|
||||||
|
.datepicker table tr td.today.disabled[disabled]:active,
|
||||||
|
.datepicker table tr td.today.disabled:hover[disabled]:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today:hover:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today.disabled:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
|
||||||
|
.datepicker table tr td.today.disabled.active,
|
||||||
|
.datepicker table tr td.today:hover.disabled.active,
|
||||||
|
.datepicker table tr td.today.disabled.disabled.active,
|
||||||
|
.datepicker table tr td.today.disabled:hover.disabled.active,
|
||||||
|
.datepicker table tr td.today[disabled].active,
|
||||||
|
.datepicker table tr td.today:hover[disabled].active,
|
||||||
|
.datepicker table tr td.today.disabled[disabled].active,
|
||||||
|
.datepicker table tr td.today.disabled:hover[disabled].active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today:hover.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today.disabled.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
|
||||||
|
background-color: #ffdb99;
|
||||||
|
border-color: #ffb733;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.today:hover:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.today.active:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.range,
|
||||||
|
.datepicker table tr td.range:hover,
|
||||||
|
.datepicker table tr td.range.disabled,
|
||||||
|
.datepicker table tr td.range.disabled:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.range.today,
|
||||||
|
.datepicker table tr td.range.today:hover,
|
||||||
|
.datepicker table tr td.range.today.disabled,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover {
|
||||||
|
color: #000000;
|
||||||
|
background-color: #f7ca77;
|
||||||
|
border-color: #f1a417;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.range.today:hover,
|
||||||
|
.datepicker table tr td.range.today:hover:hover,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover:hover,
|
||||||
|
.datepicker table tr td.range.today:focus,
|
||||||
|
.datepicker table tr td.range.today:hover:focus,
|
||||||
|
.datepicker table tr td.range.today.disabled:focus,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover:focus,
|
||||||
|
.datepicker table tr td.range.today:active,
|
||||||
|
.datepicker table tr td.range.today:hover:active,
|
||||||
|
.datepicker table tr td.range.today.disabled:active,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover:active,
|
||||||
|
.datepicker table tr td.range.today.active,
|
||||||
|
.datepicker table tr td.range.today:hover.active,
|
||||||
|
.datepicker table tr td.range.today.disabled.active,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.range.today,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.range.today:hover,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
|
||||||
|
color: #000000;
|
||||||
|
background-color: #f4bb51;
|
||||||
|
border-color: #bf800c;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.range.today:active,
|
||||||
|
.datepicker table tr td.range.today:hover:active,
|
||||||
|
.datepicker table tr td.range.today.disabled:active,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover:active,
|
||||||
|
.datepicker table tr td.range.today.active,
|
||||||
|
.datepicker table tr td.range.today:hover.active,
|
||||||
|
.datepicker table tr td.range.today.disabled.active,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.range.today,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.range.today:hover,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.range.today.disabled,
|
||||||
|
.datepicker table tr td.range.today:hover.disabled,
|
||||||
|
.datepicker table tr td.range.today.disabled.disabled,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover.disabled,
|
||||||
|
.datepicker table tr td.range.today[disabled],
|
||||||
|
.datepicker table tr td.range.today:hover[disabled],
|
||||||
|
.datepicker table tr td.range.today.disabled[disabled],
|
||||||
|
.datepicker table tr td.range.today.disabled:hover[disabled],
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today.disabled,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover,
|
||||||
|
.datepicker table tr td.range.today:hover.disabled:hover,
|
||||||
|
.datepicker table tr td.range.today.disabled.disabled:hover,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover.disabled:hover,
|
||||||
|
.datepicker table tr td.range.today[disabled]:hover,
|
||||||
|
.datepicker table tr td.range.today:hover[disabled]:hover,
|
||||||
|
.datepicker table tr td.range.today.disabled[disabled]:hover,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover[disabled]:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
|
||||||
|
.datepicker table tr td.range.today.disabled:focus,
|
||||||
|
.datepicker table tr td.range.today:hover.disabled:focus,
|
||||||
|
.datepicker table tr td.range.today.disabled.disabled:focus,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover.disabled:focus,
|
||||||
|
.datepicker table tr td.range.today[disabled]:focus,
|
||||||
|
.datepicker table tr td.range.today:hover[disabled]:focus,
|
||||||
|
.datepicker table tr td.range.today.disabled[disabled]:focus,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover[disabled]:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
|
||||||
|
.datepicker table tr td.range.today.disabled:active,
|
||||||
|
.datepicker table tr td.range.today:hover.disabled:active,
|
||||||
|
.datepicker table tr td.range.today.disabled.disabled:active,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover.disabled:active,
|
||||||
|
.datepicker table tr td.range.today[disabled]:active,
|
||||||
|
.datepicker table tr td.range.today:hover[disabled]:active,
|
||||||
|
.datepicker table tr td.range.today.disabled[disabled]:active,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover[disabled]:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today:hover:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
|
||||||
|
.datepicker table tr td.range.today.disabled.active,
|
||||||
|
.datepicker table tr td.range.today:hover.disabled.active,
|
||||||
|
.datepicker table tr td.range.today.disabled.disabled.active,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover.disabled.active,
|
||||||
|
.datepicker table tr td.range.today[disabled].active,
|
||||||
|
.datepicker table tr td.range.today:hover[disabled].active,
|
||||||
|
.datepicker table tr td.range.today.disabled[disabled].active,
|
||||||
|
.datepicker table tr td.range.today.disabled:hover[disabled].active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today:hover.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
|
||||||
|
background-color: #f7ca77;
|
||||||
|
border-color: #f1a417;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.selected,
|
||||||
|
.datepicker table tr td.selected:hover,
|
||||||
|
.datepicker table tr td.selected.disabled,
|
||||||
|
.datepicker table tr td.selected.disabled:hover {
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #999999;
|
||||||
|
border-color: #555555;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
.datepicker table tr td.selected:hover,
|
||||||
|
.datepicker table tr td.selected:hover:hover,
|
||||||
|
.datepicker table tr td.selected.disabled:hover,
|
||||||
|
.datepicker table tr td.selected.disabled:hover:hover,
|
||||||
|
.datepicker table tr td.selected:focus,
|
||||||
|
.datepicker table tr td.selected:hover:focus,
|
||||||
|
.datepicker table tr td.selected.disabled:focus,
|
||||||
|
.datepicker table tr td.selected.disabled:hover:focus,
|
||||||
|
.datepicker table tr td.selected:active,
|
||||||
|
.datepicker table tr td.selected:hover:active,
|
||||||
|
.datepicker table tr td.selected.disabled:active,
|
||||||
|
.datepicker table tr td.selected.disabled:hover:active,
|
||||||
|
.datepicker table tr td.selected.active,
|
||||||
|
.datepicker table tr td.selected:hover.active,
|
||||||
|
.datepicker table tr td.selected.disabled.active,
|
||||||
|
.datepicker table tr td.selected.disabled:hover.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.selected,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.selected:hover,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.selected.disabled,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #858585;
|
||||||
|
border-color: #373737;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.selected:active,
|
||||||
|
.datepicker table tr td.selected:hover:active,
|
||||||
|
.datepicker table tr td.selected.disabled:active,
|
||||||
|
.datepicker table tr td.selected.disabled:hover:active,
|
||||||
|
.datepicker table tr td.selected.active,
|
||||||
|
.datepicker table tr td.selected:hover.active,
|
||||||
|
.datepicker table tr td.selected.disabled.active,
|
||||||
|
.datepicker table tr td.selected.disabled:hover.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.selected,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.selected:hover,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.selected.disabled,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.selected.disabled,
|
||||||
|
.datepicker table tr td.selected:hover.disabled,
|
||||||
|
.datepicker table tr td.selected.disabled.disabled,
|
||||||
|
.datepicker table tr td.selected.disabled:hover.disabled,
|
||||||
|
.datepicker table tr td.selected[disabled],
|
||||||
|
.datepicker table tr td.selected:hover[disabled],
|
||||||
|
.datepicker table tr td.selected.disabled[disabled],
|
||||||
|
.datepicker table tr td.selected.disabled:hover[disabled],
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected.disabled,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
|
||||||
|
.datepicker table tr td.selected.disabled:hover,
|
||||||
|
.datepicker table tr td.selected:hover.disabled:hover,
|
||||||
|
.datepicker table tr td.selected.disabled.disabled:hover,
|
||||||
|
.datepicker table tr td.selected.disabled:hover.disabled:hover,
|
||||||
|
.datepicker table tr td.selected[disabled]:hover,
|
||||||
|
.datepicker table tr td.selected:hover[disabled]:hover,
|
||||||
|
.datepicker table tr td.selected.disabled[disabled]:hover,
|
||||||
|
.datepicker table tr td.selected.disabled:hover[disabled]:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected:hover:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
|
||||||
|
.datepicker table tr td.selected.disabled:focus,
|
||||||
|
.datepicker table tr td.selected:hover.disabled:focus,
|
||||||
|
.datepicker table tr td.selected.disabled.disabled:focus,
|
||||||
|
.datepicker table tr td.selected.disabled:hover.disabled:focus,
|
||||||
|
.datepicker table tr td.selected[disabled]:focus,
|
||||||
|
.datepicker table tr td.selected:hover[disabled]:focus,
|
||||||
|
.datepicker table tr td.selected.disabled[disabled]:focus,
|
||||||
|
.datepicker table tr td.selected.disabled:hover[disabled]:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected:hover:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
|
||||||
|
.datepicker table tr td.selected.disabled:active,
|
||||||
|
.datepicker table tr td.selected:hover.disabled:active,
|
||||||
|
.datepicker table tr td.selected.disabled.disabled:active,
|
||||||
|
.datepicker table tr td.selected.disabled:hover.disabled:active,
|
||||||
|
.datepicker table tr td.selected[disabled]:active,
|
||||||
|
.datepicker table tr td.selected:hover[disabled]:active,
|
||||||
|
.datepicker table tr td.selected.disabled[disabled]:active,
|
||||||
|
.datepicker table tr td.selected.disabled:hover[disabled]:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected:hover:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected.disabled:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
|
||||||
|
.datepicker table tr td.selected.disabled.active,
|
||||||
|
.datepicker table tr td.selected:hover.disabled.active,
|
||||||
|
.datepicker table tr td.selected.disabled.disabled.active,
|
||||||
|
.datepicker table tr td.selected.disabled:hover.disabled.active,
|
||||||
|
.datepicker table tr td.selected[disabled].active,
|
||||||
|
.datepicker table tr td.selected:hover[disabled].active,
|
||||||
|
.datepicker table tr td.selected.disabled[disabled].active,
|
||||||
|
.datepicker table tr td.selected.disabled:hover[disabled].active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected:hover.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected.disabled.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
|
||||||
|
background-color: #999999;
|
||||||
|
border-color: #555555;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.active,
|
||||||
|
.datepicker table tr td.active:hover,
|
||||||
|
.datepicker table tr td.active.disabled,
|
||||||
|
.datepicker table tr td.active.disabled:hover {
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #428bca;
|
||||||
|
border-color: #357ebd;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
.datepicker table tr td.active:hover,
|
||||||
|
.datepicker table tr td.active:hover:hover,
|
||||||
|
.datepicker table tr td.active.disabled:hover,
|
||||||
|
.datepicker table tr td.active.disabled:hover:hover,
|
||||||
|
.datepicker table tr td.active:focus,
|
||||||
|
.datepicker table tr td.active:hover:focus,
|
||||||
|
.datepicker table tr td.active.disabled:focus,
|
||||||
|
.datepicker table tr td.active.disabled:hover:focus,
|
||||||
|
.datepicker table tr td.active:active,
|
||||||
|
.datepicker table tr td.active:hover:active,
|
||||||
|
.datepicker table tr td.active.disabled:active,
|
||||||
|
.datepicker table tr td.active.disabled:hover:active,
|
||||||
|
.datepicker table tr td.active.active,
|
||||||
|
.datepicker table tr td.active:hover.active,
|
||||||
|
.datepicker table tr td.active.disabled.active,
|
||||||
|
.datepicker table tr td.active.disabled:hover.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.active:hover,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.active.disabled,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #3276b1;
|
||||||
|
border-color: #285e8e;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.active:active,
|
||||||
|
.datepicker table tr td.active:hover:active,
|
||||||
|
.datepicker table tr td.active.disabled:active,
|
||||||
|
.datepicker table tr td.active.disabled:hover:active,
|
||||||
|
.datepicker table tr td.active.active,
|
||||||
|
.datepicker table tr td.active:hover.active,
|
||||||
|
.datepicker table tr td.active.disabled.active,
|
||||||
|
.datepicker table tr td.active.disabled:hover.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.active:hover,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.active.disabled,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.datepicker table tr td.active.disabled,
|
||||||
|
.datepicker table tr td.active:hover.disabled,
|
||||||
|
.datepicker table tr td.active.disabled.disabled,
|
||||||
|
.datepicker table tr td.active.disabled:hover.disabled,
|
||||||
|
.datepicker table tr td.active[disabled],
|
||||||
|
.datepicker table tr td.active:hover[disabled],
|
||||||
|
.datepicker table tr td.active.disabled[disabled],
|
||||||
|
.datepicker table tr td.active.disabled:hover[disabled],
|
||||||
|
fieldset[disabled] .datepicker table tr td.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active.disabled,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active.disabled:hover,
|
||||||
|
.datepicker table tr td.active.disabled:hover,
|
||||||
|
.datepicker table tr td.active:hover.disabled:hover,
|
||||||
|
.datepicker table tr td.active.disabled.disabled:hover,
|
||||||
|
.datepicker table tr td.active.disabled:hover.disabled:hover,
|
||||||
|
.datepicker table tr td.active[disabled]:hover,
|
||||||
|
.datepicker table tr td.active:hover[disabled]:hover,
|
||||||
|
.datepicker table tr td.active.disabled[disabled]:hover,
|
||||||
|
.datepicker table tr td.active.disabled:hover[disabled]:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active:hover:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active.disabled:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
|
||||||
|
.datepicker table tr td.active.disabled:focus,
|
||||||
|
.datepicker table tr td.active:hover.disabled:focus,
|
||||||
|
.datepicker table tr td.active.disabled.disabled:focus,
|
||||||
|
.datepicker table tr td.active.disabled:hover.disabled:focus,
|
||||||
|
.datepicker table tr td.active[disabled]:focus,
|
||||||
|
.datepicker table tr td.active:hover[disabled]:focus,
|
||||||
|
.datepicker table tr td.active.disabled[disabled]:focus,
|
||||||
|
.datepicker table tr td.active.disabled:hover[disabled]:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active:hover:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active.disabled:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
|
||||||
|
.datepicker table tr td.active.disabled:active,
|
||||||
|
.datepicker table tr td.active:hover.disabled:active,
|
||||||
|
.datepicker table tr td.active.disabled.disabled:active,
|
||||||
|
.datepicker table tr td.active.disabled:hover.disabled:active,
|
||||||
|
.datepicker table tr td.active[disabled]:active,
|
||||||
|
.datepicker table tr td.active:hover[disabled]:active,
|
||||||
|
.datepicker table tr td.active.disabled[disabled]:active,
|
||||||
|
.datepicker table tr td.active.disabled:hover[disabled]:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active:hover:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active.disabled:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
|
||||||
|
.datepicker table tr td.active.disabled.active,
|
||||||
|
.datepicker table tr td.active:hover.disabled.active,
|
||||||
|
.datepicker table tr td.active.disabled.disabled.active,
|
||||||
|
.datepicker table tr td.active.disabled:hover.disabled.active,
|
||||||
|
.datepicker table tr td.active[disabled].active,
|
||||||
|
.datepicker table tr td.active:hover[disabled].active,
|
||||||
|
.datepicker table tr td.active.disabled[disabled].active,
|
||||||
|
.datepicker table tr td.active.disabled:hover[disabled].active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active:hover.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active.disabled.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
|
||||||
|
background-color: #428bca;
|
||||||
|
border-color: #357ebd;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span {
|
||||||
|
display: block;
|
||||||
|
width: 23%;
|
||||||
|
height: 54px;
|
||||||
|
line-height: 54px;
|
||||||
|
float: left;
|
||||||
|
margin: 1%;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span.disabled,
|
||||||
|
.datepicker table tr td span.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #999999;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span.active,
|
||||||
|
.datepicker table tr td span.active:hover,
|
||||||
|
.datepicker table tr td span.active.disabled,
|
||||||
|
.datepicker table tr td span.active.disabled:hover {
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #428bca;
|
||||||
|
border-color: #357ebd;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
.datepicker table tr td span.active:hover,
|
||||||
|
.datepicker table tr td span.active:hover:hover,
|
||||||
|
.datepicker table tr td span.active.disabled:hover,
|
||||||
|
.datepicker table tr td span.active.disabled:hover:hover,
|
||||||
|
.datepicker table tr td span.active:focus,
|
||||||
|
.datepicker table tr td span.active:hover:focus,
|
||||||
|
.datepicker table tr td span.active.disabled:focus,
|
||||||
|
.datepicker table tr td span.active.disabled:hover:focus,
|
||||||
|
.datepicker table tr td span.active:active,
|
||||||
|
.datepicker table tr td span.active:hover:active,
|
||||||
|
.datepicker table tr td span.active.disabled:active,
|
||||||
|
.datepicker table tr td span.active.disabled:hover:active,
|
||||||
|
.datepicker table tr td span.active.active,
|
||||||
|
.datepicker table tr td span.active:hover.active,
|
||||||
|
.datepicker table tr td span.active.disabled.active,
|
||||||
|
.datepicker table tr td span.active.disabled:hover.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td span.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td span.active:hover,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td span.active.disabled,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #3276b1;
|
||||||
|
border-color: #285e8e;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span.active:active,
|
||||||
|
.datepicker table tr td span.active:hover:active,
|
||||||
|
.datepicker table tr td span.active.disabled:active,
|
||||||
|
.datepicker table tr td span.active.disabled:hover:active,
|
||||||
|
.datepicker table tr td span.active.active,
|
||||||
|
.datepicker table tr td span.active:hover.active,
|
||||||
|
.datepicker table tr td span.active.disabled.active,
|
||||||
|
.datepicker table tr td span.active.disabled:hover.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td span.active,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td span.active:hover,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td span.active.disabled,
|
||||||
|
.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span.active.disabled,
|
||||||
|
.datepicker table tr td span.active:hover.disabled,
|
||||||
|
.datepicker table tr td span.active.disabled.disabled,
|
||||||
|
.datepicker table tr td span.active.disabled:hover.disabled,
|
||||||
|
.datepicker table tr td span.active[disabled],
|
||||||
|
.datepicker table tr td span.active:hover[disabled],
|
||||||
|
.datepicker table tr td span.active.disabled[disabled],
|
||||||
|
.datepicker table tr td span.active.disabled:hover[disabled],
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active.disabled,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
|
||||||
|
.datepicker table tr td span.active.disabled:hover,
|
||||||
|
.datepicker table tr td span.active:hover.disabled:hover,
|
||||||
|
.datepicker table tr td span.active.disabled.disabled:hover,
|
||||||
|
.datepicker table tr td span.active.disabled:hover.disabled:hover,
|
||||||
|
.datepicker table tr td span.active[disabled]:hover,
|
||||||
|
.datepicker table tr td span.active:hover[disabled]:hover,
|
||||||
|
.datepicker table tr td span.active.disabled[disabled]:hover,
|
||||||
|
.datepicker table tr td span.active.disabled:hover[disabled]:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active:hover:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
|
||||||
|
.datepicker table tr td span.active.disabled:focus,
|
||||||
|
.datepicker table tr td span.active:hover.disabled:focus,
|
||||||
|
.datepicker table tr td span.active.disabled.disabled:focus,
|
||||||
|
.datepicker table tr td span.active.disabled:hover.disabled:focus,
|
||||||
|
.datepicker table tr td span.active[disabled]:focus,
|
||||||
|
.datepicker table tr td span.active:hover[disabled]:focus,
|
||||||
|
.datepicker table tr td span.active.disabled[disabled]:focus,
|
||||||
|
.datepicker table tr td span.active.disabled:hover[disabled]:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active:hover:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
|
||||||
|
.datepicker table tr td span.active.disabled:active,
|
||||||
|
.datepicker table tr td span.active:hover.disabled:active,
|
||||||
|
.datepicker table tr td span.active.disabled.disabled:active,
|
||||||
|
.datepicker table tr td span.active.disabled:hover.disabled:active,
|
||||||
|
.datepicker table tr td span.active[disabled]:active,
|
||||||
|
.datepicker table tr td span.active:hover[disabled]:active,
|
||||||
|
.datepicker table tr td span.active.disabled[disabled]:active,
|
||||||
|
.datepicker table tr td span.active.disabled:hover[disabled]:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active:hover:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active.disabled:active,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
|
||||||
|
.datepicker table tr td span.active.disabled.active,
|
||||||
|
.datepicker table tr td span.active:hover.disabled.active,
|
||||||
|
.datepicker table tr td span.active.disabled.disabled.active,
|
||||||
|
.datepicker table tr td span.active.disabled:hover.disabled.active,
|
||||||
|
.datepicker table tr td span.active[disabled].active,
|
||||||
|
.datepicker table tr td span.active:hover[disabled].active,
|
||||||
|
.datepicker table tr td span.active.disabled[disabled].active,
|
||||||
|
.datepicker table tr td span.active.disabled:hover[disabled].active,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active:hover.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active.disabled.active,
|
||||||
|
fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
|
||||||
|
background-color: #428bca;
|
||||||
|
border-color: #357ebd;
|
||||||
|
}
|
||||||
|
.datepicker table tr td span.old,
|
||||||
|
.datepicker table tr td span.new {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.datepicker th.datepicker-switch {
|
||||||
|
width: 145px;
|
||||||
|
}
|
||||||
|
.datepicker thead tr:first-child th,
|
||||||
|
.datepicker tfoot tr th {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.datepicker thead tr:first-child th:hover,
|
||||||
|
.datepicker tfoot tr th:hover {
|
||||||
|
background: #eeeeee;
|
||||||
|
}
|
||||||
|
.datepicker .cw {
|
||||||
|
font-size: 10px;
|
||||||
|
width: 12px;
|
||||||
|
padding: 0 2px 0 5px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.datepicker thead tr:first-child th.cw {
|
||||||
|
cursor: default;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.input-group.date .input-group-addon i {
|
||||||
|
cursor: pointer;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
.input-daterange input {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.input-daterange input:first-child {
|
||||||
|
border-radius: 3px 0 0 3px;
|
||||||
|
}
|
||||||
|
.input-daterange input:last-child {
|
||||||
|
border-radius: 0 3px 3px 0;
|
||||||
|
}
|
||||||
|
.input-daterange .input-group-addon {
|
||||||
|
width: auto;
|
||||||
|
min-width: 16px;
|
||||||
|
padding: 4px 5px;
|
||||||
|
font-weight: normal;
|
||||||
|
line-height: 1.428571429;
|
||||||
|
text-align: center;
|
||||||
|
text-shadow: 0 1px 0 #fff;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
border: solid #cccccc;
|
||||||
|
border-width: 1px 0;
|
||||||
|
margin-left: -5px;
|
||||||
|
margin-right: -5px;
|
||||||
|
}
|
||||||
|
.datepicker.dropdown-menu {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
z-index: 1000;
|
||||||
|
float: left;
|
||||||
|
display: none;
|
||||||
|
min-width: 160px;
|
||||||
|
list-style: none;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||||
|
border-radius: 5px;
|
||||||
|
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||||
|
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||||
|
-webkit-background-clip: padding-box;
|
||||||
|
-moz-background-clip: padding;
|
||||||
|
background-clip: padding-box;
|
||||||
|
*border-right-width: 2px;
|
||||||
|
*border-bottom-width: 2px;
|
||||||
|
color: #333333;
|
||||||
|
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 1.428571429;
|
||||||
|
}
|
||||||
|
.datepicker.dropdown-menu th,
|
||||||
|
.datepicker.dropdown-menu td {
|
||||||
|
padding: 4px 5px;
|
||||||
|
}
|
|
@ -15,12 +15,14 @@
|
||||||
{% block added_stylesheets %}
|
{% block added_stylesheets %}
|
||||||
<link rel="stylesheet" href="/static/lib/browser-chrome.css">
|
<link rel="stylesheet" href="/static/lib/browser-chrome.css">
|
||||||
<link rel="stylesheet" href="/static/lib/nv.d3.css">
|
<link rel="stylesheet" href="/static/lib/nv.d3.css">
|
||||||
|
<link rel="stylesheet" href="/static/lib/datepicker3.css">
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block added_dependencies %}
|
{% block added_dependencies %}
|
||||||
<script src="https://checkout.stripe.com/checkout.js"></script>
|
<script src="https://checkout.stripe.com/checkout.js"></script>
|
||||||
|
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.2.1/moment.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.2.1/moment.min.js"></script>
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.2.0/js/bootstrap-datepicker.min.js"></script>
|
||||||
|
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/d3/3.3.3/d3.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/d3/3.3.3/d3.min.js"></script>
|
||||||
<script src="static/lib/nv.d3.min.js"></script>
|
<script src="static/lib/nv.d3.min.js"></script>
|
||||||
|
|
Reference in a new issue