First Initial
@@ -0,0 +1,4 @@
|
||||
before_script:
|
||||
- cd ./tests
|
||||
- echo "new Date().toString();" | phantomjs
|
||||
script: phantomjs run-qunit.js tests.html
|
||||
202
wwwroot/BackendScript/assets/bootstrap-datetimepicker/LICENSE
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
540
wwwroot/BackendScript/assets/bootstrap-datetimepicker/README.md
Normal file
@@ -0,0 +1,540 @@
|
||||
# Project : bootstrap-datetimepicker
|
||||
======================================
|
||||
|
||||
[](https://travis-ci.org/smalot/bootstrap-datetimepicker)
|
||||
|
||||
[Homepage](http://www.malot.fr/bootstrap-datetimepicker/)
|
||||
|
||||
[Demo page](http://www.malot.fr/bootstrap-datetimepicker/demo.php)
|
||||
|
||||
# Project forked
|
||||
|
||||
This project is a fork of [bootstrap-datepicker project](https://github.com/eternicode/bootstrap-datepicker).
|
||||
|
||||
|
||||
# Home
|
||||
|
||||
As 'bootstrap-datetimepicker' is restricted to the date scope (day, month, year), this project aims to support too the time picking (hour, minutes).
|
||||
|
||||
|
||||
# Screenshots
|
||||
|
||||
## Decade year view
|
||||
|
||||

|
||||
|
||||
This view allows to select the day in the selected month.
|
||||
|
||||
## Year view
|
||||
|
||||

|
||||
|
||||
This view allows to select the month in the selected year.
|
||||
|
||||
## Month view
|
||||
|
||||

|
||||
|
||||
This view allows to select the year in a range of 10 years.
|
||||
|
||||
## Day view
|
||||
|
||||

|
||||
|
||||
This view allows to select the hour in the selected day.
|
||||
|
||||
## Hour view
|
||||
|
||||

|
||||
|
||||
This view allows to select the preset of minutes in the selected hour.
|
||||
The range of 5 minutes (by default) has been selected to restrict buttons quantity to an acceptable value, but it can be overrided by the <code>minuteStep</code> property.
|
||||
|
||||
## Day view - meridian
|
||||
|
||||

|
||||
|
||||
Meridian is supported in both the day and hour views.
|
||||
To use it, just enable the <code>showMeridian</code> property.
|
||||
|
||||
## Hour view - meridian
|
||||
|
||||

|
||||
|
||||
# Example
|
||||
|
||||
Attached to a field with the format specified via options:
|
||||
|
||||
```html
|
||||
<input type="text" value="2012-05-15 21:05" id="datetimepicker">
|
||||
```
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker({
|
||||
format: 'yyyy-mm-dd hh:ii'
|
||||
});
|
||||
```
|
||||
|
||||
Attached to a field with the format specified via markup:
|
||||
|
||||
```html
|
||||
<input type="text" value="2012-05-15 21:05" id="datetimepicker" data-date-format="yyyy-mm-dd hh:ii">
|
||||
```
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker();
|
||||
```
|
||||
|
||||
As component:
|
||||
|
||||
```html
|
||||
<div class="input-append date" id="datetimepicker" data-date="12-02-2012" data-date-format="dd-mm-yyyy">
|
||||
<input size="16" type="text" value="12-02-2012" readonly>
|
||||
<span class="add-on"><i class="icon-th"></i></span>
|
||||
</div>
|
||||
```
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker();
|
||||
```
|
||||
|
||||
As inline datetimepicker:
|
||||
|
||||
```html
|
||||
<div id="datetimepicker"></div>
|
||||
```
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker();
|
||||
```
|
||||
|
||||
# Using bootstrap-datetimepicker.js
|
||||
|
||||
Call the datetimepicker via javascript:
|
||||
|
||||
```javascript
|
||||
$('.datetimepicker').datetimepicker()
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
Requires bootstrap's dropdown component (`dropdowns.less`) for some styles, and bootstrap's sprites (`sprites.less` and associated images) for arrows.
|
||||
|
||||
A standalone .css file (including necessary dropdown styles and alternative, text-based arrows) can be generated by running `build/build_standalone.less` through the `lessc` compiler:
|
||||
|
||||
```bash
|
||||
$ lessc build/build_standalone.less datetimepicker.css
|
||||
```
|
||||
|
||||
## Options
|
||||
|
||||
All options that take a "Date" can handle a `Date` object; a String formatted according to the given `format`; or a timedelta relative to today, eg '-1d', '+6m +1y', etc, where valid units are 'd' (day), 'w' (week), 'm' (month), and 'y' (year).
|
||||
|
||||
You can also specify an ISO-8601 valid datetime, despite of the given `format` :
|
||||
* yyyy-mm-dd
|
||||
* yyyy-mm-dd hh:ii
|
||||
* yyyy-mm-ddThh:ii
|
||||
* yyyy-mm-dd hh:ii:ss
|
||||
* yyyy-mm-ddThh:ii:ssZ
|
||||
|
||||
### format
|
||||
|
||||
String. Default: 'mm/dd/yyyy'
|
||||
|
||||
The date format, combination of p, P, h, hh, i, ii, s, ss, d, dd, m, mm, M, MM, yy, yyyy.
|
||||
|
||||
* p : meridian in lower case ('am' or 'pm') - according to locale file
|
||||
* P : meridian in upper case ('AM' or 'PM') - according to locale file
|
||||
* s : seconds without leading zeros
|
||||
* ss : seconds, 2 digits with leading zeros
|
||||
* i : minutes without leading zeros
|
||||
* ii : minutes, 2 digits with leading zeros
|
||||
* h : hour without leading zeros - 24-hour format
|
||||
* hh : hour, 2 digits with leading zeros - 24-hour format
|
||||
* H : hour without leading zeros - 12-hour format
|
||||
* HH : hour, 2 digits with leading zeros - 12-hour format
|
||||
* d : day of the month without leading zeros
|
||||
* dd : day of the month, 2 digits with leading zeros
|
||||
* m : numeric representation of month without leading zeros
|
||||
* mm : numeric representation of the month, 2 digits with leading zeros
|
||||
* M : short textual representation of a month, three letters
|
||||
* MM : full textual representation of a month, such as January or March
|
||||
* yy : two digit representation of a year
|
||||
* yyyy : full numeric representation of a year, 4 digits
|
||||
|
||||
### weekStart
|
||||
|
||||
Integer. Default: 0
|
||||
|
||||
Day of the week start. 0 (Sunday) to 6 (Saturday)
|
||||
|
||||
### startDate
|
||||
|
||||
Date. Default: Beginning of time
|
||||
|
||||
The earliest date that may be selected; all earlier dates will be disabled.
|
||||
|
||||
### endDate
|
||||
|
||||
Date. Default: End of time
|
||||
|
||||
The latest date that may be selected; all later dates will be disabled.
|
||||
|
||||
### daysOfWeekDisabled
|
||||
|
||||
String, Array. Default: '', []
|
||||
|
||||
Days of the week that should be disabled. Values are 0 (Sunday) to 6 (Saturday). Multiple values should be comma-separated. Example: disable weekends: `'0,6'` or `[0,6]`.
|
||||
|
||||
### autoclose
|
||||
|
||||
Boolean. Default: false
|
||||
|
||||
Whether or not to close the datetimepicker immediately when a date is selected.
|
||||
|
||||
### startView
|
||||
|
||||
Number, String. Default: 2, 'month'
|
||||
|
||||
The view that the datetimepicker should show when it is opened.
|
||||
Accepts values of :
|
||||
* 0 or 'hour' for the hour view
|
||||
* 1 or 'day' for the day view
|
||||
* 2 or 'month' for month view (the default)
|
||||
* 3 or 'year' for the 12-month overview
|
||||
* 4 or 'decade' for the 10-year overview. Useful for date-of-birth datetimepickers.
|
||||
|
||||
### minView
|
||||
|
||||
Number, String. Default: 0, 'hour'
|
||||
|
||||
The lowest view that the datetimepicker should show.
|
||||
|
||||
### maxView
|
||||
|
||||
Number, String. Default: 4, 'decade'
|
||||
|
||||
The highest view that the datetimepicker should show.
|
||||
|
||||
### todayBtn
|
||||
|
||||
Boolean, "linked". Default: false
|
||||
|
||||
If true or "linked", displays a "Today" button at the bottom of the datetimepicker to select the current date. If true, the "Today" button will only move the current date into view; if "linked", the current date will also be selected.
|
||||
|
||||
### todayHighlight
|
||||
|
||||
Boolean. Default: false
|
||||
|
||||
If true, highlights the current date.
|
||||
|
||||
### keyboardNavigation
|
||||
|
||||
Boolean. Default: true
|
||||
|
||||
Whether or not to allow date navigation by arrow keys.
|
||||
|
||||
### language
|
||||
|
||||
String. Default: 'en'
|
||||
|
||||
The two-letter code of the language to use for month and day names. These will also be used as the input's value (and subsequently sent to the server in the case of form submissions). Currently ships with English ('en'), German ('de'), Brazilian ('br'), and Spanish ('es') translations, but others can be added (see I18N below). If an unknown language code is given, English will be used.
|
||||
|
||||
### forceParse
|
||||
|
||||
Boolean. Default: true
|
||||
|
||||
Whether or not to force parsing of the input value when the picker is closed. That is, when an invalid date is left in the input field by the user, the picker will forcibly parse that value, and set the input's value to the new, valid date, conforming to the given `format`.
|
||||
|
||||
### minuteStep
|
||||
|
||||
Number. Default: 5
|
||||
|
||||
The increment used to build the hour view. A button is created for each <code>minuteStep</code> minutes.
|
||||
|
||||
### pickerReferer : deprecated
|
||||
|
||||
String. Default: 'default'
|
||||
|
||||
The referer element to place the picker for the component implementation. If you want to place the picker just under the input field, just specify <code>input</code>.
|
||||
|
||||
### pickerPosition
|
||||
|
||||
String. Default: 'bottom-right' (supported values are: 'bottom-right', 'bottom-left', 'top-right', 'top-left')
|
||||
|
||||
This option allows to place the picker just under the input field for the component implementation instead of the default position which is at the bottom right of the button.
|
||||
|
||||
### viewSelect
|
||||
|
||||
Number or String. Default: <code>same as minView</code> (supported values are: 'decade', 'year', 'month', 'day', 'hour')
|
||||
|
||||
With this option you can select the view from which the date will be selected. By default it's the last one, however you can choose the first one, so at each click the date will be updated.
|
||||
|
||||
### showMeridian
|
||||
|
||||
Boolean. Default: false
|
||||
|
||||
This option will enable meridian views for day and hour views.
|
||||
|
||||
### initialDate
|
||||
|
||||
Date or String. Default: new Date()
|
||||
|
||||
You can initialize the viewer with a date. By default it's now, so you can specify yesterday or today at midnight ...
|
||||
|
||||
## Markup
|
||||
|
||||
Format as component.
|
||||
|
||||
```html
|
||||
<div class="input-append date" id="datetimepicker" data-date="12-02-2012" data-date-format="dd-mm-yyyy">
|
||||
<input class="span2" size="16" type="text" value="12-02-2012">
|
||||
<span class="add-on"><i class="icon-th"></i></span>
|
||||
</div>
|
||||
```
|
||||
|
||||
Format as component with reset button to clear the input field.
|
||||
|
||||
```html
|
||||
<div class="input-append date" id="datetimepicker" data-date="12-02-2012" data-date-format="dd-mm-yyyy">
|
||||
<input class="span2" size="16" type="text" value="12-02-2012">
|
||||
<span class="add-on"><i class="icon-remove"></i></span>
|
||||
<span class="add-on"><i class="icon-th"></i></span>
|
||||
</div>
|
||||
```
|
||||
|
||||
## Methods
|
||||
|
||||
### .datetimepicker(options)
|
||||
|
||||
Initializes an datetimepicker.
|
||||
|
||||
### remove
|
||||
|
||||
Arguments: None
|
||||
|
||||
Remove the datetimepicker. Removes attached events, internal attached objects, and
|
||||
added HTML elements.
|
||||
|
||||
$('#datetimepicker').datetimepicker('remove');
|
||||
|
||||
### show
|
||||
|
||||
Arguments: None
|
||||
|
||||
Show the datetimepicker.
|
||||
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker('show');
|
||||
```
|
||||
|
||||
### hide
|
||||
|
||||
Arguments: None
|
||||
|
||||
Hide the datetimepicker.
|
||||
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker('hide');
|
||||
```
|
||||
|
||||
### update
|
||||
|
||||
Arguments:
|
||||
|
||||
* currentDate (Date).
|
||||
|
||||
Update the datetimepicker with the specified date.
|
||||
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker('update', new Date());
|
||||
```
|
||||
|
||||
Omit currentDate to update the datetimepicker with the current input value.
|
||||
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker('update');
|
||||
```
|
||||
|
||||
### setStartDate
|
||||
|
||||
Arguments:
|
||||
|
||||
* startDate (String)
|
||||
|
||||
Sets a new lower date limit on the datetimepicker.
|
||||
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker('setStartDate', '2012-01-01');
|
||||
```
|
||||
|
||||
Omit startDate (or provide an otherwise falsey value) to unset the limit.
|
||||
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker('setStartDate');
|
||||
$('#datetimepicker').datetimepicker('setStartDate', null);
|
||||
```
|
||||
|
||||
### setEndDate
|
||||
|
||||
Arguments:
|
||||
|
||||
* endDate (String)
|
||||
|
||||
Sets a new upper date limit on the datetimepicker.
|
||||
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker('setEndDate', '2012-12-31');
|
||||
```
|
||||
|
||||
Omit endDate (or provide an otherwise falsey value) to unset the limit.
|
||||
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker('setEndDate');
|
||||
$('#datetimepicker').datetimepicker('setEndDate', null);
|
||||
```
|
||||
|
||||
### setDaysOfWeekDisabled
|
||||
|
||||
Arguments:
|
||||
|
||||
* daysOfWeekDisabled (String|Array)
|
||||
|
||||
Sets the days of week that should be disabled.
|
||||
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker('setDaysOfWeekDisabled', [0,6]);
|
||||
```
|
||||
|
||||
Omit daysOfWeekDisabled (or provide an otherwise falsey value) to unset the disabled days.
|
||||
|
||||
```javascript
|
||||
$('#datetimepicker').datetimepicker('setDaysOfWeekDisabled');
|
||||
$('#datetimepicker').datetimepicker('setDaysOfWeekDisabled', null);
|
||||
```
|
||||
|
||||
## Events
|
||||
|
||||
Datetimepicker class exposes a few events for manipulating the dates.
|
||||
|
||||
### show
|
||||
|
||||
Fired when the date picker is displayed.
|
||||
|
||||
### hide
|
||||
|
||||
Fired when the date picker is hidden.
|
||||
|
||||
### changeDate
|
||||
|
||||
Fired when the date is changed.
|
||||
|
||||
```javascript
|
||||
$('#date-end')
|
||||
.datetimepicker()
|
||||
.on('changeDate', function(ev){
|
||||
if (ev.date.valueOf() < date-start-display.valueOf()){
|
||||
....
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
### changeYear
|
||||
|
||||
Fired when the *view* year is changed from decade view.
|
||||
|
||||
### changeMonth
|
||||
|
||||
Fired when the *view* month is changed from year view.
|
||||
|
||||
### outOfRange
|
||||
|
||||
Fired when you pick a date before the *startDate* or after the *endDate* or when you specify a date via the method *setDate* or *setUTCDate*..
|
||||
|
||||
## Keyboard support
|
||||
|
||||
The datetimepicker includes some keyboard navigation:
|
||||
|
||||
|
||||
|
||||
### up, down, left, right arrow keys
|
||||
|
||||
By themselves, left/right will move backward/forward one day, up/down will move back/forward one week.
|
||||
|
||||
With the shift key, up/left will move backward one month, down/right will move forward one month.
|
||||
|
||||
With the ctrl key, up/left will move backward one year, down/right will move forward oone year.
|
||||
|
||||
Shift+ctrl behaves the same as ctrl -- that is, it does not change both month and year simultaneously, only the year.
|
||||
|
||||
### escape
|
||||
|
||||
The escape key can be used to hide and re-show the datetimepicker; this is necessary if the user wants to manually edit the value.
|
||||
|
||||
### enter
|
||||
|
||||
When the picker is visible, enter will simply hide it. When the picker is not visible, enter will have normal effects -- submitting the current form, etc.
|
||||
|
||||
## Mouse Wheel View Navigation
|
||||
|
||||
In order to make this plugin easier to set different part of date time, mouse wheel has been used to navigate through different views. Scroll up your mouse wheel to navigate to the decade year view. Scroll down will lead to the minute view.
|
||||
|
||||
### Dependency
|
||||
|
||||
To enalbe this feature. [jQuery Mouse Wheel Plugin](https://github.com/brandonaaron/jquery-mousewheel) must be included before using this feature.
|
||||
|
||||
### Options
|
||||
|
||||
#### wheelViewModeNavigation
|
||||
|
||||
Boolean. Default: false
|
||||
|
||||
Whether or not to enable navigating through different view mode using mouse wheel.
|
||||
|
||||
#### wheelViewModeNavigationInverseDirection
|
||||
|
||||
Boolean. Default: false
|
||||
|
||||
Whether or not to reverse the direction of scrolling. Default is scroll up to the decade view.
|
||||
|
||||
#### wheelViewModeNavigationDelay
|
||||
|
||||
Integer. Default: 100
|
||||
|
||||
Time delays between the next respond to the wheel command, it controls the speed between switching in different views. Unit is in million seconds.
|
||||
|
||||
#### About viewSelect option
|
||||
|
||||
The recommended value for viewSelect option is 4 when this feature is enable. That means you can easily update any the value in every view. This option value is applied in the demo page.
|
||||
|
||||
### Feature Demo
|
||||
|
||||
A simple [Demo](http://lyonlai.github.io/bootstrap-datetimepicker/demo.html) page is given to show it's simple idea.
|
||||
|
||||
## I18N
|
||||
|
||||
The plugin supports i18n for the month and weekday names and the `weekStart` option. The default is English ('en'); other available translations are avilable in the `js/locales/` directory, simply include your desired locale after the plugin. To add more languages, simply add a key to `$.fn.datetimepicker.dates`, before calling `.datetimepicker()`. Example:
|
||||
|
||||
```javascript
|
||||
$.fn.datetimepicker.dates['en'] = {
|
||||
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
|
||||
daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
|
||||
daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
|
||||
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
||||
today: "Today"
|
||||
};
|
||||
```
|
||||
|
||||
You can override the default date format in the language configuration with `format` attribute.
|
||||
Example:
|
||||
|
||||
```javascript
|
||||
$.fn.datetimepicker.dates['pt-BR'] = {
|
||||
format: 'dd/mm/yyyy'
|
||||
};
|
||||
```
|
||||
|
||||
Right-to-left languages may also include `rtl: true` to make the calendar display appropriately.
|
||||
|
||||
If your browser (or those of your users) is displaying characters wrong, chances are the browser is loading the javascript file with a non-unicode encoding. Simply add `charset="UTF-8"` to your `script` tag:
|
||||
|
||||
```html
|
||||
<script type="text/javascript" src="bootstrap-datetimepicker.de.js" charset="UTF-8"></script>
|
||||
```
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "bootstrap-datetimepicker",
|
||||
"version": "1.0.0",
|
||||
"main": ["js/bootstrap-datetimepicker.min.js", "css/datetimepicker.css"]
|
||||
}
|
||||
@@ -0,0 +1,366 @@
|
||||
/*!
|
||||
* Datetimepicker 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
|
||||
*
|
||||
*/
|
||||
.datetimepicker {
|
||||
padding: 4px;
|
||||
margin-top: 1px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
/*.dow {
|
||||
border-top: 1px solid #ddd !important;
|
||||
}*/
|
||||
|
||||
}
|
||||
.datetimepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datetimepicker.datetimepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.datetimepicker.datetimepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
.datetimepicker-dropdown, .datetimepicker-dropdown-left {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
[class*=" datetimepicker-dropdown"]:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
}
|
||||
[class*=" datetimepicker-dropdown"]:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #ffffff;
|
||||
position: absolute;
|
||||
}
|
||||
[class*=" datetimepicker-dropdown-top"]:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-top: 7px solid #ccc;
|
||||
border-top-color: rgba(0, 0, 0, 0.2);
|
||||
border-bottom: 0;
|
||||
}
|
||||
[class*=" datetimepicker-dropdown-top"]:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid #ffffff;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-left:before {
|
||||
top: -7px;
|
||||
right: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-left:after {
|
||||
top: -6px;
|
||||
right: 7px;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-right:before {
|
||||
top: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-right:after {
|
||||
top: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-left:before {
|
||||
bottom: -7px;
|
||||
right: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-left:after {
|
||||
bottom: -6px;
|
||||
right: 7px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-right:before {
|
||||
bottom: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-right:after {
|
||||
bottom: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
.datetimepicker > div {
|
||||
display: none;
|
||||
}
|
||||
.datetimepicker.minutes div.datetimepicker-minutes {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.hours div.datetimepicker-hours {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.days div.datetimepicker-days {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.months div.datetimepicker-months {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.years div.datetimepicker-years {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker table {
|
||||
margin: 0;
|
||||
}
|
||||
.datetimepicker td,
|
||||
.datetimepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
.table-striped .datetimepicker table tr td,
|
||||
.table-striped .datetimepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datetimepicker table tr td.minute:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker table tr td.hour:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker table tr td.day:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker table tr td.old,
|
||||
.datetimepicker table tr td.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datetimepicker table tr td.disabled,
|
||||
.datetimepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datetimepicker table tr td.today,
|
||||
.datetimepicker table tr td.today:hover,
|
||||
.datetimepicker table tr td.today.disabled,
|
||||
.datetimepicker table tr td.today.disabled:hover {
|
||||
background-color: #fde19a;
|
||||
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
|
||||
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
|
||||
border-color: #fdf59a #fdf59a #fbed50;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
.datetimepicker table tr td.today:hover,
|
||||
.datetimepicker table tr td.today:hover:hover,
|
||||
.datetimepicker table tr td.today.disabled:hover,
|
||||
.datetimepicker table tr td.today.disabled:hover:hover,
|
||||
.datetimepicker table tr td.today:active,
|
||||
.datetimepicker table tr td.today:hover:active,
|
||||
.datetimepicker table tr td.today.disabled:active,
|
||||
.datetimepicker table tr td.today.disabled:hover:active,
|
||||
.datetimepicker table tr td.today.active,
|
||||
.datetimepicker table tr td.today:hover.active,
|
||||
.datetimepicker table tr td.today.disabled.active,
|
||||
.datetimepicker table tr td.today.disabled:hover.active,
|
||||
.datetimepicker table tr td.today.disabled,
|
||||
.datetimepicker table tr td.today:hover.disabled,
|
||||
.datetimepicker table tr td.today.disabled.disabled,
|
||||
.datetimepicker table tr td.today.disabled:hover.disabled,
|
||||
.datetimepicker table tr td.today[disabled],
|
||||
.datetimepicker table tr td.today:hover[disabled],
|
||||
.datetimepicker table tr td.today.disabled[disabled],
|
||||
.datetimepicker table tr td.today.disabled:hover[disabled] {
|
||||
background-color: #fdf59a;
|
||||
}
|
||||
.datetimepicker table tr td.today:active,
|
||||
.datetimepicker table tr td.today:hover:active,
|
||||
.datetimepicker table tr td.today.disabled:active,
|
||||
.datetimepicker table tr td.today.disabled:hover:active,
|
||||
.datetimepicker table tr td.today.active,
|
||||
.datetimepicker table tr td.today:hover.active,
|
||||
.datetimepicker table tr td.today.disabled.active,
|
||||
.datetimepicker table tr td.today.disabled:hover.active {
|
||||
background-color: #fbf069 \9;
|
||||
}
|
||||
.datetimepicker table tr td.active,
|
||||
.datetimepicker table tr td.active:hover,
|
||||
.datetimepicker table tr td.active.disabled,
|
||||
.datetimepicker table tr td.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datetimepicker table tr td.active:hover,
|
||||
.datetimepicker table tr td.active:hover:hover,
|
||||
.datetimepicker table tr td.active.disabled:hover,
|
||||
.datetimepicker table tr td.active.disabled:hover:hover,
|
||||
.datetimepicker table tr td.active:active,
|
||||
.datetimepicker table tr td.active:hover:active,
|
||||
.datetimepicker table tr td.active.disabled:active,
|
||||
.datetimepicker table tr td.active.disabled:hover:active,
|
||||
.datetimepicker table tr td.active.active,
|
||||
.datetimepicker table tr td.active:hover.active,
|
||||
.datetimepicker table tr td.active.disabled.active,
|
||||
.datetimepicker table tr td.active.disabled:hover.active,
|
||||
.datetimepicker table tr td.active.disabled,
|
||||
.datetimepicker table tr td.active:hover.disabled,
|
||||
.datetimepicker table tr td.active.disabled.disabled,
|
||||
.datetimepicker table tr td.active.disabled:hover.disabled,
|
||||
.datetimepicker table tr td.active[disabled],
|
||||
.datetimepicker table tr td.active:hover[disabled],
|
||||
.datetimepicker table tr td.active.disabled[disabled],
|
||||
.datetimepicker table tr td.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datetimepicker table tr td.active:active,
|
||||
.datetimepicker table tr td.active:hover:active,
|
||||
.datetimepicker table tr td.active.disabled:active,
|
||||
.datetimepicker table tr td.active.disabled:hover:active,
|
||||
.datetimepicker table tr td.active.active,
|
||||
.datetimepicker table tr td.active:hover.active,
|
||||
.datetimepicker table tr td.active.disabled.active,
|
||||
.datetimepicker table tr td.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datetimepicker table tr td span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours span {
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours table tr td span.hour_am,
|
||||
.datetimepicker .datetimepicker-hours table tr td span.hour_pm {
|
||||
width: 14.6%;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours fieldset legend,
|
||||
.datetimepicker .datetimepicker-minutes fieldset legend {
|
||||
margin-bottom: inherit;
|
||||
line-height: 30px;
|
||||
}
|
||||
.datetimepicker .datetimepicker-minutes span {
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
}
|
||||
.datetimepicker table tr td span:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datetimepicker table tr td span.disabled,
|
||||
.datetimepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datetimepicker table tr td span.active,
|
||||
.datetimepicker table tr td span.active:hover,
|
||||
.datetimepicker table tr td span.active.disabled,
|
||||
.datetimepicker table tr td span.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datetimepicker table tr td span.active:hover,
|
||||
.datetimepicker table tr td span.active:hover:hover,
|
||||
.datetimepicker table tr td span.active.disabled:hover,
|
||||
.datetimepicker table tr td span.active.disabled:hover:hover,
|
||||
.datetimepicker table tr td span.active:active,
|
||||
.datetimepicker table tr td span.active:hover:active,
|
||||
.datetimepicker table tr td span.active.disabled:active,
|
||||
.datetimepicker table tr td span.active.disabled:hover:active,
|
||||
.datetimepicker table tr td span.active.active,
|
||||
.datetimepicker table tr td span.active:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled.active,
|
||||
.datetimepicker table tr td span.active.disabled:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled,
|
||||
.datetimepicker table tr td span.active:hover.disabled,
|
||||
.datetimepicker table tr td span.active.disabled.disabled,
|
||||
.datetimepicker table tr td span.active.disabled:hover.disabled,
|
||||
.datetimepicker table tr td span.active[disabled],
|
||||
.datetimepicker table tr td span.active:hover[disabled],
|
||||
.datetimepicker table tr td span.active.disabled[disabled],
|
||||
.datetimepicker table tr td span.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datetimepicker table tr td span.active:active,
|
||||
.datetimepicker table tr td span.active:hover:active,
|
||||
.datetimepicker table tr td span.active.disabled:active,
|
||||
.datetimepicker table tr td span.active.disabled:hover:active,
|
||||
.datetimepicker table tr td span.active.active,
|
||||
.datetimepicker table tr td span.active:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled.active,
|
||||
.datetimepicker table tr td span.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datetimepicker table tr td span.old {
|
||||
color: #999999;
|
||||
}
|
||||
.datetimepicker th.switch {
|
||||
width: 145px;
|
||||
}
|
||||
.datetimepicker thead tr:first-child th,
|
||||
.datetimepicker tfoot tr:first-child th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker thead tr:first-child th:hover,
|
||||
.datetimepicker tfoot tr:first-child th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.input-append.date .add-on i,
|
||||
.input-prepend.date .add-on i {
|
||||
cursor: pointer;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
@@ -0,0 +1,419 @@
|
||||
/*!
|
||||
* Datetimepicker 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
|
||||
*
|
||||
*/
|
||||
.datetimepicker {
|
||||
padding: 4px;
|
||||
margin-top: 1px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
z-index: 1251 !important;
|
||||
}
|
||||
|
||||
.datetimepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
|
||||
.datetimepicker.datetimepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
.datetimepicker.datetimepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.datetimepicker-dropdown, .datetimepicker-dropdown-left {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
[class*=" datetimepicker-dropdown"]:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #cccccc;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
[class*=" datetimepicker-dropdown"]:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #ffffff;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
[class*=" datetimepicker-dropdown-top"]:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-top: 7px solid #cccccc;
|
||||
border-top-color: rgba(0, 0, 0, 0.2);
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
[class*=" datetimepicker-dropdown-top"]:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid #ffffff;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.datetimepicker-dropdown-bottom-left:before {
|
||||
top: -7px;
|
||||
right: 6px;
|
||||
}
|
||||
|
||||
.datetimepicker-dropdown-bottom-left:after {
|
||||
top: -6px;
|
||||
right: 7px;
|
||||
}
|
||||
|
||||
.datetimepicker-dropdown-bottom-right:before {
|
||||
top: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
|
||||
.datetimepicker-dropdown-bottom-right:after {
|
||||
top: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
|
||||
.datetimepicker-dropdown-top-left:before {
|
||||
bottom: -7px;
|
||||
right: 6px;
|
||||
}
|
||||
|
||||
.datetimepicker-dropdown-top-left:after {
|
||||
bottom: -6px;
|
||||
right: 7px;
|
||||
}
|
||||
|
||||
.datetimepicker-dropdown-top-right:before {
|
||||
bottom: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
|
||||
.datetimepicker-dropdown-top-right:after {
|
||||
bottom: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
|
||||
.datetimepicker > div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.datetimepicker.minutes div.datetimepicker-minutes {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.datetimepicker.hours div.datetimepicker-hours {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.datetimepicker.days div.datetimepicker-days {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.datetimepicker.months div.datetimepicker-months {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.datetimepicker.years div.datetimepicker-years {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.datetimepicker table {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.datetimepicker td,
|
||||
.datetimepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.table-striped .datetimepicker table tr td,
|
||||
.table-striped .datetimepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td.minute:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td.hour:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td.day:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td.old,
|
||||
.datetimepicker table tr td.new {
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td.disabled,
|
||||
.datetimepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td.today,
|
||||
.datetimepicker table tr td.today:hover,
|
||||
.datetimepicker table tr td.today.disabled,
|
||||
.datetimepicker table tr td.today.disabled:hover {
|
||||
background-color: #fde19a;
|
||||
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
|
||||
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
|
||||
border-color: #fdf59a #fdf59a #fbed50;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
|
||||
.datetimepicker table tr td.today:hover,
|
||||
.datetimepicker table tr td.today:hover:hover,
|
||||
.datetimepicker table tr td.today.disabled:hover,
|
||||
.datetimepicker table tr td.today.disabled:hover:hover,
|
||||
.datetimepicker table tr td.today:active,
|
||||
.datetimepicker table tr td.today:hover:active,
|
||||
.datetimepicker table tr td.today.disabled:active,
|
||||
.datetimepicker table tr td.today.disabled:hover:active,
|
||||
.datetimepicker table tr td.today.active,
|
||||
.datetimepicker table tr td.today:hover.active,
|
||||
.datetimepicker table tr td.today.disabled.active,
|
||||
.datetimepicker table tr td.today.disabled:hover.active,
|
||||
.datetimepicker table tr td.today.disabled,
|
||||
.datetimepicker table tr td.today:hover.disabled,
|
||||
.datetimepicker table tr td.today.disabled.disabled,
|
||||
.datetimepicker table tr td.today.disabled:hover.disabled,
|
||||
.datetimepicker table tr td.today[disabled],
|
||||
.datetimepicker table tr td.today:hover[disabled],
|
||||
.datetimepicker table tr td.today.disabled[disabled],
|
||||
.datetimepicker table tr td.today.disabled:hover[disabled] {
|
||||
background-color: #fdf59a;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td.today:active,
|
||||
.datetimepicker table tr td.today:hover:active,
|
||||
.datetimepicker table tr td.today.disabled:active,
|
||||
.datetimepicker table tr td.today.disabled:hover:active,
|
||||
.datetimepicker table tr td.today.active,
|
||||
.datetimepicker table tr td.today:hover.active,
|
||||
.datetimepicker table tr td.today.disabled.active,
|
||||
.datetimepicker table tr td.today.disabled:hover.active {
|
||||
background-color: #fbf069;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td.active,
|
||||
.datetimepicker table tr td.active:hover,
|
||||
.datetimepicker table tr td.active.disabled,
|
||||
.datetimepicker table tr td.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #ffffff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
.datetimepicker table tr td.active:hover,
|
||||
.datetimepicker table tr td.active:hover:hover,
|
||||
.datetimepicker table tr td.active.disabled:hover,
|
||||
.datetimepicker table tr td.active.disabled:hover:hover,
|
||||
.datetimepicker table tr td.active:active,
|
||||
.datetimepicker table tr td.active:hover:active,
|
||||
.datetimepicker table tr td.active.disabled:active,
|
||||
.datetimepicker table tr td.active.disabled:hover:active,
|
||||
.datetimepicker table tr td.active.active,
|
||||
.datetimepicker table tr td.active:hover.active,
|
||||
.datetimepicker table tr td.active.disabled.active,
|
||||
.datetimepicker table tr td.active.disabled:hover.active,
|
||||
.datetimepicker table tr td.active.disabled,
|
||||
.datetimepicker table tr td.active:hover.disabled,
|
||||
.datetimepicker table tr td.active.disabled.disabled,
|
||||
.datetimepicker table tr td.active.disabled:hover.disabled,
|
||||
.datetimepicker table tr td.active[disabled],
|
||||
.datetimepicker table tr td.active:hover[disabled],
|
||||
.datetimepicker table tr td.active.disabled[disabled],
|
||||
.datetimepicker table tr td.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td.active:active,
|
||||
.datetimepicker table tr td.active:hover:active,
|
||||
.datetimepicker table tr td.active.disabled:active,
|
||||
.datetimepicker table tr td.active.disabled:hover:active,
|
||||
.datetimepicker table tr td.active.active,
|
||||
.datetimepicker table tr td.active:hover.active,
|
||||
.datetimepicker table tr td.active.disabled.active,
|
||||
.datetimepicker table tr td.active.disabled:hover.active {
|
||||
background-color: #003399;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.datetimepicker .datetimepicker-hours span {
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
}
|
||||
|
||||
.datetimepicker .datetimepicker-hours table tr td span.hour_am,
|
||||
.datetimepicker .datetimepicker-hours table tr td span.hour_pm {
|
||||
width: 14.6%;
|
||||
}
|
||||
|
||||
.datetimepicker .datetimepicker-hours fieldset legend,
|
||||
.datetimepicker .datetimepicker-minutes fieldset legend {
|
||||
margin-bottom: inherit;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
.datetimepicker .datetimepicker-minutes span {
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td span:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td span.disabled,
|
||||
.datetimepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td span.active,
|
||||
.datetimepicker table tr td span.active:hover,
|
||||
.datetimepicker table tr td span.active.disabled,
|
||||
.datetimepicker table tr td span.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #ffffff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
.datetimepicker table tr td span.active:hover,
|
||||
.datetimepicker table tr td span.active:hover:hover,
|
||||
.datetimepicker table tr td span.active.disabled:hover,
|
||||
.datetimepicker table tr td span.active.disabled:hover:hover,
|
||||
.datetimepicker table tr td span.active:active,
|
||||
.datetimepicker table tr td span.active:hover:active,
|
||||
.datetimepicker table tr td span.active.disabled:active,
|
||||
.datetimepicker table tr td span.active.disabled:hover:active,
|
||||
.datetimepicker table tr td span.active.active,
|
||||
.datetimepicker table tr td span.active:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled.active,
|
||||
.datetimepicker table tr td span.active.disabled:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled,
|
||||
.datetimepicker table tr td span.active:hover.disabled,
|
||||
.datetimepicker table tr td span.active.disabled.disabled,
|
||||
.datetimepicker table tr td span.active.disabled:hover.disabled,
|
||||
.datetimepicker table tr td span.active[disabled],
|
||||
.datetimepicker table tr td span.active:hover[disabled],
|
||||
.datetimepicker table tr td span.active.disabled[disabled],
|
||||
.datetimepicker table tr td span.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td span.active:active,
|
||||
.datetimepicker table tr td span.active:hover:active,
|
||||
.datetimepicker table tr td span.active.disabled:active,
|
||||
.datetimepicker table tr td span.active.disabled:hover:active,
|
||||
.datetimepicker table tr td span.active.active,
|
||||
.datetimepicker table tr td span.active:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled.active,
|
||||
.datetimepicker table tr td span.active.disabled:hover.active {
|
||||
background-color: #003399;
|
||||
}
|
||||
|
||||
.datetimepicker table tr td span.old {
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.datetimepicker th.switch {
|
||||
width: 145px;
|
||||
}
|
||||
|
||||
.datetimepicker th span.glyphicon {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.datetimepicker thead tr:first-child th,
|
||||
.datetimepicker tfoot tr:first-child th {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.datetimepicker thead tr:first-child th:hover,
|
||||
.datetimepicker tfoot tr:first-child th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
|
||||
.input-append.date .add-on i,
|
||||
.input-prepend.date .add-on i,
|
||||
.input-group.date .input-group-addon span {
|
||||
cursor: pointer;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
1593
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js
vendored
Normal file
1
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js
vendored
Normal file
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.bg.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Bulgarian translation for bootstrap-datetimepicker
|
||||
* Apostol Apostolov <apostol.s.apostolov@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['bg'] = {
|
||||
days: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота", "Неделя"],
|
||||
daysShort: ["Нед", "Пон", "Вто", "Сря", "Чет", "Пет", "Съб", "Нед"],
|
||||
daysMin: ["Н", "П", "В", "С", "Ч", "П", "С", "Н"],
|
||||
months: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"],
|
||||
monthsShort: ["Ян", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Ное", "Дек"],
|
||||
today: "днес",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ca.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Catalan translation for bootstrap-datetimepicker
|
||||
* J. Garcia <jogaco.en@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['ca'] = {
|
||||
days: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte", "Diumenge"],
|
||||
daysShort: ["Diu", "Dil", "Dmt", "Dmc", "Dij", "Div", "Dis", "Diu"],
|
||||
daysMin: ["dg", "dl", "dt", "dc", "dj", "dv", "ds", "dg"],
|
||||
months: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"],
|
||||
monthsShort: ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Des"],
|
||||
today: "Avui",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
17
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.cs.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Czech translation for bootstrap-datetimepicker
|
||||
* Matěj Koubík <matej@koubik.name>
|
||||
* Fixes by Michal Remiš <michal.remis@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['cs'] = {
|
||||
days: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle"],
|
||||
daysShort: ["Ned", "Pon", "Úte", "Stř", "Čtv", "Pát", "Sob", "Ned"],
|
||||
daysMin: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So", "Ne"],
|
||||
months: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"],
|
||||
monthsShort: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čnc", "Srp", "Zář", "Říj", "Lis", "Pro"],
|
||||
today: "Dnes",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.da.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Danish translation for bootstrap-datetimepicker
|
||||
* Christian Pedersen <http://github.com/chripede>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['da'] = {
|
||||
days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"],
|
||||
daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"],
|
||||
daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"],
|
||||
months: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
|
||||
today: "I Dag",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
18
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.de.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* German translation for bootstrap-datetimepicker
|
||||
* Sam Zurcher <sam@orelias.ch>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['de'] = {
|
||||
days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"],
|
||||
daysShort: ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam", "Son"],
|
||||
daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"],
|
||||
months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
|
||||
monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
|
||||
today: "Heute",
|
||||
suffix: [],
|
||||
meridiem: [],
|
||||
weekStart: 1,
|
||||
format: "dd.mm.yyyy"
|
||||
};
|
||||
}(jQuery));
|
||||
15
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.el.js
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* Greek translation for bootstrap-datetimepicker
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['el'] = {
|
||||
days: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο", "Κυριακή"],
|
||||
daysShort: ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ", "Κυρ"],
|
||||
daysMin: ["Κυ", "Δε", "Τρ", "Τε", "Πε", "Πα", "Σα", "Κυ"],
|
||||
months: ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"],
|
||||
monthsShort: ["Ιαν", "Φεβ", "Μαρ", "Απρ", "Μάι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ"],
|
||||
today: "Σήμερα",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.es.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Spanish translation for bootstrap-datetimepicker
|
||||
* Bruno Bonamin <bruno.bonamin@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['es'] = {
|
||||
days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"],
|
||||
daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb", "Dom"],
|
||||
daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa", "Do"],
|
||||
months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
|
||||
monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
|
||||
today: "Hoy",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fi.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Finnish translation for bootstrap-datetimepicker
|
||||
* Jaakko Salonen <https://github.com/jsalonen>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['fi'] = {
|
||||
days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai", "sunnuntai"],
|
||||
daysShort: ["sun", "maa", "tii", "kes", "tor", "per", "lau", "sun"],
|
||||
daysMin: ["su", "ma", "ti", "ke", "to", "pe", "la", "su"],
|
||||
months: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"],
|
||||
monthsShort: ["tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mar", "jou"],
|
||||
today: "tänään",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
18
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fr.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* French translation for bootstrap-datetimepicker
|
||||
* Nico Mollet <nico.mollet@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['fr'] = {
|
||||
days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"],
|
||||
daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"],
|
||||
daysMin: ["D", "L", "Ma", "Me", "J", "V", "S", "D"],
|
||||
months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
|
||||
monthsShort: ["Jan", "Fev", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Dec"],
|
||||
today: "Aujourd'hui",
|
||||
suffix: [],
|
||||
meridiem: ["am", "pm"],
|
||||
weekStart: 1,
|
||||
format: "dd/mm/yyyy"
|
||||
};
|
||||
}(jQuery));
|
||||
17
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.he.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Hebrew translation for bootstrap-datetimepicker
|
||||
* Sagie Maoz <sagie@maoz.info>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['he'] = {
|
||||
days: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"],
|
||||
daysShort: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"],
|
||||
daysMin: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"],
|
||||
months: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"],
|
||||
monthsShort: ["ינו", "פבר", "מרץ", "אפר", "מאי", "יונ", "יול", "אוג", "ספט", "אוק", "נוב", "דצמ"],
|
||||
today: "היום",
|
||||
suffix: [],
|
||||
meridiem: [],
|
||||
rtl: true
|
||||
};
|
||||
}(jQuery));
|
||||
15
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hr.js
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* Croatian localisation
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['hr'] = {
|
||||
days: ["Nedjelja", "Ponedjelja", "Utorak", "Srijeda", "Četrtak", "Petak", "Subota", "Nedjelja"],
|
||||
daysShort: ["Ned", "Pon", "Uto", "Srr", "Čet", "Pet", "Sub", "Ned"],
|
||||
daysMin: ["Ne", "Po", "Ut", "Sr", "Če", "Pe", "Su", "Ne"],
|
||||
months: ["Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"],
|
||||
monthsShort: ["Sije", "Velj", "Ožu", "Tra", "Svi", "Lip", "Jul", "Kol", "Ruj", "Lis", "Stu", "Pro"],
|
||||
today: "Danas",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
17
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hu.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Hungarian translation for bootstrap-datetimepicker
|
||||
* darevish <http://github.com/darevish>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['hu'] = {
|
||||
days: ["Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Vasárnap"],
|
||||
daysShort: ["Vas", "Hét", "Ked", "Sze", "Csü", "Pén", "Szo", "Vas"],
|
||||
daysMin: ["V", "H", "K", "Sze", "Cs", "P", "Szo", "V"],
|
||||
months: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"],
|
||||
monthsShort: ["Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Sze", "Okt", "Nov", "Dec"],
|
||||
today: "Ma",
|
||||
suffix: [],
|
||||
meridiem: [],
|
||||
weekStart: 1
|
||||
};
|
||||
}(jQuery));
|
||||
15
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.id.js
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* Bahasa translation for bootstrap-datetimepicker
|
||||
* Azwar Akbar <azwar.akbar@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['id'] = {
|
||||
days: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"],
|
||||
daysShort: ["Mgu", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab", "Mgu"],
|
||||
daysMin: ["Mg", "Sn", "Sl", "Ra", "Ka", "Ju", "Sa", "Mg"],
|
||||
months: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nov", "Des"],
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.is.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Icelandic translation for bootstrap-datetimepicker
|
||||
* Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['is'] = {
|
||||
days: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur", "Sunnudagur"],
|
||||
daysShort: ["Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau", "Sun"],
|
||||
daysMin: ["Su", "Má", "Þr", "Mi", "Fi", "Fö", "La", "Su"],
|
||||
months: ["Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Okt", "Nóv", "Des"],
|
||||
today: "Í Dag",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
18
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.it.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Italian translation for bootstrap-datetimepicker
|
||||
* Enrico Rubboli <rubboli@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['it'] = {
|
||||
days: ["Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato", "Domenica"],
|
||||
daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"],
|
||||
daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa", "Do"],
|
||||
months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
|
||||
monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"],
|
||||
today: "Oggi",
|
||||
suffix: [],
|
||||
meridiem: [],
|
||||
weekStart: 1,
|
||||
format: "dd.mm.yyyy"
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ja.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Japanese translation for bootstrap-datetimepicker
|
||||
* Norio Suzuki <https://github.com/suzuki/>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['ja'] = {
|
||||
days: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"],
|
||||
daysShort: ["日", "月", "火", "水", "木", "金", "土", "日"],
|
||||
daysMin: ["日", "月", "火", "水", "木", "金", "土", "日"],
|
||||
months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
|
||||
monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
|
||||
today: "今日",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
15
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.kr.js
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* Korean translation for bootstrap-datetimepicker
|
||||
* Gu Youn <http://github.com/guyoun>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['kr'] = {
|
||||
days: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"],
|
||||
daysShort: ["일", "월", "화", "수", "목", "금", "토", "일"],
|
||||
daysMin: ["일", "월", "화", "수", "목", "금", "토", "일"],
|
||||
months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
|
||||
monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
18
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lt.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Lithuanian translation for bootstrap-datetimepicker
|
||||
* Šarūnas Gliebus <ssharunas@yahoo.co.uk>
|
||||
*/
|
||||
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['lt'] = {
|
||||
days: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis", "Sekmadienis"],
|
||||
daysShort: ["S", "Pr", "A", "T", "K", "Pn", "Š", "S"],
|
||||
daysMin: ["Sk", "Pr", "An", "Tr", "Ke", "Pn", "Št", "Sk"],
|
||||
months: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"],
|
||||
monthsShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugp", "Rugs", "Spa", "Lap", "Gru"],
|
||||
today: "Šiandien",
|
||||
suffix: [],
|
||||
meridiem: [],
|
||||
weekStart: 1
|
||||
};
|
||||
}(jQuery));
|
||||
18
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lv.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Latvian translation for bootstrap-datetimepicker
|
||||
* Artis Avotins <artis@apit.lv>
|
||||
*/
|
||||
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['lv'] = {
|
||||
days: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena", "Svētdiena"],
|
||||
daysShort: ["Sv", "P", "O", "T", "C", "Pk", "S", "Sv"],
|
||||
daysMin: ["Sv", "Pr", "Ot", "Tr", "Ce", "Pk", "St", "Sv"],
|
||||
months: ["Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jūn", "Jūl", "Aug", "Sep", "Okt", "Nov", "Dec."],
|
||||
today: "Šodien",
|
||||
suffix: [],
|
||||
meridiem: [],
|
||||
weekStart: 1
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ms.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Malay translation for bootstrap-datetimepicker
|
||||
* Ateman Faiz <noorulfaiz@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['ms'] = {
|
||||
days: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu", "Ahad"],
|
||||
daysShort: ["Aha", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab", "Aha"],
|
||||
daysMin: ["Ah", "Is", "Se", "Ra", "Kh", "Ju", "Sa", "Ah"],
|
||||
months: ["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis"],
|
||||
today: "Hari Ini",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nb.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Norwegian (bokmål) translation for bootstrap-datetimepicker
|
||||
* Fredrik Sundmyhr <http://github.com/fsundmyhr>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['nb'] = {
|
||||
days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"],
|
||||
daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"],
|
||||
daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"],
|
||||
months: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
|
||||
today: "I Dag",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nl.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Dutch translation for bootstrap-datetimepicker
|
||||
* Reinier Goltstein <mrgoltstein@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['nl'] = {
|
||||
days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"],
|
||||
daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
|
||||
daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
|
||||
months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
|
||||
monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
|
||||
today: "Vandaag",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
17
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pl.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Polish translation for bootstrap-datetimepicker
|
||||
* Robert <rtpm@gazeta.pl>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['pl'] = {
|
||||
days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"],
|
||||
daysShort: ["Nie", "Pn", "Wt", "Śr", "Czw", "Pt", "So", "Nie"],
|
||||
daysMin: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So", "N"],
|
||||
months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"],
|
||||
monthsShort: ["Sty", "Lu", "Mar", "Kw", "Maj", "Cze", "Lip", "Sie", "Wrz", "Pa", "Lis", "Gru"],
|
||||
today: "Dzisiaj",
|
||||
suffix: [],
|
||||
meridiem: [],
|
||||
weekStart: 1
|
||||
};
|
||||
}(jQuery));
|
||||
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Brazilian translation for bootstrap-datetimepicker
|
||||
* Cauan Cabral <cauan@radig.com.br>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['pt-BR'] = {
|
||||
format: 'dd/mm/yyyy',
|
||||
days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"],
|
||||
daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
|
||||
daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"],
|
||||
months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
|
||||
monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
|
||||
today: "Hoje",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
17
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Portuguese translation for bootstrap-datetimepicker
|
||||
* Original code: Cauan Cabral <cauan@radig.com.br>
|
||||
* Tiago Melo <tiago.blackcode@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['pt'] = {
|
||||
days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"],
|
||||
daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
|
||||
daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"],
|
||||
months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
|
||||
monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
|
||||
suffix: [],
|
||||
meridiem: ["am","pm"],
|
||||
today: "Hoje"
|
||||
};
|
||||
}(jQuery));
|
||||
17
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ro.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Romanian translation for bootstrap-datetimepicker
|
||||
* Cristian Vasile <cristi.mie@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['ro'] = {
|
||||
days: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă", "Duminică"],
|
||||
daysShort: ["Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm", "Dum"],
|
||||
daysMin: ["Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ", "Du"],
|
||||
months: ["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"],
|
||||
monthsShort: ["Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
||||
today: "Astăzi",
|
||||
suffix: [],
|
||||
meridiem: [],
|
||||
weekStart: 1
|
||||
};
|
||||
}(jQuery));
|
||||
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Serbian latin translation for bootstrap-datetimepicker
|
||||
* Bojan Milosavlević <milboj@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['rs'] = {
|
||||
days: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota", "Nedelja"],
|
||||
daysShort: ["Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub", "Ned"],
|
||||
daysMin: ["N", "Po", "U", "Sr", "Č", "Pe", "Su", "N"],
|
||||
months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
|
||||
today: "Danas",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Serbian cyrillic translation for bootstrap-datetimepicker
|
||||
* Bojan Milosavlević <milboj@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['rs'] = {
|
||||
days: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота", "Недеља"],
|
||||
daysShort: ["Нед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб", "Нед"],
|
||||
daysMin: ["Н", "По", "У", "Ср", "Ч", "Пе", "Су", "Н"],
|
||||
months: ["Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар"],
|
||||
monthsShort: ["Јан", "Феб", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"],
|
||||
today: "Данас",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ru.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Russian translation for bootstrap-datetimepicker
|
||||
* Victor Taranenko <darwin@snowdale.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['ru'] = {
|
||||
days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"],
|
||||
daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Вск"],
|
||||
daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"],
|
||||
months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
|
||||
monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
|
||||
today: "Сегодня",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
17
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sk.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Slovak translation for bootstrap-datetimepicker
|
||||
* Marek Lichtner <marek@licht.sk>
|
||||
* Fixes by Michal Remiš <michal.remis@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates["sk"] = {
|
||||
days: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota", "Nedeľa"],
|
||||
daysShort: ["Ned", "Pon", "Uto", "Str", "Štv", "Pia", "Sob", "Ned"],
|
||||
daysMin: ["Ne", "Po", "Ut", "St", "Št", "Pia", "So", "Ne"],
|
||||
months: ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec"],
|
||||
today: "Dnes",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sl.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Slovene translation for bootstrap-datetimepicker
|
||||
* Gregor Rudolf <gregor.rudolf@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['sl'] = {
|
||||
days: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota", "Nedelja"],
|
||||
daysShort: ["Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob", "Ned"],
|
||||
daysMin: ["Ne", "Po", "To", "Sr", "Če", "Pe", "So", "Ne"],
|
||||
months: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
|
||||
today: "Danes",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sv.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Swedish translation for bootstrap-datetimepicker
|
||||
* Patrik Ragnarsson <patrik@starkast.net>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['sv'] = {
|
||||
days: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Söndag"],
|
||||
daysShort: ["Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör", "Sön"],
|
||||
daysMin: ["Sö", "Må", "Ti", "On", "To", "Fr", "Lö", "Sö"],
|
||||
months: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"],
|
||||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
|
||||
today: "I Dag",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
17
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sw.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Swahili translation for bootstrap-datetimepicker
|
||||
* Edwin Mugendi <https://github.com/edwinmugendi>
|
||||
* Source: http://scriptsource.org/cms/scripts/page.php?item_id=entry_detail&uid=xnfaqyzcku
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['sw'] = {
|
||||
days: ["Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi", "Jumapili"],
|
||||
daysShort: ["J2", "J3", "J4", "J5", "Alh", "Ij", "J1", "J2"],
|
||||
daysMin: ["2", "3", "4", "5", "A", "I", "1", "2"],
|
||||
months: ["Januari", "Februari", "Machi", "Aprili", "Mei", "Juni", "Julai", "Agosti", "Septemba", "Oktoba", "Novemba", "Desemba"],
|
||||
monthsShort: ["Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des"],
|
||||
today: "Leo",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.th.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Thai translation for bootstrap-datetimepicker
|
||||
* Suchau Jiraprapot <seroz24@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['th'] = {
|
||||
days: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"],
|
||||
daysShort: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"],
|
||||
daysMin: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"],
|
||||
months: ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"],
|
||||
monthsShort: ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."],
|
||||
today: "วันนี้",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
17
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.tr.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Turkish translation for bootstrap-datetimepicker
|
||||
* Serkan Algur <kaisercrazy_2@hotmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['tr'] = {
|
||||
days: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar"],
|
||||
daysShort: ["Pz", "Pzt", "Sal", "Çrş", "Prş", "Cu", "Cts", "Pz"],
|
||||
daysMin: ["Pz", "Pzt", "Sa", "Çr", "Pr", "Cu", "Ct", "Pz"],
|
||||
months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],
|
||||
monthsShort: ["Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"],
|
||||
today: "Bugün",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
|
||||
15
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ua.js
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* Ukrainian translation for bootstrap-datepicker
|
||||
* Igor Polynets
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['ua'] = {
|
||||
days: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четверг", "П'ятниця", "Субота", "Неділя"],
|
||||
daysShort: ["Нед", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Нед"],
|
||||
daysMin: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Нд"],
|
||||
months: ["Cічень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"],
|
||||
monthsShort: ["Січ", "Лют", "Бер", "Квт", "Трв", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Грд"],
|
||||
today: "Сьогодні",
|
||||
weekStart: 1
|
||||
};
|
||||
}(jQuery));
|
||||
16
wwwroot/BackendScript/assets/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.uk.js
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Ukrainian translation for bootstrap-datetimepicker
|
||||
* Andrey Vityuk <andrey [dot] vityuk [at] gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['uk'] = {
|
||||
days: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота", "Неділя"],
|
||||
daysShort: ["Нед", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Нед"],
|
||||
daysMin: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Нд"],
|
||||
months: ["Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"],
|
||||
monthsShort: ["Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Гру"],
|
||||
today: "Сьогодні",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Simplified Chinese translation for bootstrap-datetimepicker
|
||||
* Yuan Cheung <advanimal@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['zh-CN'] = {
|
||||
days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
|
||||
daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
|
||||
daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"],
|
||||
months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
|
||||
monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
|
||||
today: "今日",
|
||||
suffix: [],
|
||||
meridiem: []
|
||||
};
|
||||
}(jQuery));
|
||||
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Traditional Chinese translation for bootstrap-datetimepicker
|
||||
* Rung-Sheng Jang <daniel@i-trend.co.cc>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datetimepicker.dates['zh-TW'] = {
|
||||
days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
|
||||
daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
|
||||
daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"],
|
||||
months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
|
||||
monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
|
||||
today: "今天",
|
||||
suffix: [],
|
||||
meridiem: ["上午", "下午"]
|
||||
};
|
||||
}(jQuery));
|
||||
@@ -0,0 +1,365 @@
|
||||
/*!
|
||||
* Datetimepicker for Bootstrap
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Improvements by Sébastien Malot
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*/
|
||||
.datetimepicker {
|
||||
padding: 4px;
|
||||
margin-top: 1px;
|
||||
white-space: normal;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
}
|
||||
.datetimepicker.datetimepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.datetimepicker.datetimepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
.datetimepicker > div {
|
||||
display: none;
|
||||
}
|
||||
.datetimepicker.minutes div.datetimepicker-minutes {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.hours div.datetimepicker-hours {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.days div.datetimepicker-days {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.months div.datetimepicker-months {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.years div.datetimepicker-years {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker table {
|
||||
margin: 0;
|
||||
}
|
||||
.datetimepicker table tr td.minute:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker table tr td.hour:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker table tr td.day:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker table tr td span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.datetimepicker table tr td span:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datetimepicker table tr td span.old {
|
||||
color: #999999;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours span {
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
}
|
||||
.datetimepicker .datetimepicker-minutes span {
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
}
|
||||
.datetimepicker th.switch {
|
||||
width: 145px;
|
||||
}
|
||||
.datetimepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datetimepicker-dropdown,
|
||||
.datetimepicker-dropdown-left {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
[class*="datetimepicker-dropdown"]:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
}
|
||||
[class*="datetimepicker-dropdown"]:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #ffffff;
|
||||
position: absolute;
|
||||
}
|
||||
[class*="datetimepicker-dropdown-top"]:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-top: 7px solid #ccc;
|
||||
border-top-color: rgba(0, 0, 0, 0.2);
|
||||
border-bottom: 0;
|
||||
}
|
||||
[class*="datetimepicker-dropdown-top"]:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid #ffffff;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-left:before {
|
||||
top: -7px;
|
||||
right: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-left:after {
|
||||
top: -6px;
|
||||
right: 7px;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-right:before {
|
||||
top: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-right:after {
|
||||
top: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-left:before {
|
||||
bottom: -7px;
|
||||
right: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-left:after {
|
||||
bottom: -6px;
|
||||
right: 7px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-right:before {
|
||||
bottom: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-right:after {
|
||||
bottom: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
.datetimepicker td,
|
||||
.datetimepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
.table-striped .datetimepicker table tr td,
|
||||
.table-striped .datetimepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datetimepicker table tr td.old,
|
||||
.datetimepicker table tr td.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datetimepicker table tr td.disabled,
|
||||
.datetimepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datetimepicker table tr td.today,
|
||||
.datetimepicker table tr td.today:hover,
|
||||
.datetimepicker table tr td.today.disabled,
|
||||
.datetimepicker table tr td.today.disabled:hover {
|
||||
background-color: #fde19a;
|
||||
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
|
||||
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
|
||||
border-color: #fdf59a #fdf59a #fbed50;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
.datetimepicker table tr td.today:hover,
|
||||
.datetimepicker table tr td.today:hover:hover,
|
||||
.datetimepicker table tr td.today.disabled:hover,
|
||||
.datetimepicker table tr td.today.disabled:hover:hover,
|
||||
.datetimepicker table tr td.today:active,
|
||||
.datetimepicker table tr td.today:hover:active,
|
||||
.datetimepicker table tr td.today.disabled:active,
|
||||
.datetimepicker table tr td.today.disabled:hover:active,
|
||||
.datetimepicker table tr td.today.active,
|
||||
.datetimepicker table tr td.today:hover.active,
|
||||
.datetimepicker table tr td.today.disabled.active,
|
||||
.datetimepicker table tr td.today.disabled:hover.active,
|
||||
.datetimepicker table tr td.today.disabled,
|
||||
.datetimepicker table tr td.today:hover.disabled,
|
||||
.datetimepicker table tr td.today.disabled.disabled,
|
||||
.datetimepicker table tr td.today.disabled:hover.disabled,
|
||||
.datetimepicker table tr td.today[disabled],
|
||||
.datetimepicker table tr td.today:hover[disabled],
|
||||
.datetimepicker table tr td.today.disabled[disabled],
|
||||
.datetimepicker table tr td.today.disabled:hover[disabled] {
|
||||
background-color: #fdf59a;
|
||||
}
|
||||
.datetimepicker table tr td.today:active,
|
||||
.datetimepicker table tr td.today:hover:active,
|
||||
.datetimepicker table tr td.today.disabled:active,
|
||||
.datetimepicker table tr td.today.disabled:hover:active,
|
||||
.datetimepicker table tr td.today.active,
|
||||
.datetimepicker table tr td.today:hover.active,
|
||||
.datetimepicker table tr td.today.disabled.active,
|
||||
.datetimepicker table tr td.today.disabled:hover.active {
|
||||
background-color: #fbf069 \9;
|
||||
}
|
||||
.datetimepicker table tr td.active,
|
||||
.datetimepicker table tr td.active:hover,
|
||||
.datetimepicker table tr td.active.disabled,
|
||||
.datetimepicker table tr td.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datetimepicker table tr td.active:hover,
|
||||
.datetimepicker table tr td.active:hover:hover,
|
||||
.datetimepicker table tr td.active.disabled:hover,
|
||||
.datetimepicker table tr td.active.disabled:hover:hover,
|
||||
.datetimepicker table tr td.active:active,
|
||||
.datetimepicker table tr td.active:hover:active,
|
||||
.datetimepicker table tr td.active.disabled:active,
|
||||
.datetimepicker table tr td.active.disabled:hover:active,
|
||||
.datetimepicker table tr td.active.active,
|
||||
.datetimepicker table tr td.active:hover.active,
|
||||
.datetimepicker table tr td.active.disabled.active,
|
||||
.datetimepicker table tr td.active.disabled:hover.active,
|
||||
.datetimepicker table tr td.active.disabled,
|
||||
.datetimepicker table tr td.active:hover.disabled,
|
||||
.datetimepicker table tr td.active.disabled.disabled,
|
||||
.datetimepicker table tr td.active.disabled:hover.disabled,
|
||||
.datetimepicker table tr td.active[disabled],
|
||||
.datetimepicker table tr td.active:hover[disabled],
|
||||
.datetimepicker table tr td.active.disabled[disabled],
|
||||
.datetimepicker table tr td.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datetimepicker table tr td.active:active,
|
||||
.datetimepicker table tr td.active:hover:active,
|
||||
.datetimepicker table tr td.active.disabled:active,
|
||||
.datetimepicker table tr td.active.disabled:hover:active,
|
||||
.datetimepicker table tr td.active.active,
|
||||
.datetimepicker table tr td.active:hover.active,
|
||||
.datetimepicker table tr td.active.disabled.active,
|
||||
.datetimepicker table tr td.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours table tr td span.hour_am,
|
||||
.datetimepicker .datetimepicker-hours table tr td span.hour_pm {
|
||||
width: 14.6%;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours fieldset legend,
|
||||
.datetimepicker .datetimepicker-minutes fieldset legend {
|
||||
margin-bottom: inherit;
|
||||
line-height: 30px;
|
||||
}
|
||||
.datetimepicker table tr td span.disabled,
|
||||
.datetimepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datetimepicker table tr td span.active,
|
||||
.datetimepicker table tr td span.active:hover,
|
||||
.datetimepicker table tr td span.active.disabled,
|
||||
.datetimepicker table tr td span.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datetimepicker table tr td span.active:hover,
|
||||
.datetimepicker table tr td span.active:hover:hover,
|
||||
.datetimepicker table tr td span.active.disabled:hover,
|
||||
.datetimepicker table tr td span.active.disabled:hover:hover,
|
||||
.datetimepicker table tr td span.active:active,
|
||||
.datetimepicker table tr td span.active:hover:active,
|
||||
.datetimepicker table tr td span.active.disabled:active,
|
||||
.datetimepicker table tr td span.active.disabled:hover:active,
|
||||
.datetimepicker table tr td span.active.active,
|
||||
.datetimepicker table tr td span.active:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled.active,
|
||||
.datetimepicker table tr td span.active.disabled:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled,
|
||||
.datetimepicker table tr td span.active:hover.disabled,
|
||||
.datetimepicker table tr td span.active.disabled.disabled,
|
||||
.datetimepicker table tr td span.active.disabled:hover.disabled,
|
||||
.datetimepicker table tr td span.active[disabled],
|
||||
.datetimepicker table tr td span.active:hover[disabled],
|
||||
.datetimepicker table tr td span.active.disabled[disabled],
|
||||
.datetimepicker table tr td span.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datetimepicker table tr td span.active:active,
|
||||
.datetimepicker table tr td span.active:hover:active,
|
||||
.datetimepicker table tr td span.active.disabled:active,
|
||||
.datetimepicker table tr td span.active.disabled:hover:active,
|
||||
.datetimepicker table tr td span.active.active,
|
||||
.datetimepicker table tr td span.active:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled.active,
|
||||
.datetimepicker table tr td span.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datetimepicker thead tr:first-child th,
|
||||
.datetimepicker tfoot tr:first-child th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker thead tr:first-child th:hover,
|
||||
.datetimepicker tfoot tr:first-child th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.input-append.date .add-on i,
|
||||
.input-prepend.date .add-on i {
|
||||
cursor: pointer;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
@@ -0,0 +1,416 @@
|
||||
/*!
|
||||
* Datetimepicker for Bootstrap
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Improvements by Sébastien Malot
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*/
|
||||
|
||||
.datetimepicker {
|
||||
padding: 4px;
|
||||
margin-top: 1px;
|
||||
white-space: normal;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
&.datetimepicker-rtl {
|
||||
direction: rtl;
|
||||
table {
|
||||
tr {
|
||||
td {
|
||||
span {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
& > div {
|
||||
display: none;
|
||||
}
|
||||
&.minutes {
|
||||
div {
|
||||
&.datetimepicker-minutes {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.hours {
|
||||
div {
|
||||
&.datetimepicker-hours {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.days {
|
||||
div {
|
||||
&.datetimepicker-days {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.months {
|
||||
div {
|
||||
&.datetimepicker-months {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.years {
|
||||
div {
|
||||
&.datetimepicker-years {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
table {
|
||||
margin: 0;
|
||||
tr {
|
||||
td {
|
||||
&.minute {
|
||||
&:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
&.hour {
|
||||
&:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
&.day {
|
||||
&:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
&:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
&.old {
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.datetimepicker-hours {
|
||||
span {
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
}
|
||||
}
|
||||
.datetimepicker-minutes {
|
||||
span {
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
}
|
||||
}
|
||||
th {
|
||||
&.switch {
|
||||
width: 145px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.datetimepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datetimepicker-dropdown, .datetimepicker-dropdown-left {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
[class*="datetimepicker-dropdown"]:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
}
|
||||
[class*="datetimepicker-dropdown"]:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #ffffff;
|
||||
position: absolute;
|
||||
}
|
||||
[class*="datetimepicker-dropdown-top"]:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-top: 7px solid #ccc;
|
||||
border-top-color: rgba(0, 0, 0, 0.2);
|
||||
border-bottom: 0;
|
||||
}
|
||||
[class*="datetimepicker-dropdown-top"]:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid #ffffff;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-left {
|
||||
&:before {
|
||||
top: -7px;
|
||||
right: 6px;
|
||||
}
|
||||
&:after {
|
||||
top: -6px;
|
||||
right: 7px;
|
||||
}
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-right {
|
||||
&:before {
|
||||
top: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
&:after {
|
||||
top: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
}
|
||||
.datetimepicker-dropdown-top-left {
|
||||
&:before {
|
||||
bottom: -7px;
|
||||
right: 6px;
|
||||
}
|
||||
&:after {
|
||||
bottom: -6px;
|
||||
right: 7px;
|
||||
}
|
||||
}
|
||||
.datetimepicker-dropdown-top-right {
|
||||
&:before {
|
||||
bottom: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
&:after {
|
||||
bottom: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
}
|
||||
.datetimepicker td,
|
||||
.datetimepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
.table-striped .datetimepicker table tr td,
|
||||
.table-striped .datetimepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datetimepicker table tr td.old,
|
||||
.datetimepicker table tr td.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datetimepicker table tr td.disabled,
|
||||
.datetimepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datetimepicker table tr td.today,
|
||||
.datetimepicker table tr td.today:hover,
|
||||
.datetimepicker table tr td.today.disabled,
|
||||
.datetimepicker table tr td.today.disabled:hover {
|
||||
background-color: #fde19a;
|
||||
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
|
||||
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
|
||||
border-color: #fdf59a #fdf59a #fbed50;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
.datetimepicker table tr td.today:hover,
|
||||
.datetimepicker table tr td.today:hover:hover,
|
||||
.datetimepicker table tr td.today.disabled:hover,
|
||||
.datetimepicker table tr td.today.disabled:hover:hover,
|
||||
.datetimepicker table tr td.today:active,
|
||||
.datetimepicker table tr td.today:hover:active,
|
||||
.datetimepicker table tr td.today.disabled:active,
|
||||
.datetimepicker table tr td.today.disabled:hover:active,
|
||||
.datetimepicker table tr td.today.active,
|
||||
.datetimepicker table tr td.today:hover.active,
|
||||
.datetimepicker table tr td.today.disabled.active,
|
||||
.datetimepicker table tr td.today.disabled:hover.active,
|
||||
.datetimepicker table tr td.today.disabled,
|
||||
.datetimepicker table tr td.today:hover.disabled,
|
||||
.datetimepicker table tr td.today.disabled.disabled,
|
||||
.datetimepicker table tr td.today.disabled:hover.disabled,
|
||||
.datetimepicker table tr td.today[disabled],
|
||||
.datetimepicker table tr td.today:hover[disabled],
|
||||
.datetimepicker table tr td.today.disabled[disabled],
|
||||
.datetimepicker table tr td.today.disabled:hover[disabled] {
|
||||
background-color: #fdf59a;
|
||||
}
|
||||
.datetimepicker table tr td.today:active,
|
||||
.datetimepicker table tr td.today:hover:active,
|
||||
.datetimepicker table tr td.today.disabled:active,
|
||||
.datetimepicker table tr td.today.disabled:hover:active,
|
||||
.datetimepicker table tr td.today.active,
|
||||
.datetimepicker table tr td.today:hover.active,
|
||||
.datetimepicker table tr td.today.disabled.active,
|
||||
.datetimepicker table tr td.today.disabled:hover.active {
|
||||
background-color: #fbf069 \9;
|
||||
}
|
||||
.datetimepicker table tr td.active,
|
||||
.datetimepicker table tr td.active:hover,
|
||||
.datetimepicker table tr td.active.disabled,
|
||||
.datetimepicker table tr td.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datetimepicker table tr td.active:hover,
|
||||
.datetimepicker table tr td.active:hover:hover,
|
||||
.datetimepicker table tr td.active.disabled:hover,
|
||||
.datetimepicker table tr td.active.disabled:hover:hover,
|
||||
.datetimepicker table tr td.active:active,
|
||||
.datetimepicker table tr td.active:hover:active,
|
||||
.datetimepicker table tr td.active.disabled:active,
|
||||
.datetimepicker table tr td.active.disabled:hover:active,
|
||||
.datetimepicker table tr td.active.active,
|
||||
.datetimepicker table tr td.active:hover.active,
|
||||
.datetimepicker table tr td.active.disabled.active,
|
||||
.datetimepicker table tr td.active.disabled:hover.active,
|
||||
.datetimepicker table tr td.active.disabled,
|
||||
.datetimepicker table tr td.active:hover.disabled,
|
||||
.datetimepicker table tr td.active.disabled.disabled,
|
||||
.datetimepicker table tr td.active.disabled:hover.disabled,
|
||||
.datetimepicker table tr td.active[disabled],
|
||||
.datetimepicker table tr td.active:hover[disabled],
|
||||
.datetimepicker table tr td.active.disabled[disabled],
|
||||
.datetimepicker table tr td.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datetimepicker table tr td.active:active,
|
||||
.datetimepicker table tr td.active:hover:active,
|
||||
.datetimepicker table tr td.active.disabled:active,
|
||||
.datetimepicker table tr td.active.disabled:hover:active,
|
||||
.datetimepicker table tr td.active.active,
|
||||
.datetimepicker table tr td.active:hover.active,
|
||||
.datetimepicker table tr td.active.disabled.active,
|
||||
.datetimepicker table tr td.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours table tr td span.hour_am,
|
||||
.datetimepicker .datetimepicker-hours table tr td span.hour_pm {
|
||||
width: 14.6%;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours fieldset legend,
|
||||
.datetimepicker .datetimepicker-minutes fieldset legend {
|
||||
margin-bottom: inherit;
|
||||
line-height: 30px;
|
||||
}
|
||||
.datetimepicker table tr td span.disabled,
|
||||
.datetimepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datetimepicker table tr td span.active,
|
||||
.datetimepicker table tr td span.active:hover,
|
||||
.datetimepicker table tr td span.active.disabled,
|
||||
.datetimepicker table tr td span.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datetimepicker table tr td span.active:hover,
|
||||
.datetimepicker table tr td span.active:hover:hover,
|
||||
.datetimepicker table tr td span.active.disabled:hover,
|
||||
.datetimepicker table tr td span.active.disabled:hover:hover,
|
||||
.datetimepicker table tr td span.active:active,
|
||||
.datetimepicker table tr td span.active:hover:active,
|
||||
.datetimepicker table tr td span.active.disabled:active,
|
||||
.datetimepicker table tr td span.active.disabled:hover:active,
|
||||
.datetimepicker table tr td span.active.active,
|
||||
.datetimepicker table tr td span.active:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled.active,
|
||||
.datetimepicker table tr td span.active.disabled:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled,
|
||||
.datetimepicker table tr td span.active:hover.disabled,
|
||||
.datetimepicker table tr td span.active.disabled.disabled,
|
||||
.datetimepicker table tr td span.active.disabled:hover.disabled,
|
||||
.datetimepicker table tr td span.active[disabled],
|
||||
.datetimepicker table tr td span.active:hover[disabled],
|
||||
.datetimepicker table tr td span.active.disabled[disabled],
|
||||
.datetimepicker table tr td span.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datetimepicker table tr td span.active:active,
|
||||
.datetimepicker table tr td span.active:hover:active,
|
||||
.datetimepicker table tr td span.active.disabled:active,
|
||||
.datetimepicker table tr td span.active.disabled:hover:active,
|
||||
.datetimepicker table tr td span.active.active,
|
||||
.datetimepicker table tr td span.active:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled.active,
|
||||
.datetimepicker table tr td span.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datetimepicker thead tr:first-child th,
|
||||
.datetimepicker tfoot tr:first-child th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker thead tr:first-child th:hover,
|
||||
.datetimepicker tfoot tr:first-child th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.input-append.date .add-on i,
|
||||
.input-prepend.date .add-on i {
|
||||
cursor: pointer;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
|
||||
6103
wwwroot/BackendScript/assets/bootstrap-datetimepicker/sample/bootstrap/css/bootstrap.css
vendored
Normal file
868
wwwroot/BackendScript/assets/bootstrap-datetimepicker/sample/bootstrap/css/bootstrap.min.css
vendored
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 12 KiB |
2170
wwwroot/BackendScript/assets/bootstrap-datetimepicker/sample/bootstrap/js/bootstrap.js
vendored
Normal file
7
wwwroot/BackendScript/assets/bootstrap-datetimepicker/sample/bootstrap/js/bootstrap.min.js
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<link href="./bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
|
||||
<link href="../css/datetimepicker.css" rel="stylesheet" media="screen">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
<form action="" class="form-horizontal">
|
||||
<fieldset>
|
||||
<legend>Test</legend>
|
||||
<div class="control-group">
|
||||
<label class="control-label">DateTime Picking</label>
|
||||
<div class="controls input-append date form_datetime" data-date="1979-09-16T05:25:07Z" data-date-format="dd MM yyyy - HH:ii p" data-link-field="dtp_input1">
|
||||
<input size="16" type="text" value="" readonly>
|
||||
<span class="add-on"><i class="icon-remove"></i></span>
|
||||
<span class="add-on"><i class="icon-th"></i></span>
|
||||
</div>
|
||||
<input type="hidden" id="dtp_input1" value="" /><br/>
|
||||
</div>
|
||||
<!--div class="control-group">
|
||||
<label class="control-label">Date Picking</label>
|
||||
<div class="controls input-append date form_date" data-date="" data-date-format="dd MM yyyy" data-link-field="dtp_input2" data-link-format="yyyy-mm-dd">
|
||||
<input size="16" type="text" value="" readonly>
|
||||
<span class="add-on"><i class="icon-remove"></i></span>
|
||||
<span class="add-on"><i class="icon-th"></i></span>
|
||||
</div>
|
||||
<input type="hidden" id="dtp_input2" value="" /><br/>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">Time Picking</label>
|
||||
<div class="controls input-append date form_time" data-date="" data-date-format="hh:ii" data-link-field="dtp_input3" data-link-format="hh:ii">
|
||||
<input size="16" type="text" value="" readonly>
|
||||
<span class="add-on"><i class="icon-remove"></i></span>
|
||||
<span class="add-on"><i class="icon-th"></i></span>
|
||||
</div>
|
||||
<input type="hidden" id="dtp_input3" value="" /><br/>
|
||||
</div-->
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="./jquery/jquery-1.8.3.min.js" charset="UTF-8"></script>
|
||||
<script type="text/javascript" src="./bootstrap/js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="../js/bootstrap-datetimepicker.js" charset="UTF-8"></script>
|
||||
<script type="text/javascript" src="../js/locales/bootstrap-datetimepicker.fr.js" charset="UTF-8"></script>
|
||||
<script type="text/javascript">
|
||||
$('.form_datetime').datetimepicker({
|
||||
//language: 'fr',
|
||||
weekStart: 1,
|
||||
todayBtn: 1,
|
||||
autoclose: 1,
|
||||
todayHighlight: 1,
|
||||
startView: 2,
|
||||
forceParse: 0,
|
||||
showMeridian: 1
|
||||
});
|
||||
/*$('.form_date').datetimepicker({
|
||||
language: 'fr',
|
||||
weekStart: 1,
|
||||
todayBtn: 1,
|
||||
autoclose: 1,
|
||||
todayHighlight: 1,
|
||||
startView: 2,
|
||||
minView: 2,
|
||||
forceParse: 0
|
||||
});
|
||||
$('.form_time').datetimepicker({
|
||||
language: 'fr',
|
||||
weekStart: 1,
|
||||
todayBtn: 1,
|
||||
autoclose: 1,
|
||||
todayHighlight: 1,
|
||||
startView: 1,
|
||||
minView: 0,
|
||||
maxView: 1,
|
||||
forceParse: 0
|
||||
});*/
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
2
wwwroot/BackendScript/assets/bootstrap-datetimepicker/sample/jquery/jquery-1.8.3.min.js
vendored
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
@@ -0,0 +1,55 @@
|
||||
Unit tests, written with [QUnit](http://docs.jquery.com/QUnit), are used to
|
||||
expose bugs for squashing, prevent bugs from respawning, and suppress new
|
||||
bugs when adding new features and making changes.
|
||||
|
||||
# Running the tests
|
||||
|
||||
The simplest way to run the tests is to open `tests/tests.html` in your browser.
|
||||
The test suites will automatically run themselves and present their results.
|
||||
|
||||
To run the tests from the command line, download and install
|
||||
[PhantomJS](http://phantomjs.org/), and run `run-qunit.js` with it:
|
||||
|
||||
$ cd tests/
|
||||
$ phantomjs run-qunit.js tests.html
|
||||
|
||||
Failed tests and their failed assertions will be printed to the console. A
|
||||
results summary will be printed at the end.
|
||||
|
||||
To generate coverage statistics, use [JSCoverage](http://siliconforks.com/jscoverage/)
|
||||
to instrument the js files:
|
||||
|
||||
$ cd tests/
|
||||
$ jscoverage ../js/ ../instrumented/
|
||||
$ phantomjs run-qunit.js tests.html
|
||||
|
||||
Coverage percentage will be included in the output summary, and a highlighted
|
||||
line-by-line html file will be generated.
|
||||
|
||||
# Shout-out
|
||||
|
||||
Thanks to Rod @ While One Fork for the
|
||||
[CIS guide](http://whileonefork.blogspot.com/2011/10/integrating-javascript-tests-into-cli.html)
|
||||
on putting the above together.
|
||||
|
||||
# Adding tests
|
||||
|
||||
Tests go in js files in the `tests/suites/` directory tree. QUnit organizes
|
||||
tests into suites called "modules"; there is one module per js file. If the
|
||||
tests you are adding do not fit into an existing module, create a new one at
|
||||
`tests/suites/<new module>.js`, where `<new module>` is a broad yet
|
||||
descriptive name for the suite. If tests have many year-specific cases (ie,
|
||||
behave differently in leap years vs normal years, or have specific buggy
|
||||
behavior in a certain year), create the module in a new directory,
|
||||
`tests/suites/<new module>/<year>.js`, where `<new module>` is the decriptive
|
||||
name and `<year>` is the four-digit year the tests pertain to.
|
||||
|
||||
In order for new tests to be run, they must be imported into `tests/tests.html`.
|
||||
Find the script includes headed by the html comment `<!-- Test suites -->`, and
|
||||
add a new one to the list which includes the new js files.
|
||||
|
||||
# Can I use this?
|
||||
|
||||
By all means, please do! Just note that I stopped working on this structure
|
||||
once it fit my needs, there's no real support for it, and it may change in the
|
||||
future. Otherwise, have at it.
|
||||
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
.code {
|
||||
white-space: pre-wrap;
|
||||
font-family: monospace;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.miss {
|
||||
background-color: #FF0000;
|
||||
}
|
||||
|
||||
.hit, .undef {
|
||||
background-color: #94FF7C;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
COLORIZED_LINE_HTML
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
(function(){
|
||||
//we want this at global scope so outside callers can find it. In a more realistic implementation we
|
||||
//should probably put it in a namespace.
|
||||
window.getCoverageByLine = function(silent) {
|
||||
var key = null;
|
||||
var lines = null;
|
||||
var source = null;
|
||||
//look for code coverage data
|
||||
if (typeof window._$jscoverage === 'object') {
|
||||
for (key in _$jscoverage) {}
|
||||
lines = _$jscoverage[key];
|
||||
}
|
||||
|
||||
if (!lines && !silent) {
|
||||
console.log('code coverage data is NOT available');
|
||||
}
|
||||
|
||||
return { 'key': key, 'lines': lines };
|
||||
};
|
||||
|
||||
QUnit.done = function(t) {
|
||||
var cvgInfo = getCoverageByLine(true);
|
||||
if (!!cvgInfo.key) {
|
||||
var testableLines = 0;
|
||||
var testedLines = 0;
|
||||
var untestableLines = 0;
|
||||
for (lineIdx in cvgInfo.lines) {
|
||||
var cvg = cvgInfo.lines[lineIdx];
|
||||
if (typeof cvg === 'number') {
|
||||
testableLines += 1;
|
||||
if (cvg > 0) {
|
||||
testedLines += 1;
|
||||
}
|
||||
} else {
|
||||
untestableLines += 1;
|
||||
}
|
||||
}
|
||||
var coverage = '' + Math.floor(100 * testedLines / testableLines) + '%';
|
||||
|
||||
var result = document.getElementById('qunit-testresult');
|
||||
if (result != null) {
|
||||
result.innerHTML = result.innerHTML + ' ' + coverage + ' test coverage of ' + cvgInfo.key;
|
||||
} else {
|
||||
console.log('can\'t find test-result element to update');
|
||||
}
|
||||
}
|
||||
};
|
||||
}());
|
||||
4
wwwroot/BackendScript/assets/bootstrap-datetimepicker/tests/assets/jquery-1.7.1.min.js
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
;(function(){
|
||||
|
||||
window.patch_date = function patch(f){
|
||||
var NativeDate = window.Date;
|
||||
var date = function date(y,m,d,h,i,s,j){
|
||||
switch(arguments.length){
|
||||
case 0: return date.now ? new NativeDate(date.now) : new NativeDate();
|
||||
case 1: return new NativeDate(y);
|
||||
case 2: return new NativeDate(y,m);
|
||||
case 3: return new NativeDate(y,m,d);
|
||||
case 4: return new NativeDate(y,m,d,h);
|
||||
case 5: return new NativeDate(y,m,d,h,i);
|
||||
case 6: return new NativeDate(y,m,d,h,i,s);
|
||||
case 7: return new NativeDate(y,y,m,d,h,i,s,j);
|
||||
}
|
||||
};
|
||||
date.UTC = NativeDate.UTC;
|
||||
return function(){
|
||||
Array.prototype.push.call(arguments, date);
|
||||
window.Date = date;
|
||||
res = f.apply(this, arguments);
|
||||
window.Date = NativeDate;
|
||||
}
|
||||
}
|
||||
|
||||
}());
|
||||
@@ -0,0 +1,29 @@
|
||||
// Dummy logging calls (ie, if tests are run in IE)
|
||||
window.console = window.console || {};
|
||||
window.console.log = window.console.log || function(){};
|
||||
window.console.debug = window.console.debug || function(){};
|
||||
window.console.info = window.console.info || function(){};
|
||||
window.console.warn = window.console.warn || function(){};
|
||||
window.console.error = window.console.error || function(){};
|
||||
|
||||
(function() {
|
||||
var modName, testName;
|
||||
|
||||
//arg: { name }
|
||||
QUnit.testStart = function(t) {
|
||||
modName = t.module;
|
||||
testName = t.name;
|
||||
};
|
||||
|
||||
//arg: { name, failed, passed, total }
|
||||
QUnit.testDone = function(t) {
|
||||
if (t.failed)
|
||||
console.log('Test "' + t.module + ': ' + t.name + '" completed: ' + (0 === t.failed ? 'pass' : 'FAIL') + '\n')
|
||||
};
|
||||
|
||||
//{ result, actual, expected, message }
|
||||
QUnit.log = function(t) {
|
||||
if (!t.result)
|
||||
console.log('Test "' + modName + ': ' + testName + '" assertion failed. Expected <' + t.expected + '> Actual <' + t.actual + '>' + (t.message ? ': \'' + t.message + '\'' : ''));
|
||||
};
|
||||
}());
|
||||
@@ -0,0 +1,235 @@
|
||||
/**
|
||||
* QUnit v1.5.0 - A JavaScript Unit Testing Framework
|
||||
*
|
||||
* http://docs.jquery.com/QUnit
|
||||
*
|
||||
* Copyright (c) 2012 John Resig, Jörn Zaefferer
|
||||
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
||||
* or GPL (GPL-LICENSE.txt) licenses.
|
||||
*/
|
||||
|
||||
/** Font Family and Sizes */
|
||||
|
||||
#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
|
||||
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
|
||||
#qunit-tests { font-size: smaller; }
|
||||
|
||||
|
||||
/** Resets */
|
||||
|
||||
#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
/** Header */
|
||||
|
||||
#qunit-header {
|
||||
padding: 0.5em 0 0.5em 1em;
|
||||
|
||||
color: #8699a4;
|
||||
background-color: #0d3349;
|
||||
|
||||
font-size: 1.5em;
|
||||
line-height: 1em;
|
||||
font-weight: normal;
|
||||
|
||||
border-radius: 15px 15px 0 0;
|
||||
-moz-border-radius: 15px 15px 0 0;
|
||||
-webkit-border-top-right-radius: 15px;
|
||||
-webkit-border-top-left-radius: 15px;
|
||||
}
|
||||
|
||||
#qunit-header a {
|
||||
text-decoration: none;
|
||||
color: #c2ccd1;
|
||||
}
|
||||
|
||||
#qunit-header a:hover,
|
||||
#qunit-header a:focus {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#qunit-header label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#qunit-banner {
|
||||
height: 5px;
|
||||
}
|
||||
|
||||
#qunit-testrunner-toolbar {
|
||||
padding: 0.5em 0 0.5em 2em;
|
||||
color: #5E740B;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
#qunit-userAgent {
|
||||
padding: 0.5em 0 0.5em 2.5em;
|
||||
background-color: #2b81af;
|
||||
color: #fff;
|
||||
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
|
||||
}
|
||||
|
||||
|
||||
/** Tests: Pass/Fail */
|
||||
|
||||
#qunit-tests {
|
||||
list-style-position: inside;
|
||||
}
|
||||
|
||||
#qunit-tests li {
|
||||
padding: 0.4em 0.5em 0.4em 2.5em;
|
||||
border-bottom: 1px solid #fff;
|
||||
list-style-position: inside;
|
||||
}
|
||||
|
||||
#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#qunit-tests li strong {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#qunit-tests li a {
|
||||
padding: 0.5em;
|
||||
color: #c2ccd1;
|
||||
text-decoration: none;
|
||||
}
|
||||
#qunit-tests li a:hover,
|
||||
#qunit-tests li a:focus {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#qunit-tests ol {
|
||||
margin-top: 0.5em;
|
||||
padding: 0.5em;
|
||||
|
||||
background-color: #fff;
|
||||
|
||||
border-radius: 15px;
|
||||
-moz-border-radius: 15px;
|
||||
-webkit-border-radius: 15px;
|
||||
|
||||
box-shadow: inset 0px 2px 13px #999;
|
||||
-moz-box-shadow: inset 0px 2px 13px #999;
|
||||
-webkit-box-shadow: inset 0px 2px 13px #999;
|
||||
}
|
||||
|
||||
#qunit-tests table {
|
||||
border-collapse: collapse;
|
||||
margin-top: .2em;
|
||||
}
|
||||
|
||||
#qunit-tests th {
|
||||
text-align: right;
|
||||
vertical-align: top;
|
||||
padding: 0 .5em 0 0;
|
||||
}
|
||||
|
||||
#qunit-tests td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
#qunit-tests pre {
|
||||
margin: 0;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
#qunit-tests del {
|
||||
background-color: #e0f2be;
|
||||
color: #374e0c;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#qunit-tests ins {
|
||||
background-color: #ffcaca;
|
||||
color: #500;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/*** Test Counts */
|
||||
|
||||
#qunit-tests b.counts { color: black; }
|
||||
#qunit-tests b.passed { color: #5E740B; }
|
||||
#qunit-tests b.failed { color: #710909; }
|
||||
|
||||
#qunit-tests li li {
|
||||
margin: 0.5em;
|
||||
padding: 0.4em 0.5em 0.4em 0.5em;
|
||||
background-color: #fff;
|
||||
border-bottom: none;
|
||||
list-style-position: inside;
|
||||
}
|
||||
|
||||
/*** Passing Styles */
|
||||
|
||||
#qunit-tests li li.pass {
|
||||
color: #5E740B;
|
||||
background-color: #fff;
|
||||
border-left: 26px solid #C6E746;
|
||||
}
|
||||
|
||||
#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
|
||||
#qunit-tests .pass .test-name { color: #366097; }
|
||||
|
||||
#qunit-tests .pass .test-actual,
|
||||
#qunit-tests .pass .test-expected { color: #999999; }
|
||||
|
||||
#qunit-banner.qunit-pass { background-color: #C6E746; }
|
||||
|
||||
/*** Failing Styles */
|
||||
|
||||
#qunit-tests li li.fail {
|
||||
color: #710909;
|
||||
background-color: #fff;
|
||||
border-left: 26px solid #EE5757;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
#qunit-tests > li:last-child {
|
||||
border-radius: 0 0 15px 15px;
|
||||
-moz-border-radius: 0 0 15px 15px;
|
||||
-webkit-border-bottom-right-radius: 15px;
|
||||
-webkit-border-bottom-left-radius: 15px;
|
||||
}
|
||||
|
||||
#qunit-tests .fail { color: #000000; background-color: #EE5757; }
|
||||
#qunit-tests .fail .test-name,
|
||||
#qunit-tests .fail .module-name { color: #000000; }
|
||||
|
||||
#qunit-tests .fail .test-actual { color: #EE5757; }
|
||||
#qunit-tests .fail .test-expected { color: green; }
|
||||
|
||||
#qunit-banner.qunit-fail { background-color: #EE5757; }
|
||||
|
||||
|
||||
/** Result */
|
||||
|
||||
#qunit-testresult {
|
||||
padding: 0.5em 0.5em 0.5em 2.5em;
|
||||
|
||||
color: #2b81af;
|
||||
background-color: #D2E0E6;
|
||||
|
||||
border-bottom: 1px solid white;
|
||||
}
|
||||
#qunit-testresult .module-name {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/** Fixture */
|
||||
|
||||
#qunit-fixture {
|
||||
position: absolute;
|
||||
top: -10000px;
|
||||
left: -10000px;
|
||||
width: 1000px;
|
||||
height: 1000px;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
function UTCDate(){
|
||||
return new Date(Date.UTC.apply(Date, arguments));
|
||||
}
|
||||
|
||||
|
||||
function format_date(date){
|
||||
var y = date.getUTCFullYear(),
|
||||
m = date.getUTCMonth() + 1,
|
||||
d = date.getUTCDate(),
|
||||
h = date.getUTCHours(),
|
||||
i = date.getUTCMinutes(),
|
||||
s = date.getUTCSeconds(),
|
||||
l = date.getUTCMilliseconds();
|
||||
function z(i){return (i <= 9 ? '0'+i : i);}
|
||||
return y+'-'+z(m)+'-'+z(d)+' '+z(h)+':'+z(i)+':'+z(s)+'.'+z(l);
|
||||
}
|
||||
|
||||
|
||||
function datesEqual(actual, expected, message){
|
||||
QUnit.push(QUnit.equiv(actual, expected), format_date(actual), format_date(expected), message);
|
||||
}
|
||||
@@ -0,0 +1,157 @@
|
||||
var system = require('system');
|
||||
|
||||
/**
|
||||
* Wait until the test condition is true or a timeout occurs. Useful for waiting
|
||||
* on a server response or for a ui change (fadeIn, etc.) to occur.
|
||||
*
|
||||
* @param testFx javascript condition that evaluates to a boolean,
|
||||
* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
|
||||
* as a callback function.
|
||||
* @param onReady what to do when testFx condition is fulfilled,
|
||||
* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
|
||||
* as a callback function.
|
||||
* @param timeOutMillis the max amount of time to wait. If not specified, 3 sec is used.
|
||||
*/
|
||||
function waitFor(testFx, onReady, timeOutMillis) {
|
||||
var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 10001, //< Default Max Timout is 3s
|
||||
start = new Date().getTime(),
|
||||
condition = false,
|
||||
interval = setInterval(function() {
|
||||
if ( (new Date().getTime() - start < maxtimeOutMillis) && !condition ) {
|
||||
// If not time-out yet and condition not yet fulfilled
|
||||
condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()); //< defensive code
|
||||
} else {
|
||||
if(!condition) {
|
||||
// If condition still not fulfilled (timeout but condition is 'false')
|
||||
console.log("'waitFor()' timeout");
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
// Condition fulfilled (timeout and/or condition is 'true')
|
||||
//console.log("'waitFor()' finished in " + (new Date().getTime() - start) + "ms.");
|
||||
typeof(onReady) === "string" ? eval(onReady) : onReady(); //< Do what it's supposed to do once the condition is fulfilled
|
||||
clearInterval(interval); //< Stop this interval
|
||||
}
|
||||
}
|
||||
}, 100); //< repeat check every 100ms
|
||||
};
|
||||
|
||||
if (system.args.length !== 2) {
|
||||
console.log('Usage: run-qunit.js URL');
|
||||
phantom.exit(1);
|
||||
}
|
||||
|
||||
var fs = require('fs');
|
||||
var page = require('webpage').create();
|
||||
|
||||
// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this")
|
||||
page.onConsoleMessage = function(msg) {
|
||||
console.log(msg);
|
||||
};
|
||||
page.onError = function (msg, trace) {
|
||||
console.log(msg);
|
||||
trace.forEach(function(item) {
|
||||
console.log(' ', item.file, ':', item.line);
|
||||
})
|
||||
}
|
||||
|
||||
var _openPath = phantom.args[0].replace(/^.*(\\|\/)/, '');
|
||||
var openPath = _openPath;
|
||||
var origdir = '../js/';
|
||||
var basedir = '../instrumented/';
|
||||
var coverageBase = fs.read('_coverage.html');
|
||||
|
||||
if (fs.exists(basedir)){
|
||||
var script = /<script.*><\/script>/g,
|
||||
src = /src=(["'])(.*?)\1/,
|
||||
contents = fs.read(openPath),
|
||||
_contents = contents,
|
||||
srcs = [],
|
||||
s;
|
||||
while (script.exec(contents)){
|
||||
s = src.exec(RegExp.lastMatch)[2];
|
||||
if (s && s.indexOf(origdir) != -1)
|
||||
_contents = _contents.replace(s, s.replace(origdir, basedir))
|
||||
}
|
||||
if (_contents != contents){
|
||||
openPath += '.cov.html';
|
||||
fs.write(openPath, _contents);
|
||||
}
|
||||
}
|
||||
|
||||
page.open(openPath, function(status){
|
||||
if (status !== "success") {
|
||||
console.log("Unable to access network");
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
// Inject instrumented sources if they exist
|
||||
if (fs.exists(basedir))
|
||||
for (var i=0; i<srcs.length; i++)
|
||||
page.includeJs(srcs[i]);
|
||||
waitFor(function(){
|
||||
return page.evaluate(function(){
|
||||
var el = document.getElementById('qunit-testresult');
|
||||
if (el && el.innerText.match('completed')) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}, function(){
|
||||
// output colorized code coverage
|
||||
// reach into page context and pull out coverage info. stringify to pass context boundaries.
|
||||
var coverageInfo = JSON.parse(page.evaluate(function() { return JSON.stringify(getCoverageByLine()); }));
|
||||
if (coverageInfo.key){
|
||||
var lineCoverage = coverageInfo.lines;
|
||||
var originalFile = origdir + fs.separator + coverageInfo.key;
|
||||
var source = coverageInfo.source;
|
||||
var fileLines = readFileLines(originalFile);
|
||||
|
||||
var colorized = '';
|
||||
|
||||
for (var idx=0; idx < lineCoverage.length; idx++) {
|
||||
//+1: coverage lines count from 1.
|
||||
var cvg = lineCoverage[idx + 1];
|
||||
var hitmiss = '';
|
||||
if (typeof cvg === 'number') {
|
||||
hitmiss = ' ' + (cvg>0 ? 'hit' : 'miss');
|
||||
} else {
|
||||
hitmiss = ' ' + 'undef';
|
||||
}
|
||||
var htmlLine = fileLines[idx]
|
||||
if (!source)
|
||||
htmlLine = htmlLine.replace('<', '<').replace('>', '>');
|
||||
colorized += '<div class="code' + hitmiss + '">' + htmlLine + '</div>\n';
|
||||
};
|
||||
colorized = coverageBase.replace('COLORIZED_LINE_HTML', colorized);
|
||||
|
||||
fs.write('coverage.html', colorized, 'w');
|
||||
|
||||
console.log('Coverage for ' + coverageInfo.key + ' in coverage.html');
|
||||
}
|
||||
if (_openPath != openPath)
|
||||
fs.remove(openPath);
|
||||
|
||||
var failedNum = page.evaluate(function(){
|
||||
var el = document.getElementById('qunit-testresult');
|
||||
console.log(el.innerText);
|
||||
try {
|
||||
return el.getElementsByClassName('failed')[0].innerHTML;
|
||||
} catch (e) { }
|
||||
return 10000;
|
||||
});
|
||||
phantom.exit((parseInt(failedNum, 10) > 0) ? 1 : 0);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function readFileLines(filename) {
|
||||
var stream = fs.open(filename, 'r');
|
||||
var lines = [];
|
||||
var line;
|
||||
while (!stream.atEnd()) {
|
||||
lines.push(stream.readLine());
|
||||
}
|
||||
stream.close();
|
||||
|
||||
return lines;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
module('Component', {
|
||||
setup: function(){
|
||||
this.component = $('<div class="input-append date" id="datetimepicker">'+
|
||||
'<input size="16" type="text" value="12-02-2012" readonly>'+
|
||||
'<span class="add-on"><i class="icon-th"></i></span>'+
|
||||
'</div>')
|
||||
.appendTo('#qunit-fixture')
|
||||
.datetimepicker({format: "dd-mm-yyyy", viewSelect: 2});
|
||||
this.input = this.component.find('input');
|
||||
this.addon = this.component.find('.add-on');
|
||||
this.dp = this.component.data('datetimepicker')
|
||||
this.picker = this.dp.picker;
|
||||
},
|
||||
teardown: function(){
|
||||
this.picker.remove();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
test('Component gets date/viewDate from input value', function(){
|
||||
datesEqual(this.dp.date, UTCDate(2012, 1, 12));
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 1, 12));
|
||||
});
|
||||
|
||||
test('Activation by component', function(){
|
||||
ok(!this.picker.is(':visible'));
|
||||
this.addon.click();
|
||||
ok(this.picker.is(':visible'));
|
||||
});
|
||||
|
||||
test('simple keyboard nav test', function(){
|
||||
var target;
|
||||
|
||||
// Keyboard nav only works with non-readonly inputs
|
||||
this.input.removeAttr('readonly');
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'February 2012', 'Title is "February 2012"');
|
||||
datesEqual(this.dp.date, UTCDate(2012, 1, 12));
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 1, 12));
|
||||
|
||||
// Focus/open
|
||||
this.addon.click();
|
||||
|
||||
// Navigation: -1 day, left arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 37
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 1, 11));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 1, 11));
|
||||
// Month not changed
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'February 2012', 'Title is "February 2012"');
|
||||
|
||||
// Navigation: +1 month, shift + right arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 39,
|
||||
shiftKey: true
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 11));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 11));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Navigation: -1 year, ctrl + left arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 37,
|
||||
ctrlKey: true
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 11));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 11));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2011', 'Title is "March 2011"');
|
||||
});
|
||||
|
||||
test('setValue', function(){
|
||||
this.dp.date = UTCDate(2012, 2, 13)
|
||||
this.dp.setValue()
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 13));
|
||||
equal(this.input.val(), '13-03-2012');
|
||||
});
|
||||
|
||||
test('update', function(){
|
||||
this.input.val('13-03-2012');
|
||||
this.dp.update()
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 13));
|
||||
});
|
||||
|
||||
test('Navigating to/from decade view', function(){
|
||||
var target;
|
||||
|
||||
this.addon.click();
|
||||
this.input.val('31-03-2012');
|
||||
this.dp.update();
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
ok(target.is(':visible'), 'View switcher is visible');
|
||||
|
||||
target.click();
|
||||
ok(this.picker.find('.datetimepicker-months').is(':visible'), 'Month picker is visible');
|
||||
equal(this.dp.viewMode, 3);
|
||||
// Not modified when switching modes
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
target = this.picker.find('.datetimepicker-months thead th.switch');
|
||||
ok(target.is(':visible'), 'View switcher is visible');
|
||||
|
||||
target.click();
|
||||
ok(this.picker.find('.datetimepicker-years').is(':visible'), 'Year picker is visible');
|
||||
equal(this.dp.viewMode, 4);
|
||||
// Not modified when switching modes
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
// Change years to test internal state changes
|
||||
target = this.picker.find('.datetimepicker-years tbody span:contains(2011)');
|
||||
target.click();
|
||||
equal(this.dp.viewMode, 3);
|
||||
// Only viewDate modified
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 1));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
target = this.picker.find('.datetimepicker-months tbody span:contains(Apr)');
|
||||
target.click();
|
||||
equal(this.dp.viewMode, 2);
|
||||
// Only viewDate modified
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 3, 1));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
});
|
||||
|
||||
test('Selecting date resets viewDate and date', function(){
|
||||
var target;
|
||||
|
||||
this.addon.click();
|
||||
this.input.val('31-03-2012');
|
||||
this.dp.update();
|
||||
|
||||
// Rendered correctly
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days tbody td:first');
|
||||
equal(target.text(), '26'); // Should be Feb 26
|
||||
|
||||
// Updated internally on click
|
||||
target.click();
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 1, 26))
|
||||
datesEqual(this.dp.date, UTCDate(2012, 1, 26))
|
||||
|
||||
// Re-rendered on click
|
||||
target = this.picker.find('.datetimepicker-days tbody td:first');
|
||||
equal(target.text(), '29'); // Should be Jan 29
|
||||
});
|
||||
@@ -0,0 +1,80 @@
|
||||
module('Events', {
|
||||
setup: function(){
|
||||
this.input = $('<input type="text" value="31-03-2011">')
|
||||
.appendTo('#qunit-fixture')
|
||||
.datetimepicker({format: "dd-mm-yyyy"})
|
||||
.focus(); // Activate for visibility checks
|
||||
this.dp = this.input.data('datetimepicker')
|
||||
this.picker = this.dp.picker;
|
||||
},
|
||||
teardown: function(){
|
||||
this.picker.remove();
|
||||
}
|
||||
});
|
||||
|
||||
test('Selecting a year from decade view triggers pickYear', function(){
|
||||
var target,
|
||||
triggered = 0;
|
||||
|
||||
this.input.on('changeYear', function(){
|
||||
triggered++;
|
||||
});
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
ok(target.is(':visible'), 'View switcher is visible');
|
||||
|
||||
target.click();
|
||||
ok(this.picker.find('.datetimepicker-months').is(':visible'), 'Month picker is visible');
|
||||
equal(this.dp.viewMode, 3);
|
||||
// Not modified when switching modes
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 31));
|
||||
|
||||
target = this.picker.find('.datetimepicker-months thead th.switch');
|
||||
ok(target.is(':visible'), 'View switcher is visible');
|
||||
|
||||
target.click();
|
||||
ok(this.picker.find('.datetimepicker-years').is(':visible'), 'Year picker is visible');
|
||||
equal(this.dp.viewMode, 4);
|
||||
// Not modified when switching modes
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 31));
|
||||
|
||||
// Change years to test internal state changes
|
||||
target = this.picker.find('.datetimepicker-years tbody span:contains(2010)');
|
||||
target.click();
|
||||
equal(this.dp.viewMode, 3);
|
||||
// Only viewDate modified
|
||||
datesEqual(this.dp.viewDate, UTCDate(2010, 2, 1));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 31));
|
||||
equal(triggered, 1);
|
||||
});
|
||||
|
||||
test('Selecting a month from year view triggers pickMonth', function(){
|
||||
var target,
|
||||
triggered = 0;
|
||||
|
||||
this.input.on('changeMonth', function(){
|
||||
triggered++;
|
||||
});
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
ok(target.is(':visible'), 'View switcher is visible');
|
||||
|
||||
target.click();
|
||||
ok(this.picker.find('.datetimepicker-months').is(':visible'), 'Month picker is visible');
|
||||
equal(this.dp.viewMode, 3);
|
||||
// Not modified when switching modes
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 31));
|
||||
|
||||
target = this.picker.find('.datetimepicker-months tbody span:contains(Apr)');
|
||||
target.click();
|
||||
equal(this.dp.viewMode, 2);
|
||||
// Only viewDate modified
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 3, 1));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 31));
|
||||
equal(triggered, 1);
|
||||
});
|
||||
@@ -0,0 +1,210 @@
|
||||
module('Formats', {
|
||||
setup: function(){
|
||||
this.input = $('<input type="text">').appendTo('#qunit-fixture');
|
||||
this.date = UTCDate(2012, 2, 15, 0, 0, 0, 0); // March 15, 2012
|
||||
},
|
||||
teardown: function(){
|
||||
this.input.data('datetimepicker').picker.remove();
|
||||
}
|
||||
});
|
||||
|
||||
test('d: Day of month, no leading zero.', function(){
|
||||
this.input
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({format: 'yyyy-mm-d'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val().split('-')[2], '5');
|
||||
});
|
||||
|
||||
test('dd: Day of month, leading zero.', function(){
|
||||
this.input
|
||||
.val('2012-03-5')
|
||||
.datetimepicker({format: 'yyyy-mm-dd'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val().split('-')[2], '05');
|
||||
});
|
||||
|
||||
test('m: Month, no leading zero.', function(){
|
||||
this.input
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({format: 'yyyy-m-dd'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val().split('-')[1], '3');
|
||||
});
|
||||
|
||||
test('mm: Month, leading zero.', function(){
|
||||
this.input
|
||||
.val('2012-3-5')
|
||||
.datetimepicker({format: 'yyyy-mm-dd'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val().split('-')[1], '03');
|
||||
});
|
||||
|
||||
test('M: Month shortname.', function(){
|
||||
this.input
|
||||
.val('2012-Mar-05')
|
||||
.datetimepicker({format: 'yyyy-M-dd'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val().split('-')[1], 'Mar');
|
||||
});
|
||||
|
||||
test('MM: Month full name.', function(){
|
||||
this.input
|
||||
.val('2012-March-5')
|
||||
.datetimepicker({format: 'yyyy-MM-dd'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val().split('-')[1], 'March');
|
||||
});
|
||||
|
||||
test('yy: Year, two-digit.', function(){
|
||||
this.input
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({format: 'yy-mm-dd'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val().split('-')[0], '12');
|
||||
});
|
||||
|
||||
test('yyyy: Year, four-digit.', function(){
|
||||
this.input
|
||||
.val('2012-03-5')
|
||||
.datetimepicker({format: 'yyyy-mm-dd'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val().split('-')[0], '2012');
|
||||
});
|
||||
|
||||
test('dd-mm-yyyy: Regression: Prevent potential month overflow in small-to-large formats (Mar 31, 2012 -> Mar 01, 2012)', function(){
|
||||
this.input
|
||||
.val('31-03-2012')
|
||||
.datetimepicker({format: 'dd-mm-yyyy'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '31-03-2012');
|
||||
});
|
||||
|
||||
test('dd-mm-yyyy: Leap day', function(){
|
||||
this.input
|
||||
.val('29-02-2012')
|
||||
.datetimepicker({format: 'dd-mm-yyyy'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '29-02-2012');
|
||||
});
|
||||
|
||||
test('yyyy-mm-dd: Alternative format', function(){
|
||||
this.input
|
||||
.val('2012-02-12')
|
||||
.datetimepicker({format: 'yyyy-mm-dd'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '2012-02-12');
|
||||
});
|
||||
|
||||
test('yyyy-MM-dd: Regression: Infinite loop when numbers used for month', function(){
|
||||
this.input
|
||||
.val('2012-02-12')
|
||||
.datetimepicker({format: 'yyyy-MM-dd'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '2012-February-12');
|
||||
});
|
||||
|
||||
test('+1d: Tomorrow', patch_date(function(Date){
|
||||
Date.now = UTCDate(2012, 2, 15);
|
||||
this.input
|
||||
.val('+1d')
|
||||
.datetimepicker({format: 'dd-mm-yyyy'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '16-03-2012');
|
||||
}));
|
||||
|
||||
test('-1d: Yesterday', patch_date(function(Date){
|
||||
Date.now = UTCDate(2012, 2, 15);
|
||||
this.input
|
||||
.val('-1d')
|
||||
.datetimepicker({format: 'dd-mm-yyyy'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '14-03-2012');
|
||||
}));
|
||||
|
||||
test('+1w: Next week', patch_date(function(Date){
|
||||
Date.now = UTCDate(2012, 2, 15);
|
||||
this.input
|
||||
.val('+1w')
|
||||
.datetimepicker({format: 'dd-mm-yyyy'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '22-03-2012');
|
||||
}));
|
||||
|
||||
test('-1w: Last week', patch_date(function(Date){
|
||||
Date.now = UTCDate(2012, 2, 15);
|
||||
this.input
|
||||
.val('-1w')
|
||||
.datetimepicker({format: 'dd-mm-yyyy'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '08-03-2012');
|
||||
}));
|
||||
|
||||
test('+1m: Next month', patch_date(function(Date){
|
||||
Date.now = UTCDate(2012, 2, 15);
|
||||
this.input
|
||||
.val('+1m')
|
||||
.datetimepicker({format: 'dd-mm-yyyy'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '15-04-2012');
|
||||
}));
|
||||
|
||||
test('-1m: Last month', patch_date(function(Date){
|
||||
Date.now = UTCDate(2012, 2, 15);
|
||||
this.input
|
||||
.val('-1m')
|
||||
.datetimepicker({format: 'dd-mm-yyyy'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '15-02-2012');
|
||||
}));
|
||||
|
||||
test('+1y: Next year', patch_date(function(Date){
|
||||
Date.now = UTCDate(2012, 2, 15);
|
||||
this.input
|
||||
.val('+1y')
|
||||
.datetimepicker({format: 'dd-mm-yyyy'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '15-03-2013');
|
||||
}));
|
||||
|
||||
test('-1y: Last year', patch_date(function(Date){
|
||||
Date.now = UTCDate(2012, 2, 15);
|
||||
this.input
|
||||
.val('-1y')
|
||||
.datetimepicker({format: 'dd-mm-yyyy'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '15-03-2011');
|
||||
}));
|
||||
|
||||
test('-1y +2m: Multiformat', patch_date(function(Date){
|
||||
Date.now = UTCDate(2012, 2, 15);
|
||||
this.input
|
||||
.val('-1y +2m')
|
||||
.datetimepicker({format: 'dd-mm-yyyy'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '15-05-2011');
|
||||
}));
|
||||
|
||||
test('Regression: End-of-month bug', patch_date(function(Date){
|
||||
Date.now = UTCDate(2012, 4, 31);
|
||||
this.input
|
||||
.val('29-02-2012')
|
||||
.datetimepicker({format: 'dd-mm-yyyy'})
|
||||
.datetimepicker('setValue');
|
||||
equal(this.input.val(), '29-02-2012');
|
||||
}));
|
||||
|
||||
test('Invalid formats are force-parsed into a valid date on tab', patch_date(function(Date){
|
||||
Date.now = UTCDate(2012, 4, 31);
|
||||
this.input
|
||||
.val('44-44-4444')
|
||||
.datetimepicker({format: 'yyyy-MM-dd'})
|
||||
.focus();
|
||||
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 9
|
||||
});
|
||||
|
||||
equal(this.input.val(), '56-September-30');
|
||||
}));
|
||||
@@ -0,0 +1,28 @@
|
||||
module('Inline', {
|
||||
setup: function(){
|
||||
this.component = $('<div data-date="12-02-2012"></div>')
|
||||
.appendTo('#qunit-fixture')
|
||||
.datetimepicker({format: "dd-mm-yyyy"});
|
||||
this.dp = this.component.data('datetimepicker')
|
||||
this.picker = this.dp.picker;
|
||||
},
|
||||
teardown: function(){
|
||||
this.picker.remove();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
test('Picker gets date/viewDate from data-date attr', function(){
|
||||
datesEqual(this.dp.date, UTCDate(2012, 1, 12));
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 1, 12));
|
||||
});
|
||||
|
||||
|
||||
test('Visible after init', function(){
|
||||
ok(this.picker.is(':visible'));
|
||||
});
|
||||
|
||||
test('update', function(){
|
||||
this.dp.update('13-03-2012')
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 13));
|
||||
});
|
||||
@@ -0,0 +1,86 @@
|
||||
module('Keyboard Navigation 2011', {
|
||||
setup: function(){
|
||||
/*
|
||||
Tests start with picker on March 31, 2011. Fun facts:
|
||||
|
||||
* March 1, 2011 was on a Tuesday
|
||||
* March 31, 2011 was on a Thursday
|
||||
*/
|
||||
this.input = $('<input type="text" value="31-03-2011">')
|
||||
.appendTo('#qunit-fixture')
|
||||
.datetimepicker({format: "dd-mm-yyyy"})
|
||||
.focus(); // Activate for visibility checks
|
||||
this.dp = this.input.data('datetimepicker')
|
||||
this.picker = this.dp.picker;
|
||||
},
|
||||
teardown: function(){
|
||||
this.picker.remove();
|
||||
}
|
||||
});
|
||||
|
||||
test('Regression: by week (up/down arrows); up from Mar 6, 2011 should go to Feb 27, 2011', function(){
|
||||
var target;
|
||||
|
||||
this.input.val('06-03-2011').datetimepicker('update');
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2011', 'Title is "March 2011"');
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 6));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 6));
|
||||
|
||||
// Navigation: -1 week, up arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 38
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 1, 27));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 1, 27));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'February 2011', 'Title is "February 2011"');
|
||||
});
|
||||
|
||||
test('Regression: by day (left/right arrows); left from Mar 1, 2011 should go to Feb 28, 2011', function(){
|
||||
var target;
|
||||
|
||||
this.input.val('01-03-2011').datetimepicker('update');
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2011', 'Title is "March 2011"');
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 1));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 1));
|
||||
|
||||
// Navigation: -1 day left arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 37
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 1, 28));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 1, 28));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'February 2011', 'Title is "February 2011"');
|
||||
});
|
||||
|
||||
test('Regression: by month (shift + left/right arrows); left from Mar 15, 2011 should go to Feb 15, 2011', function(){
|
||||
var target;
|
||||
|
||||
this.input.val('15-03-2011').datetimepicker('update');
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2011', 'Title is "March 2011"');
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 15));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 15));
|
||||
|
||||
// Navigation: -1 month, shift + left arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 37,
|
||||
shiftKey: true
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 1, 15));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 1, 15));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'February 2011', 'Title is "February 2011"');
|
||||
});
|
||||
@@ -0,0 +1,410 @@
|
||||
module('Keyboard Navigation 2012', {
|
||||
setup: function(){
|
||||
/*
|
||||
Tests start with picker on March 31, 2012. Fun facts:
|
||||
|
||||
* February 1, 2012 was on a Wednesday
|
||||
* February 29, 2012 was on a Wednesday
|
||||
* March 1, 2012 was on a Thursday
|
||||
* March 31, 2012 was on a Saturday
|
||||
*/
|
||||
this.input = $('<input type="text" value="31-03-2012">')
|
||||
.appendTo('#qunit-fixture')
|
||||
.datetimepicker({format: "dd-mm-yyyy", minView: 2, autoclose: true})
|
||||
.focus(); // Activate for visibility checks
|
||||
this.dp = this.input.data('datetimepicker')
|
||||
this.picker = this.dp.picker;
|
||||
},
|
||||
teardown: function(){
|
||||
this.picker.remove();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
test('by day (right/left arrows)', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Navigation: -1 day, left arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 37
|
||||
});
|
||||
// Both updated on keyboard navigation
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 30));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 30));
|
||||
// Month not changed
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Navigation: +1 day, right arrow key
|
||||
for (var i=0; i<2; i++)
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 39
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 3, 1));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 3, 1));
|
||||
// Month changed: April 1 (this is not a joke!)
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'April 2012', 'Title is "April 2012"');
|
||||
});
|
||||
|
||||
test('by week (up/down arrows)', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Navigation: -1 week, up arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 38
|
||||
});
|
||||
// Both updated on keyboard navigation
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 24));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 24));
|
||||
// Month not changed
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Navigation: +1 week, down arrow key
|
||||
for (var i=0; i<2; i++)
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 40
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 3, 7));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 3, 7));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'April 2012', 'Title is "April 2012"');
|
||||
});
|
||||
|
||||
test('by month, v1 (shift + left/right arrows)', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Navigation: -1 month, shift + left arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 37,
|
||||
shiftKey: true
|
||||
});
|
||||
// Both updated on keyboard navigation, w/ graceful date ends
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 1, 29));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 1, 29));
|
||||
// Month not changed
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'February 2012', 'Title is "February 2012"');
|
||||
|
||||
// Navigation: +1 month, shift + right arrow key
|
||||
for (var i=0; i<2; i++)
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 39,
|
||||
shiftKey: true
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 3, 29));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 3, 29));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'April 2012', 'Title is "April 2012"');
|
||||
});
|
||||
|
||||
test('by month, v2 (shift + up/down arrows)', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Navigation: -1 month, shift + up arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 38,
|
||||
shiftKey: true
|
||||
});
|
||||
// Both updated on keyboard navigation, w/ graceful date ends
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 1, 29));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 1, 29));
|
||||
// Month not changed
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'February 2012', 'Title is "February 2012"');
|
||||
|
||||
// Navigation: +1 month, shift + down arrow key
|
||||
for (var i=0; i<2; i++)
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 40,
|
||||
shiftKey: true
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 3, 29));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 3, 29));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'April 2012', 'Title is "April 2012"');
|
||||
});
|
||||
|
||||
test('by year, v1 (ctrl + left/right arrows)', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Navigation: -1 year, ctrl + left arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 37,
|
||||
ctrlKey: true
|
||||
});
|
||||
// Both updated on keyboard navigation
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 31));
|
||||
// Month not changed
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2011', 'Title is "March 2011"');
|
||||
|
||||
// Navigation: +1 year, ctrl + right arrow key
|
||||
for (var i=0; i<2; i++)
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 39,
|
||||
ctrlKey: true
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2013, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2013, 2, 31));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2013', 'Title is "March 2013"');
|
||||
});
|
||||
|
||||
test('by year, v2 (ctrl + up/down arrows)', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Navigation: -1 year, ctrl + up arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 38,
|
||||
ctrlKey: true
|
||||
});
|
||||
// Both updated on keyboard navigation
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 31));
|
||||
// Month not changed
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2011', 'Title is "March 2011"');
|
||||
|
||||
// Navigation: +1 year, ctrl + down arrow key
|
||||
for (var i=0; i<2; i++)
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 40,
|
||||
ctrlKey: true
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2013, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2013, 2, 31));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2013', 'Title is "March 2013"');
|
||||
});
|
||||
|
||||
test('by year, v3 (ctrl + shift + left/right arrows)', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Navigation: -1 year, ctrl + left arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 37,
|
||||
ctrlKey: true,
|
||||
shiftKey: true
|
||||
});
|
||||
// Both updated on keyboard navigation
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 31));
|
||||
// Month not changed
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2011', 'Title is "March 2011"');
|
||||
|
||||
// Navigation: +1 year, ctrl + right arrow key
|
||||
for (var i=0; i<2; i++)
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 39,
|
||||
ctrlKey: true,
|
||||
shiftKey: true
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2013, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2013, 2, 31));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2013', 'Title is "March 2013"');
|
||||
});
|
||||
|
||||
test('by year, v4 (ctrl + shift + up/down arrows)', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Navigation: -1 year, ctrl + up arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 38,
|
||||
ctrlKey: true,
|
||||
shiftKey: true
|
||||
});
|
||||
// Both updated on keyboard navigation
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 2, 31));
|
||||
// Month not changed
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2011', 'Title is "March 2011"');
|
||||
|
||||
// Navigation: +1 year, ctrl + down arrow key
|
||||
for (var i=0; i<2; i++)
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 40,
|
||||
ctrlKey: true,
|
||||
shiftKey: true
|
||||
});
|
||||
datesEqual(this.dp.viewDate, UTCDate(2013, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2013, 2, 31));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2013', 'Title is "March 2013"');
|
||||
});
|
||||
|
||||
test('by year, from leap day', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
|
||||
this.input.val('29-02-2012').datetimepicker('update');
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 1, 29));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 1, 29));
|
||||
equal(target.text(), 'February 2012', 'Title is "February 2012"');
|
||||
|
||||
// Navigation: -1 year
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 37,
|
||||
ctrlKey: true
|
||||
});
|
||||
// Both updated on keyboard navigation; graceful month-end
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 1, 28));
|
||||
datesEqual(this.dp.date, UTCDate(2011, 1, 28));
|
||||
// Month not changed
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'February 2011', 'Title is "February 2011"');
|
||||
|
||||
// Navigation: +1 year, back to leap year
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 39,
|
||||
ctrlKey: true
|
||||
});
|
||||
// Both updated on keyboard navigation; graceful month-end
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 1, 28));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 1, 28));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'February 2012', 'Title is "February 2012"');
|
||||
|
||||
// Navigation: +1 year
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 39,
|
||||
ctrlKey: true
|
||||
});
|
||||
// Both updated on keyboard navigation; graceful month-end
|
||||
datesEqual(this.dp.viewDate, UTCDate(2013, 1, 28));
|
||||
datesEqual(this.dp.date, UTCDate(2013, 1, 28));
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'February 2013', 'Title is "February 2013"');
|
||||
});
|
||||
|
||||
test('Selection (enter)', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Navigation: -1 day, left arrow key
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 37
|
||||
});
|
||||
// Both updated on keyboard navigation
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 30));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 30));
|
||||
// Month not changed
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
// Selection: Enter
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 13
|
||||
});
|
||||
// Both updated on keyboard navigation
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 30));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 30));
|
||||
// Month not changed
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
ok(this.picker.is(':not(:visible)'), 'Picker is hidden');
|
||||
});
|
||||
|
||||
test('Toggle hide/show (escape); navigation while hidden is suppressed', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
equal(target.text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
ok(this.picker.is(':visible'), 'Picker is visible');
|
||||
|
||||
// Hide
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 27
|
||||
});
|
||||
|
||||
ok(this.picker.is(':not(:visible)'), 'Picker is hidden');
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
// left arrow key, *doesn't* navigate
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 37
|
||||
});
|
||||
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
// Show
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 27
|
||||
});
|
||||
|
||||
ok(this.picker.is(':visible'), 'Picker is visible');
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
});
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
module('Keyboard Navigation (All)', {
|
||||
setup: function(){
|
||||
this.input = $('<input type="text">')
|
||||
.appendTo('#qunit-fixture')
|
||||
.datetimepicker({format: "dd-mm-yyyy"})
|
||||
.focus(); // Activate for visibility checks
|
||||
this.dp = this.input.data('datetimepicker')
|
||||
this.picker = this.dp.picker;
|
||||
},
|
||||
teardown: function(){
|
||||
this.picker.remove();
|
||||
}
|
||||
});
|
||||
|
||||
test('TAB hides picker', function(){
|
||||
var target;
|
||||
|
||||
ok(this.picker.is(':visible'), 'Picker is visible');
|
||||
|
||||
this.input.trigger({
|
||||
type: 'keydown',
|
||||
keyCode: 9
|
||||
});
|
||||
|
||||
ok(this.picker.is(':not(:visible)'), 'Picker is hidden');
|
||||
});
|
||||
@@ -0,0 +1,66 @@
|
||||
module('Mouse Navigation 2011', {
|
||||
setup: function(){
|
||||
/*
|
||||
Tests start with picker on March 31, 2011.
|
||||
*/
|
||||
this.input = $('<input type="text" value="31-03-2011">')
|
||||
.appendTo('#qunit-fixture')
|
||||
.datetimepicker({format: "dd-mm-yyyy", viewSelect: 2})
|
||||
.focus(); // Activate for visibility checks
|
||||
this.dp = this.input.data('datetimepicker')
|
||||
this.picker = this.dp.picker;
|
||||
},
|
||||
teardown: function(){
|
||||
this.picker.remove();
|
||||
}
|
||||
});
|
||||
|
||||
test('Selecting date from previous month while in January changes month and year displayed', function(){
|
||||
var target;
|
||||
|
||||
this.input.val('01-01-2011');
|
||||
this.dp.update();
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 0, 1))
|
||||
datesEqual(this.dp.date, UTCDate(2011, 0, 1))
|
||||
|
||||
// Rendered correctly
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days tbody td:first');
|
||||
equal(target.text(), '26'); // Should be Dec 26
|
||||
equal(this.picker.find('.datetimepicker-days thead th.switch').text(), 'January 2011');
|
||||
|
||||
// Updated internally on click
|
||||
target.click();
|
||||
equal(this.picker.find('.datetimepicker-days thead th.switch').text(), 'December 2010');
|
||||
datesEqual(this.dp.viewDate, UTCDate(2010, 11, 26))
|
||||
datesEqual(this.dp.date, UTCDate(2010, 11, 26))
|
||||
|
||||
// Re-rendered on click
|
||||
target = this.picker.find('.datetimepicker-days tbody td:first');
|
||||
equal(target.text(), '28'); // Should be Nov 28
|
||||
});
|
||||
|
||||
test('Selecting date from next month while in December changes month and year displayed', function(){
|
||||
var target;
|
||||
|
||||
this.input.val('01-12-2010');
|
||||
this.dp.update();
|
||||
datesEqual(this.dp.viewDate, UTCDate(2010, 11, 1))
|
||||
datesEqual(this.dp.date, UTCDate(2010, 11, 1))
|
||||
|
||||
// Rendered correctly
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days tbody td:last');
|
||||
equal(target.text(), '8'); // Should be Jan 8
|
||||
equal(this.picker.find('.datetimepicker-days thead th.switch').text(), 'December 2010');
|
||||
|
||||
// Updated internally on click
|
||||
target.click();
|
||||
equal(this.picker.find('.datetimepicker-days thead th.switch').text(), 'January 2011');
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 0, 8))
|
||||
datesEqual(this.dp.date, UTCDate(2011, 0, 8))
|
||||
|
||||
// Re-rendered on click
|
||||
target = this.picker.find('.datetimepicker-days tbody td:first');
|
||||
equal(target.text(), '26'); // Should be Dec 26
|
||||
});
|
||||
@@ -0,0 +1,251 @@
|
||||
module('Mouse Navigation 2012', {
|
||||
setup: function(){
|
||||
/*
|
||||
Tests start with picker on March 31, 2012. Fun facts:
|
||||
|
||||
* February 1, 2012 was on a Wednesday
|
||||
* February 29, 2012 was on a Wednesday
|
||||
* March 1, 2012 was on a Thursday
|
||||
* March 31, 2012 was on a Saturday
|
||||
*/
|
||||
this.input = $('<input type="text" value="31-03-2012">')
|
||||
.appendTo('#qunit-fixture')
|
||||
.datetimepicker({format: "dd-mm-yyyy", viewSelect: 2})
|
||||
.focus(); // Activate for visibility checks
|
||||
this.dp = this.input.data('datetimepicker')
|
||||
this.picker = this.dp.picker;
|
||||
},
|
||||
teardown: function(){
|
||||
this.picker.remove();
|
||||
}
|
||||
});
|
||||
|
||||
test('Selecting date resets viewDate and date', function(){
|
||||
var target;
|
||||
|
||||
// Rendered correctly
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days tbody td:nth(7)');
|
||||
equal(target.text(), '4'); // Should be Mar 4
|
||||
|
||||
// Updated internally on click
|
||||
target.click();
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 4))
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 4))
|
||||
|
||||
// Re-rendered on click
|
||||
target = this.picker.find('.datetimepicker-days tbody td:first');
|
||||
equal(target.text(), '26'); // Should be Feb 29
|
||||
});
|
||||
|
||||
test('Navigating next/prev by month', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.prev');
|
||||
ok(target.is(':visible'), 'Month:prev nav is visible');
|
||||
|
||||
// Updated internally on click
|
||||
target.click();
|
||||
// Should handle month-length changes gracefully
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 1, 29));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
// Re-rendered on click
|
||||
target = this.picker.find('.datetimepicker-days tbody td:first');
|
||||
equal(target.text(), '29'); // Should be Jan 29
|
||||
|
||||
target = this.picker.find('.datetimepicker-days thead th.next');
|
||||
ok(target.is(':visible'), 'Month:next nav is visible');
|
||||
|
||||
// Updated internally on click
|
||||
target.click().click();
|
||||
// Graceful moonth-end handling carries over
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 3, 29));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
// Re-rendered on click
|
||||
target = this.picker.find('.datetimepicker-days tbody td:first');
|
||||
equal(target.text(), '25'); // Should be Mar 25
|
||||
// (includes "old" days at start of month, even if that's all the first week-row consists of)
|
||||
});
|
||||
|
||||
test('Navigating to/from year view', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
ok(target.is(':visible'), 'View switcher is visible');
|
||||
|
||||
target.click();
|
||||
ok(this.picker.find('.datetimepicker-months').is(':visible'), 'Month picker is visible');
|
||||
equal(this.dp.viewMode, 3);
|
||||
// Not modified when switching modes
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
// Change months to test internal state
|
||||
target = this.picker.find('.datetimepicker-months tbody span:contains(Apr)');
|
||||
target.click();
|
||||
equal(this.dp.viewMode, 2);
|
||||
// Only viewDate modified
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 3, 1)); // Apr 30
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
});
|
||||
|
||||
test('Navigating to/from decade view', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
ok(target.is(':visible'), 'View switcher is visible');
|
||||
|
||||
target.click();
|
||||
ok(this.picker.find('.datetimepicker-months').is(':visible'), 'Month picker is visible');
|
||||
equal(this.dp.viewMode, 3);
|
||||
// Not modified when switching modes
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
target = this.picker.find('.datetimepicker-months thead th.switch');
|
||||
ok(target.is(':visible'), 'View switcher is visible');
|
||||
|
||||
target.click();
|
||||
ok(this.picker.find('.datetimepicker-years').is(':visible'), 'Year picker is visible');
|
||||
equal(this.dp.viewMode, 4);
|
||||
// Not modified when switching modes
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
// Change years to test internal state changes
|
||||
target = this.picker.find('.datetimepicker-years tbody span:contains(2011)');
|
||||
target.click();
|
||||
equal(this.dp.viewMode, 3);
|
||||
// Only viewDate modified
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 1));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
target = this.picker.find('.datetimepicker-months tbody span:contains(Apr)');
|
||||
target.click();
|
||||
equal(this.dp.viewMode, 2);
|
||||
// Only viewDate modified
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 3, 1));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
});
|
||||
|
||||
test('Navigating prev/next in year view', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
ok(target.is(':visible'), 'View switcher is visible');
|
||||
|
||||
target.click();
|
||||
ok(this.picker.find('.datetimepicker-months').is(':visible'), 'Month picker is visible');
|
||||
equal(this.dp.viewMode, 3);
|
||||
equal(this.picker.find('.datetimepicker-months thead th.switch').text(), '2012');
|
||||
// Not modified when switching modes
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
// Go to next year (2013)
|
||||
target = this.picker.find('.datetimepicker-months thead th.next');
|
||||
target.click();
|
||||
equal(this.picker.find('.datetimepicker-months thead th.switch').text(), '2013');
|
||||
// Only viewDate modified
|
||||
datesEqual(this.dp.viewDate, UTCDate(2013, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
// Go to prev year (x2 == 2011)
|
||||
target = this.picker.find('.datetimepicker-months thead th.prev');
|
||||
target.click().click();
|
||||
equal(this.picker.find('.datetimepicker-months thead th.switch').text(), '2011');
|
||||
// Only viewDate modified
|
||||
datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
});
|
||||
|
||||
test('Navigating prev/next in decade view', function(){
|
||||
var target;
|
||||
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days thead th.switch');
|
||||
ok(target.is(':visible'), 'View switcher is visible');
|
||||
|
||||
target.click();
|
||||
ok(this.picker.find('.datetimepicker-months').is(':visible'), 'Month picker is visible');
|
||||
equal(this.dp.viewMode, 3);
|
||||
// Not modified when switching modes
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
target = this.picker.find('.datetimepicker-months thead th.switch');
|
||||
ok(target.is(':visible'), 'View switcher is visible');
|
||||
|
||||
target.click();
|
||||
ok(this.picker.find('.datetimepicker-years').is(':visible'), 'Year picker is visible');
|
||||
equal(this.dp.viewMode, 4);
|
||||
equal(this.picker.find('.datetimepicker-years thead th.switch').text(), '2010-2019');
|
||||
// Not modified when switching modes
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
// Go to next decade (2020-29)
|
||||
target = this.picker.find('.datetimepicker-years thead th.next');
|
||||
target.click();
|
||||
equal(this.picker.find('.datetimepicker-years thead th.switch').text(), '2020-2029');
|
||||
// Only viewDate modified
|
||||
datesEqual(this.dp.viewDate, UTCDate(2022, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
|
||||
// Go to prev year (x2 == 2000-09)
|
||||
target = this.picker.find('.datetimepicker-years thead th.prev');
|
||||
target.click().click();
|
||||
equal(this.picker.find('.datetimepicker-years thead th.switch').text(), '2000-2009');
|
||||
// Only viewDate modified
|
||||
datesEqual(this.dp.viewDate, UTCDate(2002, 2, 31));
|
||||
datesEqual(this.dp.date, UTCDate(2012, 2, 31));
|
||||
});
|
||||
|
||||
test('Selecting date from previous month resets viewDate and date, changing month displayed', function(){
|
||||
var target;
|
||||
|
||||
// Rendered correctly
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days tbody td:first');
|
||||
equal(target.text(), '26'); // Should be Feb 26
|
||||
equal(this.picker.find('.datetimepicker-days thead th.switch').text(), 'March 2012');
|
||||
|
||||
// Updated internally on click
|
||||
target.click();
|
||||
equal(this.picker.find('.datetimepicker-days thead th.switch').text(), 'February 2012');
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 1, 26))
|
||||
datesEqual(this.dp.date, UTCDate(2012, 1, 26))
|
||||
|
||||
// Re-rendered on click
|
||||
target = this.picker.find('.datetimepicker-days tbody td:first');
|
||||
equal(target.text(), '29'); // Should be Jan 29
|
||||
});
|
||||
|
||||
test('Selecting date from next month resets viewDate and date, changing month displayed', function(){
|
||||
var target;
|
||||
|
||||
this.input.val('01-04-2012');
|
||||
this.dp.update();
|
||||
|
||||
// Rendered correctly
|
||||
equal(this.dp.viewMode, 2);
|
||||
target = this.picker.find('.datetimepicker-days tbody td:last');
|
||||
equal(target.text(), '5'); // Should be May 5
|
||||
equal(this.picker.find('.datetimepicker-days thead th.switch').text(), 'April 2012');
|
||||
|
||||
// Updated internally on click
|
||||
target.click();
|
||||
equal(this.picker.find('.datetimepicker-days thead th.switch').text(), 'May 2012');
|
||||
datesEqual(this.dp.viewDate, UTCDate(2012, 4, 5))
|
||||
datesEqual(this.dp.date, UTCDate(2012, 4, 5))
|
||||
|
||||
// Re-rendered on click
|
||||
target = this.picker.find('.datetimepicker-days tbody td:first');
|
||||
equal(target.text(), '29'); // Should be Apr 29
|
||||
});
|
||||
@@ -0,0 +1,33 @@
|
||||
module('Mouse Navigation (All)', {
|
||||
setup: function(){
|
||||
this.input = $('<input type="text">')
|
||||
.appendTo('#qunit-fixture')
|
||||
.datetimepicker({format: "dd-mm-yyyy"})
|
||||
.focus(); // Activate for visibility checks
|
||||
this.dp = this.input.data('datetimepicker')
|
||||
this.picker = this.dp.picker;
|
||||
},
|
||||
teardown: function(){
|
||||
this.picker.remove();
|
||||
}
|
||||
});
|
||||
|
||||
test('Clicking datetimepicker does not hide datetimepicker', function(){
|
||||
ok(this.picker.is(':visible'), 'Picker is visible');
|
||||
this.picker.trigger('mousedown');
|
||||
ok(this.picker.is(':visible'), 'Picker is still visible');
|
||||
});
|
||||
|
||||
test('Clicking outside datetimepicker hides datetimepicker', function(){
|
||||
var $otherelement = $('<div />');
|
||||
$('body').append($otherelement);
|
||||
|
||||
ok(this.picker.is(':visible'), 'Picker is visible');
|
||||
this.input.trigger('click');
|
||||
ok(this.picker.is(':visible'), 'Picker is still visible');
|
||||
|
||||
$otherelement.trigger('mousedown');
|
||||
ok(this.picker.is(':not(:visible)'), 'Picker is hidden');
|
||||
|
||||
$otherelement.remove();
|
||||
});
|
||||
@@ -0,0 +1,376 @@
|
||||
module('Options', {
|
||||
setup: function(){},
|
||||
teardown: function(){
|
||||
return
|
||||
$('#qunit-fixture *').each(function(){
|
||||
var t = $(this);
|
||||
if ('datetimepicker' in t.data())
|
||||
t.data('datetimepicker').picker.remove();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
test('Autoclose', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
autoclose: true,
|
||||
minView: 2,
|
||||
viewSelect: 2
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
|
||||
input.focus();
|
||||
ok(picker.is(':visible'), 'Picker is visible');
|
||||
target = picker.find('.datetimepicker-days tbody td:nth(7)');
|
||||
equal(target.text(), '4'); // Mar 4
|
||||
|
||||
target.click();
|
||||
ok(picker.is(':not(:visible)'), 'Picker is hidden');
|
||||
datesEqual(dp.date, UTCDate(2012, 2, 4));
|
||||
datesEqual(dp.viewDate, UTCDate(2012, 2, 4));
|
||||
});
|
||||
|
||||
test('Startview: year view (integer)', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
startView: 3,
|
||||
viewSelect: 2
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||||
ok(picker.find('.datetimepicker-months').is(':visible'), 'Months view visible');
|
||||
ok(picker.find('.datetimepicker-years').is(':not(:visible)'), 'Years view hidden');
|
||||
});
|
||||
|
||||
test('Startview: year view (string)', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
startView: 'year',
|
||||
viewSelect: 2
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||||
ok(picker.find('.datetimepicker-months').is(':visible'), 'Months view visible');
|
||||
ok(picker.find('.datetimepicker-years').is(':not(:visible)'), 'Years view hidden');
|
||||
});
|
||||
|
||||
test('Startview: decade view (integer)', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
startView: 4
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||||
ok(picker.find('.datetimepicker-months').is(':not(:visible)'), 'Months view hidden');
|
||||
ok(picker.find('.datetimepicker-years').is(':visible'), 'Years view visible');
|
||||
});
|
||||
|
||||
test('Startview: decade view (string)', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
startView: 'decade'
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||||
ok(picker.find('.datetimepicker-months').is(':not(:visible)'), 'Months view hidden');
|
||||
ok(picker.find('.datetimepicker-years').is(':visible'), 'Years view visible');
|
||||
});
|
||||
|
||||
test('Today Button: today button not default', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd'
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days').is(':visible'), 'Days view visible');
|
||||
ok(picker.find('.datetimepicker-days tfoot .today').is(':not(:visible)'), 'Today button not visible');
|
||||
});
|
||||
|
||||
test('Today Button: today visibility when enabled', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
todayBtn: true
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days').is(':visible'), 'Days view visible');
|
||||
ok(picker.find('.datetimepicker-days tfoot .today').is(':visible'), 'Today button visible');
|
||||
|
||||
picker.find('.datetimepicker-days thead th.switch').click();
|
||||
ok(picker.find('.datetimepicker-months').is(':visible'), 'Months view visible');
|
||||
ok(picker.find('.datetimepicker-months tfoot .today').is(':visible'), 'Today button visible');
|
||||
|
||||
picker.find('.datetimepicker-months thead th.switch').click();
|
||||
ok(picker.find('.datetimepicker-years').is(':visible'), 'Years view visible');
|
||||
ok(picker.find('.datetimepicker-years tfoot .today').is(':visible'), 'Today button visible');
|
||||
});
|
||||
|
||||
test('Today Button: data-api', function(){
|
||||
var input = $('<input data-date-today-btn="true" />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd'
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days').is(':visible'), 'Days view visible');
|
||||
ok(picker.find('.datetimepicker-days tfoot .today').is(':visible'), 'Today button visible');
|
||||
});
|
||||
|
||||
test('Today Button: moves to today\'s date', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
todayBtn: true
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days').is(':visible'), 'Days view visible');
|
||||
ok(picker.find('.datetimepicker-days tfoot .today').is(':visible'), 'Today button visible');
|
||||
|
||||
target = picker.find('.datetimepicker-days tfoot .today');
|
||||
target.click();
|
||||
|
||||
var d = new Date(),
|
||||
today = UTCDate(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds());
|
||||
datesEqual(dp.viewDate, today);
|
||||
//datesEqual(dp.date, UTCDate(2012, 2, 5));
|
||||
});
|
||||
|
||||
test('Today Button: "linked" selects today\'s date', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
todayBtn: "linked"
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days').is(':visible'), 'Days view visible');
|
||||
ok(picker.find('.datetimepicker-days tfoot .today').is(':visible'), 'Today button visible');
|
||||
|
||||
target = picker.find('.datetimepicker-days tfoot .today');
|
||||
target.click();
|
||||
|
||||
var d = new Date(),
|
||||
today = UTCDate(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds());
|
||||
datesEqual(dp.viewDate, today);
|
||||
datesEqual(dp.date, today);
|
||||
});
|
||||
|
||||
test('Today Highlight: today\'s date is not highlighted by default', patch_date(function(Date){
|
||||
Date.now = UTCDate(2012, 2, 15);
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd'
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days').is(':visible'), 'Days view visible');
|
||||
equal(picker.find('.datetimepicker-days thead .switch').text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
target = picker.find('.datetimepicker-days tbody td:contains(15)');
|
||||
ok(!target.hasClass('today'), 'Today is not marked with "today" class');
|
||||
target = picker.find('.datetimepicker-days tbody td:contains(14)');
|
||||
ok(!target.hasClass('today'), 'Yesterday is not marked with "today" class');
|
||||
target = picker.find('.datetimepicker-days tbody td:contains(16)');
|
||||
ok(!target.hasClass('today'), 'Tomorrow is not marked with "today" class');
|
||||
}));
|
||||
|
||||
test('Today Highlight: today\'s date is highlighted when not active', patch_date(function(Date){
|
||||
Date.now = new Date(2012, 2, 15);
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-03-05')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
todayHighlight: true
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days').is(':visible'), 'Days view visible');
|
||||
equal(picker.find('.datetimepicker-days thead .switch').text(), 'March 2012', 'Title is "March 2012"');
|
||||
|
||||
target = picker.find('.datetimepicker-days tbody td:contains(15)');
|
||||
ok(target.hasClass('today'), 'Today is marked with "today" class');
|
||||
target = picker.find('.datetimepicker-days tbody td:contains(14)');
|
||||
ok(!target.hasClass('today'), 'Yesterday is not marked with "today" class');
|
||||
target = picker.find('.datetimepicker-days tbody td:contains(16)');
|
||||
ok(!target.hasClass('today'), 'Tomorrow is not marked with "today" class');
|
||||
}));
|
||||
|
||||
test('DaysOfWeekDisabled', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2012-10-26')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
daysOfWeekDisabled: '1,5'
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
|
||||
input.focus();
|
||||
target = picker.find('.datetimepicker-days tbody td:nth(22)');
|
||||
ok(target.hasClass('disabled'), 'Day of week is disabled');
|
||||
target = picker.find('.datetimepicker-days tbody td:nth(24)');
|
||||
ok(!target.hasClass('disabled'), 'Day of week is enabled');
|
||||
target = picker.find('.datetimepicker-days tbody td:nth(26)');
|
||||
ok(target.hasClass('disabled'), 'Day of week is disabled');
|
||||
});
|
||||
|
||||
test('startDate: Custom value', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2013-01-25')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
startView: 2,
|
||||
startDate: "2013-01-24 15:30",
|
||||
viewSelect: 2
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days tbody tr:nth(3) td:nth(2)').hasClass('disabled'), 'The previous day is disabled');
|
||||
target = picker.find('.datetimepicker-days tbody tr:nth(3) td:nth(4)')
|
||||
ok(!target.hasClass('disabled'), 'The starting day is enabled');
|
||||
|
||||
target.click()
|
||||
ok(picker.find('.datetimepicker-hours tbody span:nth(14)').hasClass('disabled'), 'The previous hour is disabled');
|
||||
target = picker.find('.datetimepicker-hours tbody span:nth(15)')
|
||||
ok(!target.hasClass('disabled'), 'The starting hour is enabled');
|
||||
|
||||
target.click()
|
||||
ok(picker.find('.datetimepicker-minutes tbody span:nth(5)').hasClass('disabled'), 'The previous minute is disabled');
|
||||
ok(!picker.find('.datetimepicker-minutes tbody span:nth(6)').hasClass('disabled'), 'The starting minute is enabled');
|
||||
});
|
||||
|
||||
test('startDate: Custom value', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2013-01-25')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
startView: 2,
|
||||
startDate: "2013-01-24 15:30",
|
||||
viewSelect: 2
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days tbody tr:nth(3) td:nth(3)').hasClass('disabled'), 'The previous day is disabled');
|
||||
target = picker.find('.datetimepicker-days tbody tr:nth(3) td:nth(4)')
|
||||
ok(!target.hasClass('disabled'), 'The starting day is enabled');
|
||||
|
||||
target.click()
|
||||
ok(picker.find('.datetimepicker-hours tbody span:nth(14)').hasClass('disabled'), 'The previous hour is disabled');
|
||||
target = picker.find('.datetimepicker-hours tbody span:nth(15)')
|
||||
ok(!target.hasClass('disabled'), 'The starting hour is enabled');
|
||||
|
||||
target.click()
|
||||
ok(picker.find('.datetimepicker-minutes tbody span:nth(5)').hasClass('disabled'), 'The previous minute is disabled');
|
||||
ok(!picker.find('.datetimepicker-minutes tbody span:nth(6)').hasClass('disabled'), 'The starting minute is enabled');
|
||||
});
|
||||
|
||||
test('endDate: Custom value', function(){
|
||||
var input = $('<input />')
|
||||
.appendTo('#qunit-fixture')
|
||||
.val('2013-01-25')
|
||||
.datetimepicker({
|
||||
format: 'yyyy-mm-dd',
|
||||
startView: 2,
|
||||
endDate: "2013-01-24 15:30",
|
||||
viewSelect: 2
|
||||
}),
|
||||
dp = input.data('datetimepicker'),
|
||||
picker = dp.picker,
|
||||
target;
|
||||
|
||||
input.focus();
|
||||
ok(picker.find('.datetimepicker-days tbody tr:nth(3) td:nth(5)').hasClass('disabled'), 'The next day is disabled');
|
||||
target = picker.find('.datetimepicker-days tbody tr:nth(3) td:nth(4)')
|
||||
ok(!target.hasClass('disabled'), 'The last day is enabled');
|
||||
|
||||
target.click()
|
||||
ok(picker.find('.datetimepicker-hours tbody span:nth(16)').hasClass('disabled'), 'The next hour is disabled');
|
||||
target = picker.find('.datetimepicker-hours tbody span:nth(15)')
|
||||
ok(!target.hasClass('disabled'), 'The last hour is enabled');
|
||||
|
||||
target.click()
|
||||
ok(picker.find('.datetimepicker-minutes tbody span:nth(7)').hasClass('disabled'), 'The next minute is disabled');
|
||||
ok(!picker.find('.datetimepicker-minutes tbody span:nth(6)').hasClass('disabled'), 'The last minute is enabled');
|
||||
});
|
||||
@@ -0,0 +1,46 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="assets/qunit.css" />
|
||||
<script src="assets/qunit.js"></script>
|
||||
<script src="assets/qunit-logging.js"></script> <!-- console.log for test failures -->
|
||||
<script src="assets/coverage.js"></script>
|
||||
<script src="assets/jquery-1.7.1.min.js"></script>
|
||||
<script src="../js/bootstrap-datetimepicker.js"></script>
|
||||
|
||||
<style>
|
||||
.datetimepicker {
|
||||
/* Appended to body, abs-pos off the page */
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: -9999em;
|
||||
left: -9999em;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- Utilities -->
|
||||
<script src="assets/utils.js"></script>
|
||||
<script src="assets/mock.js"></script>
|
||||
|
||||
<!-- Test suites -->
|
||||
<script src="suites/formats.js"></script>
|
||||
<script src="suites/mouse_navigation/all.js"></script>
|
||||
<script src="suites/mouse_navigation/2012.js"></script>
|
||||
<script src="suites/mouse_navigation/2011.js"></script>
|
||||
<script src="suites/keyboard_navigation/all.js"></script>
|
||||
<script src="suites/keyboard_navigation/2012.js"></script>
|
||||
<script src="suites/keyboard_navigation/2011.js"></script>
|
||||
<script src="suites/component.js"></script>
|
||||
<script src="suites/events.js"></script>
|
||||
<script src="suites/options.js"></script>
|
||||
<script src="suites/inline.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="qunit-header">bootstrap-datetimepicker</h1>
|
||||
<h2 id="qunit-banner"></h2>
|
||||
<div id="qunit-testrunner-toolbar"></div>
|
||||
<h2 id="qunit-userAgent"></h2>
|
||||
<ol id="qunit-tests"></ol>
|
||||
<div id="qunit-fixture"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,46 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="assets/qunit.css" />
|
||||
<script src="assets/qunit.js"></script>
|
||||
<script src="assets/qunit-logging.js"></script> <!-- console.log for test failures -->
|
||||
<script src="assets/coverage.js"></script>
|
||||
<script src="assets/jquery-1.7.1.min.js"></script>
|
||||
<script src="../js/bootstrap-datetimepicker.min.js"></script>
|
||||
|
||||
<style>
|
||||
.datetimepicker {
|
||||
/* Appended to body, abs-pos off the page */
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: -9999em;
|
||||
left: -9999em;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- Utilities -->
|
||||
<script src="assets/utils.js"></script>
|
||||
<script src="assets/mock.js"></script>
|
||||
|
||||
<!-- Test suites -->
|
||||
<script src="suites/formats.js"></script>
|
||||
<script src="suites/mouse_navigation/all.js"></script>
|
||||
<script src="suites/mouse_navigation/2012.js"></script>
|
||||
<script src="suites/mouse_navigation/2011.js"></script>
|
||||
<script src="suites/keyboard_navigation/all.js"></script>
|
||||
<script src="suites/keyboard_navigation/2012.js"></script>
|
||||
<script src="suites/keyboard_navigation/2011.js"></script>
|
||||
<script src="suites/component.js"></script>
|
||||
<script src="suites/events.js"></script>
|
||||
<script src="suites/options.js"></script>
|
||||
<script src="suites/inline.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="qunit-header">bootstrap-datetimepicker</h1>
|
||||
<h2 id="qunit-banner"></h2>
|
||||
<div id="qunit-testrunner-toolbar"></div>
|
||||
<h2 id="qunit-userAgent"></h2>
|
||||
<ol id="qunit-tests"></ol>
|
||||
<div id="qunit-fixture"></div>
|
||||
</body>
|
||||
</html>
|
||||