mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-10 05:02:36 +01:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
5bb370eda0
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,6 +7,7 @@
|
||||
/public/logo
|
||||
/public/build
|
||||
/public/packages
|
||||
/public/vendor
|
||||
/bootstrap/compiled.php
|
||||
/bootstrap/environment.php
|
||||
/vendor
|
||||
|
@ -35,7 +35,7 @@ class AccountController extends \BaseController {
|
||||
|
||||
if ($user && $user->registered)
|
||||
{
|
||||
exit;
|
||||
return Redirect::to('/');
|
||||
}
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ class AccountController extends \BaseController {
|
||||
|
||||
Auth::login($user, true);
|
||||
Event::fire('user.login');
|
||||
|
||||
|
||||
return Redirect::to('invoices/create');
|
||||
}
|
||||
|
||||
|
@ -74,6 +74,18 @@ class HomeController extends BaseController {
|
||||
return View::make('coming_soon');
|
||||
}
|
||||
|
||||
public function invoiceNow()
|
||||
{
|
||||
if (Auth::check())
|
||||
{
|
||||
return Redirect::to('invoices/create');
|
||||
}
|
||||
else
|
||||
{
|
||||
return View::make('public.header', ['invoiceNow' => true]);
|
||||
}
|
||||
}
|
||||
|
||||
public function logError()
|
||||
{
|
||||
return Utils::logError(Input::get('error'), 'JavaScript');
|
||||
|
@ -94,7 +94,7 @@ class InvoiceController extends \BaseController {
|
||||
|
||||
return $table->addColumn('start_date', function($model) { return Utils::fromSqlDate($model->start_date); })
|
||||
->addColumn('end_date', function($model) { return Utils::fromSqlDate($model->end_date); })
|
||||
->addColumn('total', function($model) { return Utils::formatMoney($model->amount, $model->currency_id); })
|
||||
->addColumn('amount', function($model) { return Utils::formatMoney($model->amount, $model->currency_id); })
|
||||
->addColumn('dropdown', function($model)
|
||||
{
|
||||
return '<div class="btn-group tr-action" style="visibility:hidden;">
|
||||
@ -143,7 +143,7 @@ class InvoiceController extends \BaseController {
|
||||
$invoice->invoice_date = Utils::fromSqlDate($invoice->invoice_date);
|
||||
$invoice->due_date = Utils::fromSqlDate($invoice->due_date);
|
||||
$invoice->is_pro = $client->account->isPro();
|
||||
|
||||
|
||||
$data = array(
|
||||
'hideHeader' => true,
|
||||
'showBreadcrumbs' => false,
|
||||
@ -209,7 +209,7 @@ class InvoiceController extends \BaseController {
|
||||
}
|
||||
|
||||
public function create($clientPublicId = 0)
|
||||
{
|
||||
{
|
||||
$client = null;
|
||||
$invoiceNumber = Auth::user()->account->getNextInvoiceNumber();
|
||||
$account = Account::with('country')->findOrFail(Auth::user()->account_id);
|
||||
@ -229,6 +229,7 @@ class InvoiceController extends \BaseController {
|
||||
'title' => '- New Invoice',
|
||||
'client' => $client);
|
||||
$data = array_merge($data, self::getViewModel());
|
||||
|
||||
return View::make('invoices.edit', $data);
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,7 @@ class ReportController extends \BaseController {
|
||||
$endDate = Utils::today(false);
|
||||
}
|
||||
|
||||
$padding = $groupBy == 'DAYOFYEAR' ? 'day' : ($groupBy == 'WEEK' ? 'week' : 'month');
|
||||
$padding = $groupBy == 'DAYOFYEAR' ? 'day' : ($groupBy == 'WEEK' ? 'week' : 'month');
|
||||
$endDate->modify('+1 '.$padding);
|
||||
$datasets = [];
|
||||
$labels = [];
|
||||
|
@ -298,8 +298,8 @@ class UserController extends BaseController {
|
||||
}
|
||||
}
|
||||
|
||||
Confide::logout();
|
||||
|
||||
Confide::logout();
|
||||
|
||||
return Redirect::to('/')->with('clearGuestKey', true);
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,12 @@ class AddAdvancedSettings extends Migration {
|
||||
$table->string('primary_color');
|
||||
$table->string('secondary_color');
|
||||
});
|
||||
|
||||
Schema::table('payments', function($table)
|
||||
{
|
||||
$table->dropForeign('payments_invoice_id_foreign');
|
||||
$table->foreign('invoice_id')->references('id')->on('invoices')->onDelete('cascade');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -349,5 +349,4 @@ return array(
|
||||
'specify_colors_label' => 'Select the colors used in the invoice',
|
||||
|
||||
|
||||
|
||||
);
|
||||
|
@ -129,12 +129,10 @@ class Activity extends Eloquent
|
||||
|
||||
if (!$invoice->is_deleted)
|
||||
{
|
||||
if ($invoice->balance > 0)
|
||||
{
|
||||
$client = $invoice->client;
|
||||
$client->balance = $client->balance - $invoice->balance;
|
||||
$client->save();
|
||||
}
|
||||
$client = $invoice->client;
|
||||
$client->balance = $client->balance - $invoice->balance;
|
||||
$client->paid_to_date = $client->paid_to_date - ($invoice->amount - $invoice->balance);
|
||||
$client->save();
|
||||
|
||||
$activity = Activity::getBlank();
|
||||
$activity->invoice_id = $invoice->id;
|
||||
@ -167,12 +165,10 @@ class Activity extends Eloquent
|
||||
{
|
||||
if ($invoice->is_deleted && !$invoice->getOriginal('is_deleted'))
|
||||
{
|
||||
if ($invoice->balance > 0)
|
||||
{
|
||||
$client = $invoice->client;
|
||||
$client->balance = $client->balance - $invoice->balance;
|
||||
$client->save();
|
||||
}
|
||||
$client = $invoice->client;
|
||||
$client->balance = $client->balance - $invoice->balance;
|
||||
$client->paid_to_date = $client->paid_to_date - ($invoice->amount - $invoice->balance);
|
||||
$client->save();
|
||||
|
||||
$activity = Activity::getBlank();
|
||||
$activity->client_id = $invoice->client_id;
|
||||
|
@ -74,7 +74,8 @@ class Invoice extends EntityModel
|
||||
'tax_name',
|
||||
'tax_rate',
|
||||
'account',
|
||||
'invoice_design_id']);
|
||||
'invoice_design_id',
|
||||
'is_pro']);
|
||||
|
||||
$this->client->setVisible([
|
||||
'name',
|
||||
|
@ -35,6 +35,7 @@ Route::get('/faq', 'HomeController@showFaq');
|
||||
Route::get('/features', 'HomeController@showFeatures');
|
||||
|
||||
Route::get('log_error', 'HomeController@logError');
|
||||
Route::get('invoice_now', 'HomeController@invoiceNow');
|
||||
Route::post('get_started', 'AccountController@getStarted');
|
||||
|
||||
Route::get('view/{invitation_key}', 'InvoiceController@view');
|
||||
@ -143,7 +144,7 @@ define('DEFAULT_INVOICE_NUMBER', '0001');
|
||||
define('RECENTLY_VIEWED_LIMIT', 8);
|
||||
define('LOGGED_ERROR_LIMIT', 100);
|
||||
define('RANDOM_KEY_LENGTH', 32);
|
||||
define('MAX_NUM_CLIENTS', 1000);
|
||||
define('MAX_NUM_CLIENTS', 500);
|
||||
define('MAX_NUM_CLIENTS_PRO', 5000);
|
||||
|
||||
define('INVOICE_STATUS_DRAFT', 1);
|
||||
|
@ -344,7 +344,7 @@ Want something changed? We're {{ link_to('https://github.com/hillelcoren/invoice
|
||||
|
||||
@if (Auth::check() && !Auth::user()->isPro())
|
||||
<div class="modal fade" id="proPlanModal" tabindex="-1" role="dialog" aria-labelledby="proPlanModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog" style="min-width:1040px">
|
||||
<div class="modal-dialog" style="min-width:910px">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
@ -352,6 +352,7 @@ Want something changed? We're {{ link_to('https://github.com/hillelcoren/invoice
|
||||
</div>
|
||||
|
||||
<div style="background-color: #fff; padding-left: 16px; padding-right: 16px" id="proPlanDiv">
|
||||
<!--
|
||||
<p/>
|
||||
<b>Go Pro to Unlock Premium Invoice Ninja Features</b><p/>
|
||||
We believe that the free version of Invoice Ninja is a truly awesome product loaded
|
||||
@ -360,6 +361,74 @@ Want something changed? We're {{ link_to('https://github.com/hillelcoren/invoice
|
||||
offers more versatility, power and customization options for just $50 per year.
|
||||
<br/> <br/>
|
||||
<img src="{{ asset('images/pro-plan-chart.png') }}"/>
|
||||
-->
|
||||
|
||||
|
||||
<section class="plans">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-9">
|
||||
<h2>Go Pro to Unlock Premium Invoice Ninja Features</h2>
|
||||
<p>We believe that the free version of Invoice Ninja is a truly awesome product loaded
|
||||
with the key features you need to bill your clients electronically. But for those who
|
||||
crave still more Ninja awesomeness, we've unmasked the Invoice Ninja Pro plan, which
|
||||
offers more versatility, power and customization options for just $50 per year. </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="plans-table col-md-9">
|
||||
<div class="col-md-4 desc hide-mobile">
|
||||
<div class="cell"></div>
|
||||
<div class="cell">Number of clients per account</div>
|
||||
<div class="cell">Unlimited client invoices</div>
|
||||
<div class="cell">Add your company logo</div>
|
||||
<div class="cell">Live .PDF invoice creation </div>
|
||||
<div class="cell">4 beatiful invoice templates</div>
|
||||
<div class="cell">Accept credit card payments</div>
|
||||
<div class="cell">Custom invoice fields</div>
|
||||
<div class="cell">Priority email support</div>
|
||||
<div class="cell">Custom invoice colors</div>
|
||||
<div class="cell">Remove "Created by Invoice Ninja"</div>
|
||||
<div class="cell">Pricing</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="free col-md-4">
|
||||
<div class="cell">Free</div>
|
||||
<div class="cell"><div class="hide-desktop">Number of clients per account</div><span>500</span></div>
|
||||
<div class="cell"><div class="hide-desktop">Unlimited client invoices</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Add your company logo</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Live .PDF invoice creation</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">4 beatiful invoice templates</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Accept credit card payments</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Custom invoice fields</div><span class="glyphicon glyphicon-remove"></div>
|
||||
<div class="cell"><div class="hide-desktop">Priority email support</div><span class="glyphicon glyphicon-remove"></div>
|
||||
<div class="cell"><div class="hide-desktop">Custom invoice colors</div><span class="glyphicon glyphicon-remove"></div>
|
||||
<div class="cell"><div class="hide-desktop">Remove "Created by Invoice Ninja"</div><span class="glyphicon glyphicon-remove"></div>
|
||||
<div class="cell price"><div class="hide-desktop">Pricing</div><p>Free<span> /Always!</span></p></div>
|
||||
</div>
|
||||
<div class="pro col-md-4">
|
||||
|
||||
<div class="cell">Pro Plan<span class="glyphicon glyphicon-star"></div>
|
||||
<div class="cell"><div class="hide-desktop">Number of clients per account</div><span style="color: #2299c0; font-size: 16px;">5,000</span></div>
|
||||
<div class="cell"><div class="hide-desktop">Unlimited client invoices</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Add your company logo</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Live .PDF invoice creation</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">4 beatiful invoice templates</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Accept credit card payments</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Custom invoice fields</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Priority email support</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Custom invoice colors</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Remove "Created by Invoice Ninja"</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell price"><div class="hide-desktop">Pricing</div><p>$50<span> /Year</span></p></div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -505,7 +505,9 @@
|
||||
}); //.trigger('change');
|
||||
|
||||
$('#terms, #public_notes, #invoice_number, #invoice_date, #due_date, #po_number, #discount, #currency_id, #invoice_design_id, #recurring').change(function() {
|
||||
refreshPDF();
|
||||
setTimeout(function() {
|
||||
refreshPDF();
|
||||
}, 1);
|
||||
});
|
||||
|
||||
@if ($client || $invoice)
|
||||
|
@ -20,6 +20,7 @@
|
||||
<meta name="keywords" content="Invoice Ninja"></meta>
|
||||
|
||||
<script src="{{ asset('built.js') }}" type="text/javascript"></script>
|
||||
|
||||
<!-- <script src="{{ asset('vendor/jquery/jquery.js') }}" type="text/javascript"></script> -->
|
||||
<!-- <script src="{{ asset('vendor/jquery/dist/jquery.js') }}" type="text/javascript"></script> -->
|
||||
|
||||
@ -65,6 +66,7 @@
|
||||
|
||||
@yield('body')
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
NINJA.formIsChanged = false;
|
||||
$(function() {
|
||||
|
@ -53,11 +53,13 @@
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
if (isStorageSupported()) {
|
||||
$('[name="guest_key"]').val(localStorage.getItem('guest_key'));
|
||||
}
|
||||
});
|
||||
if (isStorageSupported()) {
|
||||
$('[name="guest_key"]').val(localStorage.getItem('guest_key'));
|
||||
}
|
||||
|
||||
@if (isset($invoiceNow) && $invoiceNow)
|
||||
getStarted();
|
||||
@endif
|
||||
|
||||
function isStorageSupported() {
|
||||
if ('localStorage' in window && window['localStorage'] !== null) {
|
||||
|
@ -33,58 +33,54 @@
|
||||
<div class="col-md-4 desc hide-mobile">
|
||||
<div class="cell"></div>
|
||||
<div class="cell">Number of clients per account</div>
|
||||
<div class="cell">Remove "Created by Invoice Ninja"</div>
|
||||
<div class="cell">Custom invoice fields</div>
|
||||
<div class="cell">Unlimited client invoices</div>
|
||||
<div class="cell">Add your company logo</div>
|
||||
<div class="cell">Live .PDF invoice creation </div>
|
||||
<div class="cell">4 beatiful invoice templates</div>
|
||||
<div class="cell">Accept credit card payments</div>
|
||||
<div class="cell">Multiple currency & language support</div>
|
||||
<div class="cell">Open source platform</div>
|
||||
<div class="cell">Self-hosting available</div>
|
||||
<div class="cell">Customize payment terms</div>
|
||||
<div class="cell">Custom invoice fields</div>
|
||||
<div class="cell">Priority email support</div>
|
||||
<div class="cell">Custom invoice colors</div>
|
||||
<div class="cell">Remove "Created by Invoice Ninja"</div>
|
||||
<div class="cell">Pricing</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="free col-md-4">
|
||||
<div class="cell">Free</div>
|
||||
<div class="cell"><div class="hide-desktop">Number of clients per account</div><span>1000</span></div>
|
||||
<div class="cell"><div class="hide-desktop">Remove "Created by Invoice Ninja"</div><span class="glyphicon glyphicon-remove"></div>
|
||||
<div class="cell"><div class="hide-desktop">Custom invoice fields</div><span class="glyphicon glyphicon-remove"></div>
|
||||
<div class="cell"><div class="hide-desktop">Number of clients per account</div><span>500</span></div>
|
||||
<div class="cell"><div class="hide-desktop">Unlimited client invoices</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Add your company logo</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Live .PDF invoice creation</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">4 beatiful invoice templates</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Accept credit card payments</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Multiple currency & language support</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Open source platform</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Self-hosting available</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Customize payment terms</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Custom invoice fields</div><span class="glyphicon glyphicon-remove"></div>
|
||||
<div class="cell"><div class="hide-desktop">Priority email support</div><span class="glyphicon glyphicon-remove"></div>
|
||||
<div class="cell"><div class="hide-desktop">Custom invoice colors</div><span class="glyphicon glyphicon-remove"></div>
|
||||
<div class="cell"><div class="hide-desktop">Remove "Created by Invoice Ninja"</div><span class="glyphicon glyphicon-remove"></div>
|
||||
<div class="cell price"><div class="hide-desktop">Pricing</div><p>Free<span> /Always!</span></p></div>
|
||||
</div>
|
||||
<div class="pro col-md-4">
|
||||
|
||||
<div class="cell">Pro Plan<span class="glyphicon glyphicon-star"></div>
|
||||
<div class="cell"><div class="hide-desktop">Number of clients per account</div><span style="color: #2299c0; font-size: 16px;">5000</span></div>
|
||||
<div class="cell"><div class="hide-desktop">Number of clients per account</div><span style="color: #2299c0; font-size: 16px;">5,000</span></div>
|
||||
<div class="cell"><div class="hide-desktop">Unlimited client invoices</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Add your company logo</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Live .PDF invoice creation</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">4 beatiful invoice templates</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Accept credit card payments</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Custom invoice fields</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Priority email support</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Custom invoice colors</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Remove "Created by Invoice Ninja"</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Custom invoice fields</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Unlimited client invoices</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Add your company logo</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Live .PDF invoice creation</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">4 beatiful invoice templates</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Accept credit card payments</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Multiple currency & language support</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Open source platform</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Self-hosting available</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell"><div class="hide-desktop">Customize payment terms</div><span class="glyphicon glyphicon-ok"></div>
|
||||
<div class="cell price"><div class="hide-desktop">Pricing</div><p>$50<span> /Year</span></p></div>
|
||||
<div class="cell">
|
||||
<a href="#">
|
||||
<div class="cell price"><div class="hide-desktop">Pricing</div><p>$50<span> /Year</span></p></div>
|
||||
<!--
|
||||
<div class="cell">
|
||||
<a href="#">
|
||||
<div class="cta">
|
||||
<h2 onclick="return getStarted()">GO PRO <span>+</span></h2>
|
||||
</div>
|
||||
-->
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -89,7 +89,8 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p>or {{ link_to('features', 'View Our Features' ) }}</a></p>
|
||||
<!-- <p>or {{ link_to('features', 'View Our Features' ) }}</a></p> -->
|
||||
<p><i>No signup needed</i></p>
|
||||
</div>
|
||||
<div class="col-md-7">
|
||||
<img src="{{ asset('images/devices.png') }}">
|
||||
|
@ -3,7 +3,7 @@
|
||||
@section('head')
|
||||
@parent
|
||||
|
||||
<script src="{{ asset('js/chart.js') }}" type="text/javascript"></script>
|
||||
<script src="{{ asset('js/Chart.js') }}" type="text/javascript"></script>
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
|
@ -2238,6 +2238,66 @@ div.fb_iframe_widget > span {
|
||||
font-size:9px;
|
||||
}
|
||||
|
||||
|
||||
.plans-table {float: none; margin-top: 10px; }
|
||||
.plans-table div {text-align:center; margin: 0 auto; }
|
||||
|
||||
.plans-table .free, .plans-table .desc { padding: 0; }
|
||||
.plans-table .free .cell { padding-right: 15px; }
|
||||
.plans-table .desc .cell { text-align: right; padding-right: 15px; border-left: 1px solid #dfe0e1; font-size: 13px; font-weight: 800; }
|
||||
.plans-table .pro .cell { border-left: 1px solid #cccccc; border-right: 1px solid #cccccc;}
|
||||
|
||||
|
||||
.plans-table .cell {background-color: #fff; border-top: 1px solid #dfe0e1;padding: 18px 0; font-family: Roboto, sans-serif; height: 60px;}
|
||||
.plans-table .cell:nth-child(odd){background-color: #fbfbfb;}
|
||||
.plans-table .pro .cell:nth-child(odd){background-color: #f4f4f4;}
|
||||
.plans-table .pro {
|
||||
background-color: #2299c0;
|
||||
overflow:hidden;
|
||||
padding: 0;
|
||||
-webkit-box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2);
|
||||
-moz-box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2);
|
||||
box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2);
|
||||
}
|
||||
|
||||
.plans-table .free .cell:first-child, .plans-table .pro .cell:first-child {color: #fff; text-transform: uppercase; font-size: 24px; font-weight:800; line-height: 60px; padding: 0; position: relative; bottom: -1px; border: none;}
|
||||
.plans-table .free .cell:first-child {background-color: #9b9b9b; margin-right: 15px; padding-right: 0;}
|
||||
.plans-table .free, .plans-table .desc {border-bottom: 1px solid #dfe0e1;}
|
||||
.plans-table .pro .cell:first-child {background-color: #2299c0;}
|
||||
.plans-table .pro .cell:last-child {padding: 0; border: none;}
|
||||
.plans-table .desc .cell:first-child {background-color: transparent; border: none;}
|
||||
|
||||
.plans-table .glyphicon {color: #fff; border-radius: 50px; padding: 5px; font-size: 10px;}
|
||||
.plans-table .glyphicon-remove {background-color: #da4830;}
|
||||
.plans-table .glyphicon-ok {background-color: #35c156;}
|
||||
.plans-table .glyphicon-star {border-radius: 0; background-color: #2e2b2b;
|
||||
display: block;
|
||||
width: 60px;
|
||||
height: 30px;
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
right: -20px;
|
||||
-webkit-transform: rotate(45deg);
|
||||
-moz-transform: rotate(45deg);
|
||||
-o-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
padding: 13px 0 0 1px;
|
||||
}
|
||||
|
||||
.plans-table .price {padding: 0; }
|
||||
.plans-table .free .price p {color: #35c156;}
|
||||
.plans-table .pro .price p {color: #2299c0;}
|
||||
.plans-table .price p {font-size: 40px; text-transform: uppercase; font-weight: 800; margin: 0; line-height: 55px;}
|
||||
.plans-table .price p span {font-size: 16px; text-transform: none; font-weight: 400;}
|
||||
|
||||
.plans-table a .cta h2 {background: #2299c0; color:#fff; margin: 0;}
|
||||
.plans-table a .cta h2 span {background: #1e84a5;}
|
||||
|
||||
|
||||
@media screen and (min-width: 769px) {
|
||||
.hide-desktop {display: none;}
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.navbar-default .navbar-nav .open .dropdown-menu > li > a {
|
||||
color: #ecf0f1;
|
||||
@ -2246,4 +2306,11 @@ div.fb_iframe_widget > span {
|
||||
.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
.plans-table .cell {height: auto; padding: 14px 0; }
|
||||
.plans-table .free .cell { padding-right: 0; }
|
||||
.plans-table .free .cell:first-child {margin-right: 0;}
|
||||
.plans-table .cell div:first-child {margin-bottom: 5px;}
|
||||
.plans-table .cell .cta {margin-bottom: 0 !important;}
|
||||
.plans-table .pro {margin-top: 40px;}
|
||||
}
|
||||
|
@ -37107,9 +37107,9 @@ function displayInvoiceItems(doc, invoice, layout) {
|
||||
y += 4;
|
||||
|
||||
if (invoice.invoice_design_id == 1) {
|
||||
SetPdfColor('LightBlue', doc);
|
||||
SetPdfColor('LightBlue', doc, 'primary');
|
||||
} else if (invoice.invoice_design_id == 2) {
|
||||
SetPdfColor('SomeGreen', doc);
|
||||
SetPdfColor('SomeGreen', doc, 'primary');
|
||||
} else if (invoice.invoice_design_id == 3) {
|
||||
doc.setFontType('bold');
|
||||
} else {
|
||||
|
@ -641,6 +641,66 @@ div.fb_iframe_widget > span {
|
||||
font-size:9px;
|
||||
}
|
||||
|
||||
|
||||
.plans-table {float: none; margin-top: 10px; }
|
||||
.plans-table div {text-align:center; margin: 0 auto; }
|
||||
|
||||
.plans-table .free, .plans-table .desc { padding: 0; }
|
||||
.plans-table .free .cell { padding-right: 15px; }
|
||||
.plans-table .desc .cell { text-align: right; padding-right: 15px; border-left: 1px solid #dfe0e1; font-size: 13px; font-weight: 800; }
|
||||
.plans-table .pro .cell { border-left: 1px solid #cccccc; border-right: 1px solid #cccccc;}
|
||||
|
||||
|
||||
.plans-table .cell {background-color: #fff; border-top: 1px solid #dfe0e1;padding: 18px 0; font-family: Roboto, sans-serif; height: 60px;}
|
||||
.plans-table .cell:nth-child(odd){background-color: #fbfbfb;}
|
||||
.plans-table .pro .cell:nth-child(odd){background-color: #f4f4f4;}
|
||||
.plans-table .pro {
|
||||
background-color: #2299c0;
|
||||
overflow:hidden;
|
||||
padding: 0;
|
||||
-webkit-box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2);
|
||||
-moz-box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2);
|
||||
box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2);
|
||||
}
|
||||
|
||||
.plans-table .free .cell:first-child, .plans-table .pro .cell:first-child {color: #fff; text-transform: uppercase; font-size: 24px; font-weight:800; line-height: 60px; padding: 0; position: relative; bottom: -1px; border: none;}
|
||||
.plans-table .free .cell:first-child {background-color: #9b9b9b; margin-right: 15px; padding-right: 0;}
|
||||
.plans-table .free, .plans-table .desc {border-bottom: 1px solid #dfe0e1;}
|
||||
.plans-table .pro .cell:first-child {background-color: #2299c0;}
|
||||
.plans-table .pro .cell:last-child {padding: 0; border: none;}
|
||||
.plans-table .desc .cell:first-child {background-color: transparent; border: none;}
|
||||
|
||||
.plans-table .glyphicon {color: #fff; border-radius: 50px; padding: 5px; font-size: 10px;}
|
||||
.plans-table .glyphicon-remove {background-color: #da4830;}
|
||||
.plans-table .glyphicon-ok {background-color: #35c156;}
|
||||
.plans-table .glyphicon-star {border-radius: 0; background-color: #2e2b2b;
|
||||
display: block;
|
||||
width: 60px;
|
||||
height: 30px;
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
right: -20px;
|
||||
-webkit-transform: rotate(45deg);
|
||||
-moz-transform: rotate(45deg);
|
||||
-o-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
padding: 13px 0 0 1px;
|
||||
}
|
||||
|
||||
.plans-table .price {padding: 0; }
|
||||
.plans-table .free .price p {color: #35c156;}
|
||||
.plans-table .pro .price p {color: #2299c0;}
|
||||
.plans-table .price p {font-size: 40px; text-transform: uppercase; font-weight: 800; margin: 0; line-height: 55px;}
|
||||
.plans-table .price p span {font-size: 16px; text-transform: none; font-weight: 400;}
|
||||
|
||||
.plans-table a .cta h2 {background: #2299c0; color:#fff; margin: 0;}
|
||||
.plans-table a .cta h2 span {background: #1e84a5;}
|
||||
|
||||
|
||||
@media screen and (min-width: 769px) {
|
||||
.hide-desktop {display: none;}
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.navbar-default .navbar-nav .open .dropdown-menu > li > a {
|
||||
color: #ecf0f1;
|
||||
@ -649,4 +709,11 @@ div.fb_iframe_widget > span {
|
||||
.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
.plans-table .cell {height: auto; padding: 14px 0; }
|
||||
.plans-table .free .cell { padding-right: 0; }
|
||||
.plans-table .free .cell:first-child {margin-right: 0;}
|
||||
.plans-table .cell div:first-child {margin-bottom: 5px;}
|
||||
.plans-table .cell .cta {margin-bottom: 0 !important;}
|
||||
.plans-table .pro {margin-top: 40px;}
|
||||
}
|
||||
|
@ -1640,9 +1640,9 @@ function displayInvoiceItems(doc, invoice, layout) {
|
||||
y += 4;
|
||||
|
||||
if (invoice.invoice_design_id == 1) {
|
||||
SetPdfColor('LightBlue', doc);
|
||||
SetPdfColor('LightBlue', doc, 'primary');
|
||||
} else if (invoice.invoice_design_id == 2) {
|
||||
SetPdfColor('SomeGreen', doc);
|
||||
SetPdfColor('SomeGreen', doc, 'primary');
|
||||
} else if (invoice.invoice_design_id == 3) {
|
||||
doc.setFontType('bold');
|
||||
} else {
|
||||
|
0
public/vendor/.gitkeep
vendored
0
public/vendor/.gitkeep
vendored
14
public/vendor/accounting/.bower.json
vendored
14
public/vendor/accounting/.bower.json
vendored
@ -1,14 +0,0 @@
|
||||
{
|
||||
"name": "accounting",
|
||||
"homepage": "https://github.com/josscrowcroft/accounting.js",
|
||||
"version": "0.3.2",
|
||||
"_release": "0.3.2",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v0.3.2",
|
||||
"commit": "b14638fbec7a06cc7e87de0d7d7c8ea2a38d67f5"
|
||||
},
|
||||
"_source": "git://github.com/josscrowcroft/accounting.js.git",
|
||||
"_target": "~0.*",
|
||||
"_originalSource": "accounting"
|
||||
}
|
411
public/vendor/accounting/accounting.js
vendored
411
public/vendor/accounting/accounting.js
vendored
@ -1,411 +0,0 @@
|
||||
/*!
|
||||
* accounting.js v0.3.2
|
||||
* Copyright 2011, Joss Crowcroft
|
||||
*
|
||||
* Freely distributable under the MIT license.
|
||||
* Portions of accounting.js are inspired or borrowed from underscore.js
|
||||
*
|
||||
* Full details and documentation:
|
||||
* http://josscrowcroft.github.com/accounting.js/
|
||||
*/
|
||||
|
||||
(function(root, undefined) {
|
||||
|
||||
/* --- Setup --- */
|
||||
|
||||
// Create the local library object, to be exported or referenced globally later
|
||||
var lib = {};
|
||||
|
||||
// Current version
|
||||
lib.version = '0.3.2';
|
||||
|
||||
|
||||
/* --- Exposed settings --- */
|
||||
|
||||
// The library's settings configuration object. Contains default parameters for
|
||||
// currency and number formatting
|
||||
lib.settings = {
|
||||
currency: {
|
||||
symbol : "$", // default currency symbol is '$'
|
||||
format : "%s%v", // controls output: %s = symbol, %v = value (can be object, see docs)
|
||||
decimal : ".", // decimal point separator
|
||||
thousand : ",", // thousands separator
|
||||
precision : 2, // decimal places
|
||||
grouping : 3 // digit grouping (not implemented yet)
|
||||
},
|
||||
number: {
|
||||
precision : 0, // default precision on numbers is 0
|
||||
grouping : 3, // digit grouping (not implemented yet)
|
||||
thousand : ",",
|
||||
decimal : "."
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/* --- Internal Helper Methods --- */
|
||||
|
||||
// Store reference to possibly-available ECMAScript 5 methods for later
|
||||
var nativeMap = Array.prototype.map,
|
||||
nativeIsArray = Array.isArray,
|
||||
toString = Object.prototype.toString;
|
||||
|
||||
/**
|
||||
* Tests whether supplied parameter is a string
|
||||
* from underscore.js
|
||||
*/
|
||||
function isString(obj) {
|
||||
return !!(obj === '' || (obj && obj.charCodeAt && obj.substr));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests whether supplied parameter is a string
|
||||
* from underscore.js, delegates to ECMA5's native Array.isArray
|
||||
*/
|
||||
function isArray(obj) {
|
||||
return nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]';
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests whether supplied parameter is a true object
|
||||
*/
|
||||
function isObject(obj) {
|
||||
return toString.call(obj) === '[object Object]';
|
||||
}
|
||||
|
||||
/**
|
||||
* Extends an object with a defaults object, similar to underscore's _.defaults
|
||||
*
|
||||
* Used for abstracting parameter handling from API methods
|
||||
*/
|
||||
function defaults(object, defs) {
|
||||
var key;
|
||||
object = object || {};
|
||||
defs = defs || {};
|
||||
// Iterate over object non-prototype properties:
|
||||
for (key in defs) {
|
||||
if (defs.hasOwnProperty(key)) {
|
||||
// Replace values with defaults only if undefined (allow empty/zero values):
|
||||
if (object[key] == null) object[key] = defs[key];
|
||||
}
|
||||
}
|
||||
return object;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of `Array.map()` for iteration loops
|
||||
*
|
||||
* Returns a new Array as a result of calling `iterator` on each array value.
|
||||
* Defers to native Array.map if available
|
||||
*/
|
||||
function map(obj, iterator, context) {
|
||||
var results = [], i, j;
|
||||
|
||||
if (!obj) return results;
|
||||
|
||||
// Use native .map method if it exists:
|
||||
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
|
||||
|
||||
// Fallback for native .map:
|
||||
for (i = 0, j = obj.length; i < j; i++ ) {
|
||||
results[i] = iterator.call(context, obj[i], i, obj);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check and normalise the value of precision (must be positive integer)
|
||||
*/
|
||||
function checkPrecision(val, base) {
|
||||
val = Math.round(Math.abs(val));
|
||||
return isNaN(val)? base : val;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parses a format string or object and returns format obj for use in rendering
|
||||
*
|
||||
* `format` is either a string with the default (positive) format, or object
|
||||
* containing `pos` (required), `neg` and `zero` values (or a function returning
|
||||
* either a string or object)
|
||||
*
|
||||
* Either string or format.pos must contain "%v" (value) to be valid
|
||||
*/
|
||||
function checkCurrencyFormat(format) {
|
||||
var defaults = lib.settings.currency.format;
|
||||
|
||||
// Allow function as format parameter (should return string or object):
|
||||
if ( typeof format === "function" ) format = format();
|
||||
|
||||
// Format can be a string, in which case `value` ("%v") must be present:
|
||||
if ( isString( format ) && format.match("%v") ) {
|
||||
|
||||
// Create and return positive, negative and zero formats:
|
||||
return {
|
||||
pos : format,
|
||||
neg : format.replace("-", "").replace("%v", "-%v"),
|
||||
zero : format
|
||||
};
|
||||
|
||||
// If no format, or object is missing valid positive value, use defaults:
|
||||
} else if ( !format || !format.pos || !format.pos.match("%v") ) {
|
||||
|
||||
// If defaults is a string, casts it to an object for faster checking next time:
|
||||
return ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {
|
||||
pos : defaults,
|
||||
neg : defaults.replace("%v", "-%v"),
|
||||
zero : defaults
|
||||
};
|
||||
|
||||
}
|
||||
// Otherwise, assume format was fine:
|
||||
return format;
|
||||
}
|
||||
|
||||
|
||||
/* --- API Methods --- */
|
||||
|
||||
/**
|
||||
* Takes a string/array of strings, removes all formatting/cruft and returns the raw float value
|
||||
* alias: accounting.`parse(string)`
|
||||
*
|
||||
* Decimal must be included in the regular expression to match floats (default: "."), so if the number
|
||||
* uses a non-standard decimal separator, provide it as the second argument.
|
||||
*
|
||||
* Also matches bracketed negatives (eg. "$ (1.99)" => -1.99)
|
||||
*
|
||||
* Doesn't throw any errors (`NaN`s become 0) but this may change in future
|
||||
*/
|
||||
var unformat = lib.unformat = lib.parse = function(value, decimal) {
|
||||
// Recursively unformat arrays:
|
||||
if (isArray(value)) {
|
||||
return map(value, function(val) {
|
||||
return unformat(val, decimal);
|
||||
});
|
||||
}
|
||||
|
||||
// Fails silently (need decent errors):
|
||||
value = value || 0;
|
||||
|
||||
// Return the value as-is if it's already a number:
|
||||
if (typeof value === "number") return value;
|
||||
|
||||
// Default decimal point is "." but could be set to eg. "," in opts:
|
||||
decimal = decimal || ".";
|
||||
|
||||
// Build regex to strip out everything except digits, decimal point and minus sign:
|
||||
var regex = new RegExp("[^0-9-" + decimal + "]", ["g"]),
|
||||
unformatted = parseFloat(
|
||||
("" + value)
|
||||
.replace(/\((.*)\)/, "-$1") // replace bracketed values with negatives
|
||||
.replace(regex, '') // strip out any cruft
|
||||
.replace(decimal, '.') // make sure decimal point is standard
|
||||
);
|
||||
|
||||
// This will fail silently which may cause trouble, let's wait and see:
|
||||
return !isNaN(unformatted) ? unformatted : 0;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Implementation of toFixed() that treats floats more like decimals
|
||||
*
|
||||
* Fixes binary rounding issues (eg. (0.615).toFixed(2) === "0.61") that present
|
||||
* problems for accounting- and finance-related software.
|
||||
*/
|
||||
var toFixed = lib.toFixed = function(value, precision) {
|
||||
precision = checkPrecision(precision, lib.settings.number.precision);
|
||||
var power = Math.pow(10, precision);
|
||||
|
||||
// Multiply up by precision, round accurately, then divide and use native toFixed():
|
||||
return (Math.round(lib.unformat(value) * power) / power).toFixed(precision);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Format a number, with comma-separated thousands and custom precision/decimal places
|
||||
*
|
||||
* Localise by overriding the precision and thousand / decimal separators
|
||||
* 2nd parameter `precision` can be an object matching `settings.number`
|
||||
*/
|
||||
var formatNumber = lib.formatNumber = function(number, precision, thousand, decimal) {
|
||||
// Resursively format arrays:
|
||||
if (isArray(number)) {
|
||||
return map(number, function(val) {
|
||||
return formatNumber(val, precision, thousand, decimal);
|
||||
});
|
||||
}
|
||||
|
||||
// Clean up number:
|
||||
number = unformat(number);
|
||||
|
||||
// Build options object from second param (if object) or all params, extending defaults:
|
||||
var opts = defaults(
|
||||
(isObject(precision) ? precision : {
|
||||
precision : precision,
|
||||
thousand : thousand,
|
||||
decimal : decimal
|
||||
}),
|
||||
lib.settings.number
|
||||
),
|
||||
|
||||
// Clean up precision
|
||||
usePrecision = checkPrecision(opts.precision),
|
||||
|
||||
// Do some calc:
|
||||
negative = number < 0 ? "-" : "",
|
||||
base = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + "",
|
||||
mod = base.length > 3 ? base.length % 3 : 0;
|
||||
|
||||
// Format the number:
|
||||
return negative + (mod ? base.substr(0, mod) + opts.thousand : "") + base.substr(mod).replace(/(\d{3})(?=\d)/g, "$1" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : "");
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Format a number into currency
|
||||
*
|
||||
* Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)
|
||||
* defaults: (0, "$", 2, ",", ".", "%s%v")
|
||||
*
|
||||
* Localise by overriding the symbol, precision, thousand / decimal separators and format
|
||||
* Second param can be an object matching `settings.currency` which is the easiest way.
|
||||
*
|
||||
* To do: tidy up the parameters
|
||||
*/
|
||||
var formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {
|
||||
// Resursively format arrays:
|
||||
if (isArray(number)) {
|
||||
return map(number, function(val){
|
||||
return formatMoney(val, symbol, precision, thousand, decimal, format);
|
||||
});
|
||||
}
|
||||
|
||||
// Clean up number:
|
||||
number = unformat(number);
|
||||
|
||||
// Build options object from second param (if object) or all params, extending defaults:
|
||||
var opts = defaults(
|
||||
(isObject(symbol) ? symbol : {
|
||||
symbol : symbol,
|
||||
precision : precision,
|
||||
thousand : thousand,
|
||||
decimal : decimal,
|
||||
format : format
|
||||
}),
|
||||
lib.settings.currency
|
||||
),
|
||||
|
||||
// Check format (returns object with pos, neg and zero):
|
||||
formats = checkCurrencyFormat(opts.format),
|
||||
|
||||
// Choose which format to use for this value:
|
||||
useFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;
|
||||
|
||||
// Return with currency symbol added:
|
||||
return useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Format a list of numbers into an accounting column, padding with whitespace
|
||||
* to line up currency symbols, thousand separators and decimals places
|
||||
*
|
||||
* List should be an array of numbers
|
||||
* Second parameter can be an object containing keys that match the params
|
||||
*
|
||||
* Returns array of accouting-formatted number strings of same length
|
||||
*
|
||||
* NB: `white-space:pre` CSS rule is required on the list container to prevent
|
||||
* browsers from collapsing the whitespace in the output strings.
|
||||
*/
|
||||
lib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {
|
||||
if (!list) return [];
|
||||
|
||||
// Build options object from second param (if object) or all params, extending defaults:
|
||||
var opts = defaults(
|
||||
(isObject(symbol) ? symbol : {
|
||||
symbol : symbol,
|
||||
precision : precision,
|
||||
thousand : thousand,
|
||||
decimal : decimal,
|
||||
format : format
|
||||
}),
|
||||
lib.settings.currency
|
||||
),
|
||||
|
||||
// Check format (returns object with pos, neg and zero), only need pos for now:
|
||||
formats = checkCurrencyFormat(opts.format),
|
||||
|
||||
// Whether to pad at start of string or after currency symbol:
|
||||
padAfterSymbol = formats.pos.indexOf("%s") < formats.pos.indexOf("%v") ? true : false,
|
||||
|
||||
// Store value for the length of the longest string in the column:
|
||||
maxLength = 0,
|
||||
|
||||
// Format the list according to options, store the length of the longest string:
|
||||
formatted = map(list, function(val, i) {
|
||||
if (isArray(val)) {
|
||||
// Recursively format columns if list is a multi-dimensional array:
|
||||
return lib.formatColumn(val, opts);
|
||||
} else {
|
||||
// Clean up the value
|
||||
val = unformat(val);
|
||||
|
||||
// Choose which format to use for this value (pos, neg or zero):
|
||||
var useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,
|
||||
|
||||
// Format this value, push into formatted list and save the length:
|
||||
fVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));
|
||||
|
||||
if (fVal.length > maxLength) maxLength = fVal.length;
|
||||
return fVal;
|
||||
}
|
||||
});
|
||||
|
||||
// Pad each number in the list and send back the column of numbers:
|
||||
return map(formatted, function(val, i) {
|
||||
// Only if this is a string (not a nested array, which would have already been padded):
|
||||
if (isString(val) && val.length < maxLength) {
|
||||
// Depending on symbol position, pad after symbol or at index 0:
|
||||
return padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(" "))) : (new Array(maxLength - val.length + 1).join(" ")) + val;
|
||||
}
|
||||
return val;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/* --- Module Definition --- */
|
||||
|
||||
// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.
|
||||
// Otherwise, just add `accounting` to the global object
|
||||
if (typeof exports !== 'undefined') {
|
||||
if (typeof module !== 'undefined' && module.exports) {
|
||||
exports = module.exports = lib;
|
||||
}
|
||||
exports.accounting = lib;
|
||||
} else if (typeof define === 'function' && define.amd) {
|
||||
// Return the library as an AMD module:
|
||||
define([], function() {
|
||||
return lib;
|
||||
});
|
||||
} else {
|
||||
// Use accounting.noConflict to restore `accounting` back to its original value.
|
||||
// Returns a reference to the library's `accounting` object;
|
||||
// e.g. `var numbers = accounting.noConflict();`
|
||||
lib.noConflict = (function(oldAccounting) {
|
||||
return function() {
|
||||
// Reset the value of the root's `accounting` variable:
|
||||
root.accounting = oldAccounting;
|
||||
// Delete the noConflict method:
|
||||
lib.noConflict = undefined;
|
||||
// Return reference to the library to re-assign it:
|
||||
return lib;
|
||||
};
|
||||
})(root.accounting);
|
||||
|
||||
// Declare `fx` on the root (global/window) object:
|
||||
root['accounting'] = lib;
|
||||
}
|
||||
|
||||
// Root will be `window` in browser or `global` on the server:
|
||||
}(this));
|
4
public/vendor/accounting/accounting.min.js
vendored
4
public/vendor/accounting/accounting.min.js
vendored
@ -1,4 +0,0 @@
|
||||
/*!
|
||||
* accounting.js v0.3.2, copyright 2011 Joss Crowcroft, MIT license, http://josscrowcroft.github.com/accounting.js
|
||||
*/
|
||||
(function(p,z){function q(a){return!!(""===a||a&&a.charCodeAt&&a.substr)}function m(a){return u?u(a):"[object Array]"===v.call(a)}function r(a){return"[object Object]"===v.call(a)}function s(a,b){var d,a=a||{},b=b||{};for(d in b)b.hasOwnProperty(d)&&null==a[d]&&(a[d]=b[d]);return a}function j(a,b,d){var c=[],e,h;if(!a)return c;if(w&&a.map===w)return a.map(b,d);for(e=0,h=a.length;e<h;e++)c[e]=b.call(d,a[e],e,a);return c}function n(a,b){a=Math.round(Math.abs(a));return isNaN(a)?b:a}function x(a){var b=c.settings.currency.format;"function"===typeof a&&(a=a());return q(a)&&a.match("%v")?{pos:a,neg:a.replace("-","").replace("%v","-%v"),zero:a}:!a||!a.pos||!a.pos.match("%v")?!q(b)?b:c.settings.currency.format={pos:b,neg:b.replace("%v","-%v"),zero:b}:a}var c={version:"0.3.2",settings:{currency:{symbol:"$",format:"%s%v",decimal:".",thousand:",",precision:2,grouping:3},number:{precision:0,grouping:3,thousand:",",decimal:"."}}},w=Array.prototype.map,u=Array.isArray,v=Object.prototype.toString,o=c.unformat=c.parse=function(a,b){if(m(a))return j(a,function(a){return o(a,b)});a=a||0;if("number"===typeof a)return a;var b=b||".",c=RegExp("[^0-9-"+b+"]",["g"]),c=parseFloat((""+a).replace(/\((.*)\)/,"-$1").replace(c,"").replace(b,"."));return!isNaN(c)?c:0},y=c.toFixed=function(a,b){var b=n(b,c.settings.number.precision),d=Math.pow(10,b);return(Math.round(c.unformat(a)*d)/d).toFixed(b)},t=c.formatNumber=function(a,b,d,i){if(m(a))return j(a,function(a){return t(a,b,d,i)});var a=o(a),e=s(r(b)?b:{precision:b,thousand:d,decimal:i},c.settings.number),h=n(e.precision),f=0>a?"-":"",g=parseInt(y(Math.abs(a||0),h),10)+"",l=3<g.length?g.length%3:0;return f+(l?g.substr(0,l)+e.thousand:"")+g.substr(l).replace(/(\d{3})(?=\d)/g,"$1"+e.thousand)+(h?e.decimal+y(Math.abs(a),h).split(".")[1]:"")},A=c.formatMoney=function(a,b,d,i,e,h){if(m(a))return j(a,function(a){return A(a,b,d,i,e,h)});var a=o(a),f=s(r(b)?b:{symbol:b,precision:d,thousand:i,decimal:e,format:h},c.settings.currency),g=x(f.format);return(0<a?g.pos:0>a?g.neg:g.zero).replace("%s",f.symbol).replace("%v",t(Math.abs(a),n(f.precision),f.thousand,f.decimal))};c.formatColumn=function(a,b,d,i,e,h){if(!a)return[];var f=s(r(b)?b:{symbol:b,precision:d,thousand:i,decimal:e,format:h},c.settings.currency),g=x(f.format),l=g.pos.indexOf("%s")<g.pos.indexOf("%v")?!0:!1,k=0,a=j(a,function(a){if(m(a))return c.formatColumn(a,f);a=o(a);a=(0<a?g.pos:0>a?g.neg:g.zero).replace("%s",f.symbol).replace("%v",t(Math.abs(a),n(f.precision),f.thousand,f.decimal));if(a.length>k)k=a.length;return a});return j(a,function(a){return q(a)&&a.length<k?l?a.replace(f.symbol,f.symbol+Array(k-a.length+1).join(" ")):Array(k-a.length+1).join(" ")+a:a})};if("undefined"!==typeof exports){if("undefined"!==typeof module&&module.exports)exports=module.exports=c;exports.accounting=c}else"function"===typeof define&&define.amd?define([],function(){return c}):(c.noConflict=function(a){return function(){p.accounting=a;c.noConflict=z;return c}}(p.accounting),p.accounting=c)})(this);
|
File diff suppressed because one or more lines are too long
@ -1,28 +0,0 @@
|
||||
var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
|
||||
(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
|
||||
[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
|
||||
f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
|
||||
(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
|
||||
{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
|
||||
t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
|
||||
"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
|
||||
l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
|
||||
q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
|
||||
q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
|
||||
"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
|
||||
a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
|
||||
for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
|
||||
m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
|
||||
a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
|
||||
j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
|
||||
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
|
||||
H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
|
||||
J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
|
||||
I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
|
||||
["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
|
||||
/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
|
||||
["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
|
||||
hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
|
||||
!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
|
||||
250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
|
||||
PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
|
186
public/vendor/accounting/demo-resources/style.css
vendored
186
public/vendor/accounting/demo-resources/style.css
vendored
@ -1,186 +0,0 @@
|
||||
/* Borrowed from Markdown.css: http://kevinburke.bitbucket.org/markdowncss/markdown.css */
|
||||
body{
|
||||
margin: 0 auto;
|
||||
font-family: Georgia, Palatino, serif;
|
||||
color: #444444;
|
||||
line-height: 1;
|
||||
max-width: 960px;
|
||||
padding: 30px;
|
||||
}
|
||||
h1, h2, h3, h4 {
|
||||
color: #111111;
|
||||
font-weight: 400;
|
||||
}
|
||||
h1, h2, h3, h4, h5, p, ul, ol {
|
||||
margin-bottom: 24px;
|
||||
padding: 0;
|
||||
}
|
||||
h1 {
|
||||
font-size: 48px;
|
||||
}
|
||||
h2 {
|
||||
font-size: 36px;
|
||||
margin: 24px 0 6px;
|
||||
}
|
||||
h3 {
|
||||
font-size: 24px;
|
||||
}
|
||||
h4 {
|
||||
font-size: 21px;
|
||||
}
|
||||
h5 {
|
||||
font-size: 18px;
|
||||
}
|
||||
a {
|
||||
color: #0099ff;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
li {
|
||||
line-height: 24px;
|
||||
}
|
||||
li ul, li ul {
|
||||
margin-left: 24px;
|
||||
}
|
||||
p, ul, ol {
|
||||
font-size: 16px;
|
||||
line-height: 24px;
|
||||
max-width: 540px;
|
||||
}
|
||||
pre {
|
||||
padding: 0px 24px;
|
||||
max-width: 800px;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
code {
|
||||
font-family: Consolas, Monaco, Andale Mono, monospace;
|
||||
line-height: 1.5;
|
||||
font-size: 13px;
|
||||
}
|
||||
aside {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 390px;
|
||||
}
|
||||
blockquote {
|
||||
margin: 1em 2em;
|
||||
max-width: 476px;
|
||||
}
|
||||
blockquote p {
|
||||
color: #666;
|
||||
max-width: 460px;
|
||||
}
|
||||
hr {
|
||||
margin: 0;
|
||||
padding:0;
|
||||
border:0;
|
||||
outline:0;
|
||||
height:2px;
|
||||
background: #bbb;
|
||||
}
|
||||
|
||||
|
||||
/* Some overrides: */
|
||||
/* Thx to http://twitter.github.com/bootstrap/ */
|
||||
|
||||
h1 { font-size:40px; }
|
||||
h2 { font-size:30px; }
|
||||
h3 { font-size:22px; }
|
||||
h4 { font-size:18px; padding-top:10px;}
|
||||
h5 { font-size:1em; margin-bottom:1em; }
|
||||
p, ul, ol { max-width: 580px; }
|
||||
ol, ul { padding-left:24px; font-size:0.85em }
|
||||
ol#list { font-size:1em }
|
||||
a:hover, a:focus { outline:none; color:#e25525 }
|
||||
|
||||
section {
|
||||
padding:0 0 10px;
|
||||
}
|
||||
table{width:100%;margin-bottom:18px;padding:0;text-align:left;border-collapse:separate;font-size:13px;}table th,table td{padding:10px 10px 9px;line-height:13.5px;vertical-align:middle;border-bottom:1px solid #ddd;}
|
||||
table th{padding-top:9px;font-weight:bold;border-bottom-width:2px;}
|
||||
|
||||
td {
|
||||
white-space:pre;
|
||||
font-family:monospace;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: whiteSmoke;
|
||||
display: block;
|
||||
padding: 17px;
|
||||
margin: 0 0 22px;
|
||||
line-height: 18px;
|
||||
border: 1px solid rgba(0, 0, 0, 0.15);
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
white-space: pre-wrap;
|
||||
overflow:hidden;
|
||||
}
|
||||
code, pre {
|
||||
padding: 0 3px 2px;
|
||||
font-family: Consolas, Monaco, "Andale Mono", "Courier New", monospace;
|
||||
font-size: 13px;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
pre.prettyprint {
|
||||
background: #fefbf3;
|
||||
padding: 9px;
|
||||
border: 1px solid rgba(0,0,0,.2);
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.1);
|
||||
-moz-box-shadow: 0 1px 2px rgba(0,0,0,.1);
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,.1);
|
||||
}
|
||||
|
||||
.pln{color:#222}
|
||||
@media screen{
|
||||
.str{color:#080}
|
||||
.kwd{color:#008}
|
||||
.com{color:#800}
|
||||
.typ{color:#606}
|
||||
.lit{color:#066}
|
||||
.pun,
|
||||
.opn,
|
||||
.clo{color:#660}
|
||||
.tag{color:#008}
|
||||
.atn{color:#606}
|
||||
.atv{color:#080}
|
||||
.dec,
|
||||
.var{color:#606}
|
||||
.fun{color:red}
|
||||
}
|
||||
@media print,projection{
|
||||
.str{color:#060}
|
||||
.kwd{color:#006;font-weight:bold}
|
||||
.com{color:#600;font-style:italic}
|
||||
.typ{color:#404;font-weight:bold}
|
||||
.lit{color:#044}
|
||||
.pun,
|
||||
.opn,
|
||||
.clo{color:#440}
|
||||
.tag{color:#006;font-weight:bold}
|
||||
.atn{color:#404}
|
||||
.atv{color:#060}
|
||||
}
|
||||
|
||||
|
||||
div.well {
|
||||
background: whiteSmoke;
|
||||
margin: 20px 0;
|
||||
padding: 5px 12px;
|
||||
min-height: 20px;
|
||||
border: 1px solid #DDD;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.well p {
|
||||
max-width:100%;
|
||||
}
|
432
public/vendor/accounting/index.html
vendored
432
public/vendor/accounting/index.html
vendored
@ -1,432 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>accounting.js - format money / currency in JavaScript</title>
|
||||
<link href="demo-resources/style.css" rel="stylesheet"/>
|
||||
<link rel="canonical" href="http://josscrowcroft.github.com/accounting.js/" />
|
||||
<script type="text/javascript">
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', 'UA-17884149-3']);
|
||||
_gaq.push(['_trackPageview']);
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<section>
|
||||
<h1>accounting.js</h1>
|
||||
<p><strong>accounting.js</strong> is a tiny JavaScript library for number, money and currency formatting, with optional excel-style column rendering (to line up symbols and decimals). It's lightweight, fully localisable and has zero dependencies.</p>
|
||||
<p><a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="josscrowcroft" data-url="http://josscrowcroft.github.com/accounting.js" data-text="accounting.js - JavaScript library for money/currency formatting">Tweet</a> <g:plusone size="medium"></g:plusone></p>
|
||||
<ul>
|
||||
<li><a href="#methods" title="library methods overvew">methods & examples</a>
|
||||
<li><a href="#demo" title="demo">demo</a>
|
||||
<li><a href="#instructions" title="instructions">instructions</a>
|
||||
<li><a href="#documentation" title="documentation">documentation</a>
|
||||
<li><a href="#roadmap" title="roadmap">roadmap</a>
|
||||
<li><a href="#support" title="support">feedback / support</a>
|
||||
<li><a href="#download" title="download">download</a>
|
||||
<li><a href="#moar" title="moar info">moar info</a>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section id="methods">
|
||||
<h2>Library Methods</h2>
|
||||
<h4><strong>formatMoney()</strong> - format any number into currency</h4>
|
||||
<p>The most basic function of this library is money-formatting numbers, with currency symbol, precision (places), and thousand/decimal separators:</p>
|
||||
<pre class="prettyprint lang-js">// Default usage:
|
||||
accounting.formatMoney(12345678); // $12,345,678.00
|
||||
|
||||
// European formatting (custom symbol and separators), could also use options object as second param:
|
||||
accounting.formatMoney(4999.99, "€", 2, ".", ","); // €4.999,99
|
||||
|
||||
// Negative values are formatted nicely, too:
|
||||
accounting.formatMoney(-500000, "£ ", 0); // £ -500,000
|
||||
|
||||
// Simple `format` string allows control of symbol position [%v = value, %s = symbol]:
|
||||
accounting.formatMoney(5318008, { symbol: "GBP", format: "%v %s" }); // 5,318,008.00 GBP</pre>
|
||||
<h4><strong>formatColumn()</strong> - format a list of values for column-display</h4>
|
||||
<p>This table demonstrates how <strong>accounting.js</strong> can take a list of numbers and money-format them with padding to line up currency symbols and decimal places (NB: <code>white-space:pre</code> is needed for the browser to render the padded spaces):</p>
|
||||
<table id="demo-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Original Number:</th>
|
||||
<th>With accounting.js:</th>
|
||||
<th>Different settings:</th>
|
||||
<th>European format:</th>
|
||||
<th>Symbol after value:</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
<pre class="prettyprint lang-js">// Format list of numbers for display:
|
||||
accounting.formatColumn([123.5, 3456.49, 777888.99, 12345678, -5432], "$ ");</pre>
|
||||
|
||||
<h4><strong>formatNumber()</strong> - format a number with custom precision and localisation</h4>
|
||||
<p>The base function of the library, which takes any number or array of numbers, runs <code>accounting.unformat()</code> to remove any formatting, and returns the number(s) formatted with separated thousands and custom precision:</p>
|
||||
<pre class="prettyprint lang-js">accounting.formatNumber(5318008); // 5,318,008
|
||||
accounting.formatNumber(9876543.21, 3, " "); // 9 876 543.210</pre>
|
||||
|
||||
<h4><strong>toFixed()</strong> - better rounding for floating point numbers</h4>
|
||||
<p>Implementation of toFixed() that treats floats more like decimal values than binary, fixing inconsistent precision rounding in JavaScript (where some .05 values round up, while others round down):</p>
|
||||
<pre class="prettyprint lang-js">(0.615).toFixed(2); // "0.61"
|
||||
accounting.toFixed(0.615, 2); // "0.62"</pre>
|
||||
|
||||
<h4><strong>unformat()</strong> - get a value from any formatted number/currency string</h4>
|
||||
<p>Takes any number and removes all currency formatting:</p>
|
||||
<pre class="prettyprint lang-js">accounting.unformat("£ 12,345,678.90 GBP"); // 12345678.9</pre>
|
||||
</section>
|
||||
|
||||
<section id="demo">
|
||||
<h2>Demo / Try it out</h2>
|
||||
|
||||
<h4>Money formatting:</h4>
|
||||
<div class="well">
|
||||
<p>Enter any number into the box and choose currency. Uses <code>accounting.formatMoney()</code>:</p>
|
||||
<p>
|
||||
<select id="demo-number-symbol">
|
||||
<option value="$ ">$</option>
|
||||
<option value="£ ">£</option>
|
||||
<option value="HK$ ">HK$</option>
|
||||
<option data-locale="european" value="€ ">€ </option>
|
||||
</select>
|
||||
<input type="text" maxlength="20" class="" id="demo-number-value" value="" />
|
||||
</p>
|
||||
<p>Result: <strong><span id="demo-number-result">$ 0.00</span></strong></p>
|
||||
</div>
|
||||
|
||||
<h4>Column formatting:</h4>
|
||||
<div class="well">
|
||||
<p>Edit the values in the table to see how <strong>formatColumn()</strong> keeps them aligned:</p>
|
||||
<table id="demo-column">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><input type="text" value="1000000" maxlength="20" /></td>
|
||||
<td class="output">$ 1,000,000.00</td>
|
||||
<td class="output2">GBP 1,000,000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="text" value="-5000" maxlength="20" /></td>
|
||||
<td class="output">$ -5,000.00</td>
|
||||
<td class="output2">GBP (5,000)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="text" value="0" maxlength="20" /></td>
|
||||
<td class="output">$ 0.00</td>
|
||||
<td class="output2">GBP --</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<section id="instructions">
|
||||
<h2>Instructions / How to use</h2>
|
||||
<p>1. Download the script and put it somewhere, then do this:</p>
|
||||
<pre class="prettyprint"><script src="path/to/accounting.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
// You can do this now:
|
||||
accounting.formatMoney(5318008);
|
||||
</script></pre>
|
||||
<p>2. Check out the documentation and source-code for full method/parameter info if you get stuck.</p>
|
||||
</section>
|
||||
|
||||
|
||||
<section id="documentation">
|
||||
<h2>Documentation</h2>
|
||||
<p>Information on the parameters of each method. See <a href="#methods" title="accounting.js library methods">library methods</a> above for more examples. Optional parameters are in <code><em>[italics]</em></code>, with the default value indicated.</p>
|
||||
|
||||
|
||||
<h4><strong>accounting.settings</strong></h4>
|
||||
<pre class="prettyprint lang-js">// Settings object that controls default parameters for library methods:
|
||||
accounting.settings = {
|
||||
currency: {
|
||||
symbol : "$", // default currency symbol is '$'
|
||||
format: "%s%v", // controls output: %s = symbol, %v = value/number (can be object: see below)
|
||||
decimal : ".", // decimal point separator
|
||||
thousand: ",", // thousands separator
|
||||
precision : 2 // decimal places
|
||||
},
|
||||
number: {
|
||||
precision : 0, // default precision on numbers is 0
|
||||
thousand: ",",
|
||||
decimal : "."
|
||||
}
|
||||
}
|
||||
|
||||
// These can be changed externally to edit the library's defaults:
|
||||
accounting.settings.currency.format = "%s %v";
|
||||
|
||||
// Format can be an object, with `pos`, `neg` and `zero`:
|
||||
accounting.settings.currency.format = {
|
||||
pos : "%s %v", // for positive values, eg. "$ 1.00" (required)
|
||||
neg : "%s (%v)", // for negative values, eg. "$ (1.00)" <em>[optional]</em>
|
||||
zero: "%s -- " // for zero values, eg. "$ --" <em>[optional]</em>
|
||||
};
|
||||
|
||||
// Example using underscore.js - extend default settings (also works with $.extend in jQuery):
|
||||
accounting.settings.number = _.defaults({
|
||||
precision: 2,
|
||||
thousand: " "
|
||||
}, accounting.settings.number);</pre>
|
||||
|
||||
|
||||
<h4><strong>accounting.formatMoney()</strong></h4>
|
||||
<pre class="prettyprint lang-js">// Standard usage and parameters (returns string):
|
||||
accounting.formatMoney(number<em>,[symbol = "$"],[precision = 2],[thousand = ","],[decimal = "."],[format = "%s%v"]</em>)
|
||||
|
||||
// Second parameter can be an object:
|
||||
accounting.formatMoney(number<em>, [options]</em>)
|
||||
|
||||
// Available fields in options object, matching `settings.currency`:
|
||||
var options = {
|
||||
symbol : "$",
|
||||
decimal : ".",
|
||||
thousand: ",",
|
||||
precision : 2,
|
||||
format: "%s%v"
|
||||
};
|
||||
|
||||
// Example usage:
|
||||
accounting.formatMoney(12345678); // $12,345,678.00
|
||||
accounting.formatMoney(4999.99, "€", 2, ".", ","); // €4.999,99
|
||||
accounting.formatMoney(-500000, "£ ", 0); // £ -500,000
|
||||
|
||||
// Example usage with options object:
|
||||
accounting.formatMoney(5318008, {
|
||||
symbol: "GBP",
|
||||
precision: 0,
|
||||
thousand: "·",
|
||||
format: {
|
||||
pos : "%s %v",
|
||||
neg : "%s (%v)",
|
||||
zero: "%s --"
|
||||
}
|
||||
});
|
||||
|
||||
// Will recursively format an array of values:
|
||||
accounting.formatMoney([123, 456, [78, 9]], "$", 0); // ["$123", "$456", ["$78", "$9"]]</pre>
|
||||
|
||||
|
||||
|
||||
<h4><strong>accounting.formatColumn()</strong></h4>
|
||||
<pre class="prettyprint lang-js">// Standard usage and parameters (returns array):
|
||||
accounting.formatColumn(list<em>, [symbol = "$"],[precision = 2],[thousand = ","],[decimal = "."],[format = "%s%v"]</em>)
|
||||
|
||||
// Second parameter can be an object (see formatNumber for available options):
|
||||
accounting.formatColumn(list, <em>[options]</em>)
|
||||
|
||||
// Example usage (NB. use a space after the symbol to add arbitrary padding to all values):
|
||||
var list = [123, 12345];
|
||||
accounting.formatColumn(list, "$ ", 0); // ["$ 123", "$ 12,345"]
|
||||
|
||||
// List of numbers can be a multi-dimensional array (formatColumn is applied recursively):
|
||||
var list = [[1, 100], [900, 9]];
|
||||
accounting.formatColumn(list); // [["$ 1.00", "$100.00"], ["$900.00", "$ 9.00"]]</pre>
|
||||
|
||||
|
||||
<h4><strong>accounting.formatNumber()</strong></h4>
|
||||
<pre class="prettyprint lang-js">// Standard usage and parameters (returns string):
|
||||
accounting.formatNumber(number<em>, [precision = 0], [thousand = ","], [decimal = "."]</em>)
|
||||
|
||||
// Second parameter can also be an object matching `settings.number`:
|
||||
accounting.formatNumber(number<em>, [object]</em>)
|
||||
|
||||
// Example usage:
|
||||
accounting.formatNumber(9876543); // 9,876,543
|
||||
accounting.formatNumber(4999.99, 2, ".", ","); // 4.999,99
|
||||
|
||||
// Example usage with options object:
|
||||
accounting.formatNumber(5318008, {
|
||||
precision : 3,
|
||||
thousand : " "
|
||||
});
|
||||
|
||||
// Will recursively format an array of values:
|
||||
accounting.formatNumber([123456, [7890, 123]]); // ["123,456", ["7,890", "123"]]</pre>
|
||||
|
||||
|
||||
<h4><strong>accounting.toFixed()</strong></h4>
|
||||
<pre class="prettyprint lang-js">// Standard usage and parameters (returns string):
|
||||
accounting.toFixed(number<em>, [precision = 0]</em>);
|
||||
|
||||
// Example usage:
|
||||
accounting.toFixed(0.615, 2); // "0.62"
|
||||
|
||||
// Compare to regular JavaScript `Number.toFixed()` method:
|
||||
(0.615).toFixed(2); // "0.61"</pre>
|
||||
|
||||
|
||||
<h4><strong>accounting.unformat()</strong></h4>
|
||||
<pre class="prettyprint lang-js">// Standard usage and parameters (returns number):
|
||||
accounting.unformat(string<em>, [decimal]</em>);
|
||||
|
||||
// Example usage:
|
||||
accounting.unformat("GBP £ 12,345,678.90"); // 12345678.9
|
||||
|
||||
// If a non-standard decimal separator was used (eg. a comma) unformat() will need it in order to work out
|
||||
// which part of the number is a decimal/float:
|
||||
accounting.unformat("€ 1.000.000,00", ","); // 1000000</pre>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section id="roadmap">
|
||||
<h2>Roadmap</h2>
|
||||
<p>See the <a href="https://github.com/josscrowcroft/accounting.js/issues" title="accounting.js issues">Github Issues page</a> for up-to-date progress.</p>
|
||||
<h4>Next Version:</h4>
|
||||
<ul>
|
||||
<li><s>Add more fine-grained control of formatting, with negatives and zero-values</s></li>
|
||||
<li><s>Implement <code>map()</code> and type-checking helper methods to clean up API methods</s></li>
|
||||
<li>Find performance bottlenecks and work on speed optimisations</li>
|
||||
<li>Write more tests, docs and examples, add FAQ</li>
|
||||
<li>Implement <a href="https://github.com/josscrowcroft/accounting.js/issues/" title="accounting.js issues">feedback</a></li>
|
||||
</ul>
|
||||
<h4>Later:</h4>
|
||||
<ul>
|
||||
<li>Add padding parameter to override amount of space between currency symbol and value.</li>
|
||||
<li>Add digit-grouping control, to allow eg. "$10,0000"</li>
|
||||
<li>Add choice of rounding method for precision (up, down or nearest-neighbour).</li>
|
||||
<li>Add several other general and excel-style money formatting methods.</li>
|
||||
<li>Create NPM package, if there's demand for it.</li>
|
||||
<li>Create wrapper for jQuery as a separate plugin (not in core) to allow eg. <code>$('td.accounting').formatMoney()</code></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section id="support">
|
||||
<h2>Feedback / Support</h2>
|
||||
<p>Please create issues on the <a href="https://github.com/josscrowcroft/accounting.js" title="accounting.js Github repository">accounting.js Github repository</a> if you have feedback or need support, or comment on <a href="http://www.josscrowcroft.com" title="Joss">Joss's blog</a>.</p>
|
||||
</section>
|
||||
|
||||
<section id="download">
|
||||
<h2>Download</h2>
|
||||
<ul>
|
||||
<li><strong><a href="https://raw.github.com/josscrowcroft/accounting.js/master/accounting.js" title="accounting.js">accounting.js</a></strong> - Latest version from Github (12kb)</li>
|
||||
<li><strong><a href="https://raw.github.com/josscrowcroft/accounting.js/master/accounting.min.js" title="accounting.min.js">accounting.min.js</a></strong> - Latest version from Github (3kb, minified)</li>
|
||||
<li>Or check out the <a href="https://github.com/josscrowcroft/accounting.js" title="accounting.js Github repository">accounting.js Github repository</a> for the full package.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section id="moar">
|
||||
<br />
|
||||
<hr />
|
||||
<p><a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="josscrowcroft" data-url="http://josscrowcroft.github.com/accounting.js" data-text="accounting.js - JavaScript library for money/currency formatting">Tweet</a> <g:plusone size="medium"></g:plusone></p>
|
||||
<h3>Moar Info</h3>
|
||||
<p><small><strong>accounting.js</strong> was made by <a href="http://www.josscrowcroft.com" title="Joss">Joss</a> (that's me) in Hong Kong, for internal use in our enterprise analytics application at <a href="http://demandanalytics.com" title="Demand Analytics">Demand Analytics</a>. It seemed to be working pretty well, so I'm releasing it in the hope that other people and apps can make use of and contribute to it.</small></p>
|
||||
<p><small>You can follow me on Twitter at <a href="http://twitter.com/josscrowcroft" title="@josscrowcroft on Twitter">@josscrowcroft</a>, I mostly post about JS, HTML5, startups, Hong Kong and things I've built.</small></p>
|
||||
<p><small>Any questions? Just email me <a href="http://www.josscrowcroft.com/contact/" title="Contact Joss">here</a> or post on the <a href="https://github.com/josscrowcroft/accounting.js" title="accounting.js Github repository">accounting.js Github repository</a>.</small></p>
|
||||
</section>
|
||||
|
||||
|
||||
<script src="accounting.js"></script>
|
||||
<script src="demo-resources/js/libs/jquery.min.js"></script>
|
||||
<script src="demo-resources/js/prettify.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
// demo thangs:
|
||||
jQuery(document).ready(function($) {
|
||||
var numbers = [123.5, 3456.615, 777888.99, -5432, -1234567, 0];
|
||||
// Use accounting.js to format the list of numbers several ways:
|
||||
var formatted = accounting.formatColumn(numbers, "$ "),
|
||||
different = accounting.formatColumn(numbers, {
|
||||
symbol:"HK$",
|
||||
precision:0,
|
||||
format: {
|
||||
pos : "%s %v",
|
||||
neg : "%s (%v)",
|
||||
zero : "%s --"
|
||||
}
|
||||
}),
|
||||
european = accounting.formatColumn(numbers, {
|
||||
symbol: '€ ',
|
||||
thousand:'.',
|
||||
decimal:','
|
||||
}),
|
||||
symbolAfter = accounting.formatColumn(numbers, {
|
||||
symbol : "GBP",
|
||||
format : "%v %s"
|
||||
});
|
||||
|
||||
// Concat some nasty demo HTML:
|
||||
for ( var i = 0; i < numbers.length; i++ ) {
|
||||
$('<tr><td>'+numbers[i]+'</td><td>'+formatted[i]+'</td><td>'+different[i]+'</td><td>'+european[i]+'</td><td>'+symbolAfter[i]+'</td></tr>').appendTo('table#demo-table tbody');
|
||||
}
|
||||
|
||||
|
||||
// Try it yourself clicky demo:
|
||||
var $demoValue = $('#demo-number-value'),
|
||||
$demoSymbol = $('#demo-number-symbol'),
|
||||
$demoResult = $('#demo-number-result');
|
||||
|
||||
$demoValue.add($demoSymbol).bind('keydown keyup keypress focus blur paste change', function() {
|
||||
var symbol = $demoSymbol.find(':selected').val(),
|
||||
result = accounting.formatMoney(
|
||||
$demoValue.val(),
|
||||
symbol,
|
||||
2,
|
||||
($demoSymbol.find(':selected').data('locale') === 'european') ? "." : ",",
|
||||
($demoSymbol.find(':selected').data('locale') === 'european') ? "," : "."
|
||||
);
|
||||
$demoResult.text(result);
|
||||
});
|
||||
|
||||
|
||||
// Try it yourself clicky column/list demo:
|
||||
var $columnValues = $('#demo-column').find('input'),
|
||||
$columnOutputs = $('#demo-column').find('.output'),
|
||||
$columnOutputs2 = $('#demo-column').find('.output2');
|
||||
|
||||
$columnValues.bind('keydown keyup keypress focus blur paste', function() {
|
||||
var list = $.map( $columnValues, function(each) { return $(each).val(); } ),
|
||||
formatted = accounting.formatColumn(list, {
|
||||
format : "%s %v"
|
||||
}),
|
||||
formatted2 = accounting.formatColumn(list, {
|
||||
symbol : "GBP",
|
||||
precision : 0,
|
||||
format : {
|
||||
pos : "%s %v",
|
||||
neg : "%s (%v)",
|
||||
zero: "%s --"
|
||||
}
|
||||
});
|
||||
|
||||
$.each($columnOutputs, function(i, each) {
|
||||
$(each).text(formatted[i]);
|
||||
});
|
||||
$.each($columnOutputs2, function(i, each) {
|
||||
$(each).text(formatted2[i]);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// prettify:
|
||||
prettyPrint();
|
||||
|
||||
// twitter:
|
||||
(function(d, t) {
|
||||
var g = d.createElement(t),
|
||||
s = d.getElementsByTagName(t)[0];
|
||||
g.async = true;
|
||||
g.src = 'http://platform.twitter.com/widgets.js';
|
||||
s.parentNode.insertBefore(g, s);
|
||||
})(document, 'script');
|
||||
|
||||
// google plus:
|
||||
window.___gcfg = {lang: 'en-GB'};
|
||||
(function() {
|
||||
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
|
||||
po.src = 'https://apis.google.com/js/plusone.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
22
public/vendor/accounting/license
vendored
22
public/vendor/accounting/license
vendored
@ -1,22 +0,0 @@
|
||||
Copyright (c) 2011 Joss Crowcroft
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
12
public/vendor/accounting/package.json
vendored
12
public/vendor/accounting/package.json
vendored
@ -1,12 +0,0 @@
|
||||
{
|
||||
"name" : "accounting",
|
||||
"description" : "number, money and currency parsing/formatting library",
|
||||
"homepage": "http://josscrowcroft.github.com/accounting.js",
|
||||
"keywords" : ["accounting", "number", "money", "currency", "format", "utilities"],
|
||||
"author": "Joss Crowcroft <josscrowcroft@gmail.com> (http://www.josscrowcroft.com)",
|
||||
"contributors" : [],
|
||||
"dependencies" : {},
|
||||
"repository" : {"type": "git", "url": "git://github.com/josscrowcroft/accounting.js.git"},
|
||||
"main" : "accounting.js",
|
||||
"version" : "0.3.2"
|
||||
}
|
75
public/vendor/accounting/readme.md
vendored
75
public/vendor/accounting/readme.md
vendored
@ -1,75 +0,0 @@
|
||||
**accounting.js** is a tiny JavaScript library for number, money and currency parsing/formatting. It's lightweight and fully localisable, with zero dependencies, and works great as a nodeJS/npm and AMD/requireJS module.
|
||||
|
||||
Check out the **[accounting.js homepage](http://josscrowcroft.github.com/accounting.js/)** for demos and documentation!
|
||||
|
||||
Please checkout/download the latest stable tag before using in production. [Bug reports](https://github.com/josscrowcroft/accounting.js/issues) and pull requests hugely welcome.
|
||||
|
||||
Made with love by [@josscrowcroft](http://twitter.com/josscrowcroft) and some excellent [contributors](https://github.com/josscrowcroft/accounting.js/contributors).
|
||||
|
||||
---
|
||||
|
||||
### Also try:
|
||||
|
||||
* **[money.js](http://josscrowcroft.github.com/money.js)** - a tiny (1kb) javascript currency conversion library, for web & nodeJS
|
||||
* **[open exchange rates](http://josscrowcroft.github.com/open-exchange-rates/)** - free / open source hourly-updated currency conversion data for everybody
|
||||
|
||||
---
|
||||
|
||||
## Changelog
|
||||
|
||||
**v0.3.2** - Fix package.json dependencies (should be empty object) and tweak comments
|
||||
|
||||
**v0.3.0**
|
||||
|
||||
* Rewrote library structure similar to underscore.js for use as a **nodeJS/npm** and **AMD/requireJS** module - now you can go `npm install accounting`, and then `var accounting = require("accounting");` in your nodeJS scripts.
|
||||
* **unformat** now only attempts to parse the number if it's not already a valid number. Also now aliased as `acounting.parse`
|
||||
* Fixed an IE bug in the `defaults` method
|
||||
|
||||
**v0.2.2** - Fixed same issue as \#Num: #24 in **formatNumber**; switch to Google Closure Compiler for minified version.
|
||||
|
||||
**v0.2.1** - Fixed issue \#Num: #24 where locally-defined settings object was being modified by **formatMoney** (still an issue in **formatNumber**)
|
||||
|
||||
**v0.2**
|
||||
|
||||
* Rewrote formatting system for **formatMoney** and **formatColumn**, to allow easier/better control of string output
|
||||
* Separate formats for negative and zero values now supported (optionally) via `accounting.settings.currency.format`
|
||||
* Internal improvements and helper methods
|
||||
|
||||
**v0.1.4** - **formatMoney** recursively formats arrays; added Jasmine test suite (thx [millermedeiros](https://github.com/millermedeiros)!) and QUnit functionality/speed tests
|
||||
|
||||
**v0.1.3**
|
||||
|
||||
* Added configurable settings object for default formatting parameters.
|
||||
* Added `format` parameter to control symbol and value position (default `"%s%v"`, or [symbol][value])
|
||||
* Made methods more consistent in accepting an object as 2nd parameter, matching/overriding the library defaults
|
||||
|
||||
**v0.1.2**
|
||||
|
||||
* **formatColumn** works recursively on nested arrays, eg `accounting.formatColumn( [[1,12,123,1234], [1234,123,12,1]] )`, returns matching array with inner columns lined up
|
||||
* Another fix for rounding in **formatNumber**: `.535` now correctly rounds to ".54" instead of ".53"
|
||||
|
||||
**v0.1.1**
|
||||
|
||||
* Added **toFixed** method (`accounting.toFixed(value, precision)`), which treats floats more like decimals for more accurate currency rounding - now, `0.615` rounds up to `$0.62` instead of `$0.61`
|
||||
* Minified version preserves semicolons
|
||||
* Fixed NaN errors when no value in **unformat**
|
||||
|
||||
**v0.1** - First version yo
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Here's a neat little preview of **formatColumn()**:
|
||||
|
||||
```html
|
||||
Original Number: | With accounting.js: | Different settings: | Symbol after value:
|
||||
-------------------+-------------------------+-------------------------+-----------------------
|
||||
123.5 | $ 123.50 | HK$ 124 | 123.50 GBP
|
||||
3456.615 | $ 3,456.62 | HK$ 3,457 | 3,456.62 GBP
|
||||
777888.99 | $ 777,888.99 | HK$ 777,889 | 777,888.99 GBP
|
||||
-5432 | $ -5,432.00 | HK$ (5,432) | -5,432.00 GBP
|
||||
-1234567 | $ -1,234,567.00 | HK$ (1,234,567) | -1,234,567.00 GBP
|
||||
0 | $ 0.00 | HK$ -- | 0.00 GBP
|
||||
```
|
||||
|
||||
There's more demos and documentation on the **[accounting.js homepage](http://josscrowcroft.github.com/accounting.js/)**. Enjoy!
|
@ -1,23 +0,0 @@
|
||||
describe('formatMoney()', function(){
|
||||
|
||||
it('should work for small numbers', function(){
|
||||
|
||||
expect( accounting.formatMoney(123) ).toBe( '$123.00' );
|
||||
expect( accounting.formatMoney(123.45) ).toBe( '$123.45' );
|
||||
expect( accounting.formatMoney(12345.67) ).toBe( '$12,345.67' );
|
||||
|
||||
});
|
||||
|
||||
it('should work for negative numbers', function(){
|
||||
|
||||
expect( accounting.formatMoney(-123) ).toBe( '$-123.00' );
|
||||
expect( accounting.formatMoney(-123.45) ).toBe( '$-123.45' );
|
||||
expect( accounting.formatMoney(-12345.67) ).toBe( '$-12,345.67' );
|
||||
|
||||
});
|
||||
|
||||
it('should allow precision to be `0` and not override with default `2`', function(){
|
||||
expect( accounting.formatMoney(5318008, "$", 0) ).toBe( '$5,318,008' );
|
||||
});
|
||||
|
||||
});
|
@ -1,132 +0,0 @@
|
||||
describe('formatNumber', function(){
|
||||
|
||||
describe('rounding and enforce precision', function(){
|
||||
|
||||
it('should enforce precision and round values', function(){
|
||||
|
||||
expect( accounting.formatNumber(123.456789, 0) ).toBe( '123' );
|
||||
expect( accounting.formatNumber(123.456789, 1) ).toBe( '123.5' );
|
||||
expect( accounting.formatNumber(123.456789, 2) ).toBe( '123.46' );
|
||||
expect( accounting.formatNumber(123.456789, 3) ).toBe( '123.457' );
|
||||
expect( accounting.formatNumber(123.456789, 4) ).toBe( '123.4568' );
|
||||
expect( accounting.formatNumber(123.456789, 5) ).toBe( '123.45679' );
|
||||
|
||||
});
|
||||
|
||||
it('should fix floting point rounding error', function(){
|
||||
|
||||
expect( accounting.formatNumber(0.615, 2) ).toBe( '0.62' );
|
||||
expect( accounting.formatNumber(0.614, 2) ).toBe( '0.61' );
|
||||
|
||||
});
|
||||
|
||||
it('should work for large numbers', function(){
|
||||
|
||||
expect( accounting.formatNumber(123456.54321, 0) ).toBe( '123,457' );
|
||||
expect( accounting.formatNumber(123456.54321, 1) ).toBe( '123,456.5' );
|
||||
expect( accounting.formatNumber(123456.54321, 2) ).toBe( '123,456.54' );
|
||||
expect( accounting.formatNumber(123456.54321, 3) ).toBe( '123,456.543' );
|
||||
expect( accounting.formatNumber(123456.54321, 4) ).toBe( '123,456.5432' );
|
||||
expect( accounting.formatNumber(123456.54321, 5) ).toBe( '123,456.54321' );
|
||||
|
||||
expect( accounting.formatNumber(98765432.12, 0) ).toBe( '98,765,432' );
|
||||
expect( accounting.formatNumber(98765432.12, 1) ).toBe( '98,765,432.1' );
|
||||
expect( accounting.formatNumber(98765432.12, 2) ).toBe( '98,765,432.12' );
|
||||
expect( accounting.formatNumber(98765432.12, 3) ).toBe( '98,765,432.120' );
|
||||
expect( accounting.formatNumber(98765432.12, 4) ).toBe( '98,765,432.1200' );
|
||||
|
||||
});
|
||||
|
||||
it('should work for negative numbers', function(){
|
||||
|
||||
expect( accounting.formatNumber(-123456.54321, 0) ).toBe( '-123,457' );
|
||||
expect( accounting.formatNumber(-123456.54321, 1) ).toBe( '-123,456.5' );
|
||||
expect( accounting.formatNumber(-123456.54321, 2) ).toBe( '-123,456.54' );
|
||||
expect( accounting.formatNumber(-123456.54321, 3) ).toBe( '-123,456.543' );
|
||||
expect( accounting.formatNumber(-123456.54321, 4) ).toBe( '-123,456.5432' );
|
||||
expect( accounting.formatNumber(-123456.54321, 5) ).toBe( '-123,456.54321' );
|
||||
|
||||
expect( accounting.formatNumber(-98765432.12, 0) ).toBe( '-98,765,432' );
|
||||
expect( accounting.formatNumber(-98765432.12, 1) ).toBe( '-98,765,432.1' );
|
||||
expect( accounting.formatNumber(-98765432.12, 2) ).toBe( '-98,765,432.12' );
|
||||
expect( accounting.formatNumber(-98765432.12, 3) ).toBe( '-98,765,432.120' );
|
||||
expect( accounting.formatNumber(-98765432.12, 4) ).toBe( '-98,765,432.1200' );
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
describe('separators', function(){
|
||||
|
||||
it('should allow setting thousands separator', function(){
|
||||
expect( accounting.formatNumber(98765432.12, 0, '|') ).toBe( '98|765|432' );
|
||||
expect( accounting.formatNumber(98765432.12, 1, '>') ).toBe( '98>765>432.1' );
|
||||
expect( accounting.formatNumber(98765432.12, 2, '*') ).toBe( '98*765*432.12' );
|
||||
expect( accounting.formatNumber(98765432.12, 3, '\'') ).toBe( '98\'765\'432.120' );
|
||||
expect( accounting.formatNumber(98765432.12, 4, ']') ).toBe( '98]765]432.1200' );
|
||||
});
|
||||
|
||||
|
||||
it('should allow setting decimal separator', function(){
|
||||
expect( accounting.formatNumber(98765432.12, 0, null, '|') ).toBe( '98,765,432' );
|
||||
expect( accounting.formatNumber(98765432.12, 1, null, '>') ).toBe( '98,765,432>1' );
|
||||
expect( accounting.formatNumber(98765432.12, 2, null, '*') ).toBe( '98,765,432*12' );
|
||||
expect( accounting.formatNumber(98765432.12, 3, null, '\'') ).toBe( '98,765,432\'120' );
|
||||
expect( accounting.formatNumber(98765432.12, 4, null, ']') ).toBe( '98,765,432]1200' );
|
||||
});
|
||||
|
||||
it('should allow setting thousand and decimal separators', function(){
|
||||
expect( accounting.formatNumber(98765432.12, 0, '\\', '|') ).toBe( '98\\765\\432' );
|
||||
expect( accounting.formatNumber(98765432.12, 1, '<', '>') ).toBe( '98<765<432>1' );
|
||||
expect( accounting.formatNumber(98765432.12, 2, '&', '*') ).toBe( '98&765&432*12' );
|
||||
expect( accounting.formatNumber(98765432.12, 3, '"', '\'') ).toBe( '98"765"432\'120' );
|
||||
expect( accounting.formatNumber(98765432.12, 4, '[', ']') ).toBe( '98[765[432]1200' );
|
||||
});
|
||||
|
||||
it('should use default separators if null', function(){
|
||||
expect( accounting.formatNumber(12345.12345, 2, null, null) ).toBe('12,345.12');
|
||||
});
|
||||
|
||||
it('should use empty separators if passed as empty string', function(){
|
||||
expect( accounting.formatNumber(12345.12345, 2, '', '') ).toBe('1234512');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
describe('multiple numbers (array)', function(){
|
||||
|
||||
it('should handle an array of numbers', function(){
|
||||
|
||||
var vals = accounting.formatNumber([123, 456.78, 1234.123], 2);
|
||||
|
||||
expect( vals[0] ).toBe( '123.00' );
|
||||
expect( vals[1] ).toBe( '456.78' );
|
||||
expect( vals[2] ).toBe( '1,234.12' );
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('properties object', function(){
|
||||
|
||||
it('should accept a properties object', function(){
|
||||
|
||||
var val = accounting.formatNumber(123456789.1234, {
|
||||
thousand : '.',
|
||||
decimal : ',',
|
||||
precision : 3
|
||||
});
|
||||
|
||||
expect( val ).toBe( '123.456.789,123' );
|
||||
});
|
||||
|
||||
it('properties should be optional', function(){
|
||||
var val = accounting.formatNumber(123456789.1234, {});
|
||||
expect( val ).toBe( '123,456,789' );
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
});
|
@ -1,31 +0,0 @@
|
||||
describe('unformat()', function(){
|
||||
|
||||
it('should remove padding special chars', function(){
|
||||
expect( accounting.unformat('$ 123,456') ).toBe( 123456 );
|
||||
expect( accounting.unformat('$ 123,456.78') ).toBe( 123456.78 );
|
||||
expect( accounting.unformat('&*()$ 123,456') ).toBe( 123456 );
|
||||
expect( accounting.unformat(';$@#$%^&123,456.78') ).toBe( 123456.78 );
|
||||
});
|
||||
|
||||
it('should work with negative numbers', function(){
|
||||
expect( accounting.unformat('$ -123,456') ).toBe( -123456 );
|
||||
expect( accounting.unformat('$ -123,456.78') ).toBe( -123456.78 );
|
||||
expect( accounting.unformat('&*()$ -123,456') ).toBe( -123456 );
|
||||
expect( accounting.unformat(';$@#$%^&-123,456.78') ).toBe( -123456.78 );
|
||||
});
|
||||
|
||||
it('should accept different decimal separators', function(){
|
||||
expect( accounting.unformat('$ 123,456', ',') ).toBe( 123.456 );
|
||||
expect( accounting.unformat('$ 123456|78', '|') ).toBe( 123456.78 );
|
||||
expect( accounting.unformat('&*()$ 123>456', '>') ).toBe( 123.456 );
|
||||
expect( accounting.unformat(';$@#$%^&123,456\'78', '\'') ).toBe( 123456.78 );
|
||||
});
|
||||
|
||||
it('should accept an array', function(){
|
||||
var vals = accounting.unformat(['$ 123', '$567.89', 'R$12,345,678.901']);
|
||||
expect( vals[0] ).toBe( 123 );
|
||||
expect( vals[1] ).toBe( 567.89 );
|
||||
expect( vals[2] ).toBe( 12345678.901 );
|
||||
});
|
||||
|
||||
});
|
@ -1,20 +0,0 @@
|
||||
Copyright (c) 2008-2010 Pivotal Labs
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@ -1,188 +0,0 @@
|
||||
jasmine.TrivialReporter = function(doc) {
|
||||
this.document = doc || document;
|
||||
this.suiteDivs = {};
|
||||
this.logRunningSpecs = false;
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.createDom = function(type, attrs, childrenVarArgs) {
|
||||
var el = document.createElement(type);
|
||||
|
||||
for (var i = 2; i < arguments.length; i++) {
|
||||
var child = arguments[i];
|
||||
|
||||
if (typeof child === 'string') {
|
||||
el.appendChild(document.createTextNode(child));
|
||||
} else {
|
||||
if (child) { el.appendChild(child); }
|
||||
}
|
||||
}
|
||||
|
||||
for (var attr in attrs) {
|
||||
if (attr == "className") {
|
||||
el[attr] = attrs[attr];
|
||||
} else {
|
||||
el.setAttribute(attr, attrs[attr]);
|
||||
}
|
||||
}
|
||||
|
||||
return el;
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.reportRunnerStarting = function(runner) {
|
||||
var showPassed, showSkipped;
|
||||
|
||||
this.outerDiv = this.createDom('div', { className: 'jasmine_reporter' },
|
||||
this.createDom('div', { className: 'banner' },
|
||||
this.createDom('div', { className: 'logo' },
|
||||
this.createDom('a', { href: 'http://pivotal.github.com/jasmine/', target: "_blank" }, "Jasmine"),
|
||||
this.createDom('span', { className: 'version' }, runner.env.versionString())),
|
||||
this.createDom('div', { className: 'options' },
|
||||
"Show ",
|
||||
showPassed = this.createDom('input', { id: "__jasmine_TrivialReporter_showPassed__", type: 'checkbox' }),
|
||||
this.createDom('label', { "for": "__jasmine_TrivialReporter_showPassed__" }, " passed "),
|
||||
showSkipped = this.createDom('input', { id: "__jasmine_TrivialReporter_showSkipped__", type: 'checkbox' }),
|
||||
this.createDom('label', { "for": "__jasmine_TrivialReporter_showSkipped__" }, " skipped")
|
||||
)
|
||||
),
|
||||
|
||||
this.runnerDiv = this.createDom('div', { className: 'runner running' },
|
||||
this.createDom('a', { className: 'run_spec', href: '?' }, "run all"),
|
||||
this.runnerMessageSpan = this.createDom('span', {}, "Running..."),
|
||||
this.finishedAtSpan = this.createDom('span', { className: 'finished-at' }, ""))
|
||||
);
|
||||
|
||||
this.document.body.appendChild(this.outerDiv);
|
||||
|
||||
var suites = runner.suites();
|
||||
for (var i = 0; i < suites.length; i++) {
|
||||
var suite = suites[i];
|
||||
var suiteDiv = this.createDom('div', { className: 'suite' },
|
||||
this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, "run"),
|
||||
this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, suite.description));
|
||||
this.suiteDivs[suite.id] = suiteDiv;
|
||||
var parentDiv = this.outerDiv;
|
||||
if (suite.parentSuite) {
|
||||
parentDiv = this.suiteDivs[suite.parentSuite.id];
|
||||
}
|
||||
parentDiv.appendChild(suiteDiv);
|
||||
}
|
||||
|
||||
this.startedAt = new Date();
|
||||
|
||||
var self = this;
|
||||
showPassed.onclick = function(evt) {
|
||||
if (showPassed.checked) {
|
||||
self.outerDiv.className += ' show-passed';
|
||||
} else {
|
||||
self.outerDiv.className = self.outerDiv.className.replace(/ show-passed/, '');
|
||||
}
|
||||
};
|
||||
|
||||
showSkipped.onclick = function(evt) {
|
||||
if (showSkipped.checked) {
|
||||
self.outerDiv.className += ' show-skipped';
|
||||
} else {
|
||||
self.outerDiv.className = self.outerDiv.className.replace(/ show-skipped/, '');
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.reportRunnerResults = function(runner) {
|
||||
var results = runner.results();
|
||||
var className = (results.failedCount > 0) ? "runner failed" : "runner passed";
|
||||
this.runnerDiv.setAttribute("class", className);
|
||||
//do it twice for IE
|
||||
this.runnerDiv.setAttribute("className", className);
|
||||
var specs = runner.specs();
|
||||
var specCount = 0;
|
||||
for (var i = 0; i < specs.length; i++) {
|
||||
if (this.specFilter(specs[i])) {
|
||||
specCount++;
|
||||
}
|
||||
}
|
||||
var message = "" + specCount + " spec" + (specCount == 1 ? "" : "s" ) + ", " + results.failedCount + " failure" + ((results.failedCount == 1) ? "" : "s");
|
||||
message += " in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s";
|
||||
this.runnerMessageSpan.replaceChild(this.createDom('a', { className: 'description', href: '?'}, message), this.runnerMessageSpan.firstChild);
|
||||
|
||||
this.finishedAtSpan.appendChild(document.createTextNode("Finished at " + new Date().toString()));
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.reportSuiteResults = function(suite) {
|
||||
var results = suite.results();
|
||||
var status = results.passed() ? 'passed' : 'failed';
|
||||
if (results.totalCount == 0) { // todo: change this to check results.skipped
|
||||
status = 'skipped';
|
||||
}
|
||||
this.suiteDivs[suite.id].className += " " + status;
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.reportSpecStarting = function(spec) {
|
||||
if (this.logRunningSpecs) {
|
||||
this.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...');
|
||||
}
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.reportSpecResults = function(spec) {
|
||||
var results = spec.results();
|
||||
var status = results.passed() ? 'passed' : 'failed';
|
||||
if (results.skipped) {
|
||||
status = 'skipped';
|
||||
}
|
||||
var specDiv = this.createDom('div', { className: 'spec ' + status },
|
||||
this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(spec.getFullName()) }, "run"),
|
||||
this.createDom('a', {
|
||||
className: 'description',
|
||||
href: '?spec=' + encodeURIComponent(spec.getFullName()),
|
||||
title: spec.getFullName()
|
||||
}, spec.description));
|
||||
|
||||
|
||||
var resultItems = results.getItems();
|
||||
var messagesDiv = this.createDom('div', { className: 'messages' });
|
||||
for (var i = 0; i < resultItems.length; i++) {
|
||||
var result = resultItems[i];
|
||||
|
||||
if (result.type == 'log') {
|
||||
messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString()));
|
||||
} else if (result.type == 'expect' && result.passed && !result.passed()) {
|
||||
messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message));
|
||||
|
||||
if (result.trace.stack) {
|
||||
messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (messagesDiv.childNodes.length > 0) {
|
||||
specDiv.appendChild(messagesDiv);
|
||||
}
|
||||
|
||||
this.suiteDivs[spec.suite.id].appendChild(specDiv);
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.log = function() {
|
||||
var console = jasmine.getGlobal().console;
|
||||
if (console && console.log) {
|
||||
if (console.log.apply) {
|
||||
console.log.apply(console, arguments);
|
||||
} else {
|
||||
console.log(arguments); // ie fix: console.log.apply doesn't exist on ie
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.getLocation = function() {
|
||||
return this.document.location;
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.specFilter = function(spec) {
|
||||
var paramMap = {};
|
||||
var params = this.getLocation().search.substring(1).split('&');
|
||||
for (var i = 0; i < params.length; i++) {
|
||||
var p = params[i].split('=');
|
||||
paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
|
||||
}
|
||||
|
||||
if (!paramMap["spec"]) return true;
|
||||
return spec.getFullName().indexOf(paramMap["spec"]) == 0;
|
||||
};
|
@ -1,166 +0,0 @@
|
||||
body {
|
||||
font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif;
|
||||
}
|
||||
|
||||
|
||||
.jasmine_reporter a:visited, .jasmine_reporter a {
|
||||
color: #303;
|
||||
}
|
||||
|
||||
.jasmine_reporter a:hover, .jasmine_reporter a:active {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.run_spec {
|
||||
float:right;
|
||||
padding-right: 5px;
|
||||
font-size: .8em;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.jasmine_reporter {
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.banner {
|
||||
color: #303;
|
||||
background-color: #fef;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
float: left;
|
||||
font-size: 1.1em;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.logo .version {
|
||||
font-size: .6em;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.runner.running {
|
||||
background-color: yellow;
|
||||
}
|
||||
|
||||
|
||||
.options {
|
||||
text-align: right;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.suite {
|
||||
border: 1px outset gray;
|
||||
margin: 5px 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.suite .suite {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.suite.passed {
|
||||
background-color: #dfd;
|
||||
}
|
||||
|
||||
.suite.failed {
|
||||
background-color: #fdd;
|
||||
}
|
||||
|
||||
.spec {
|
||||
margin: 5px;
|
||||
padding-left: 1em;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.spec.failed, .spec.passed, .spec.skipped {
|
||||
padding-bottom: 5px;
|
||||
border: 1px solid gray;
|
||||
}
|
||||
|
||||
.spec.failed {
|
||||
background-color: #fbb;
|
||||
border-color: red;
|
||||
}
|
||||
|
||||
.spec.passed {
|
||||
background-color: #bfb;
|
||||
border-color: green;
|
||||
}
|
||||
|
||||
.spec.skipped {
|
||||
background-color: #bbb;
|
||||
}
|
||||
|
||||
.messages {
|
||||
border-left: 1px dashed gray;
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
}
|
||||
|
||||
.passed {
|
||||
background-color: #cfc;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.failed {
|
||||
background-color: #fbb;
|
||||
}
|
||||
|
||||
.skipped {
|
||||
color: #777;
|
||||
background-color: #eee;
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/*.resultMessage {*/
|
||||
/*white-space: pre;*/
|
||||
/*}*/
|
||||
|
||||
.resultMessage span.result {
|
||||
display: block;
|
||||
line-height: 2em;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.resultMessage .mismatch {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.stackTrace {
|
||||
white-space: pre;
|
||||
font-size: .8em;
|
||||
margin-left: 10px;
|
||||
max-height: 5em;
|
||||
overflow: auto;
|
||||
border: 1px inset red;
|
||||
padding: 1em;
|
||||
background: #eef;
|
||||
}
|
||||
|
||||
.finished-at {
|
||||
padding-left: 1em;
|
||||
font-size: .6em;
|
||||
}
|
||||
|
||||
.show-passed .passed,
|
||||
.show-skipped .skipped {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
#jasmine_content {
|
||||
position:fixed;
|
||||
right: 100%;
|
||||
}
|
||||
|
||||
.runner {
|
||||
border: 1px solid gray;
|
||||
display: block;
|
||||
margin: 5px 0;
|
||||
padding: 2px 0 2px 10px;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,22 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Jasmine Test Runner</title>
|
||||
<link rel="stylesheet" href="lib/jasmine/jasmine.css">
|
||||
<script src="lib/jasmine/jasmine.js"></script>
|
||||
<script src="lib/jasmine/jasmine-html.js"></script>
|
||||
|
||||
<script src="../../accounting.js"></script>
|
||||
|
||||
<script src="core/formatNumberSpec.js"></script>
|
||||
<script src="core/unformatSpec.js"></script>
|
||||
<script src="core/formatMoneySpec.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
//run specs and add reporter
|
||||
jasmine.getEnv().addReporter(new jasmine.TrivialReporter());
|
||||
jasmine.getEnv().execute();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
92
public/vendor/accounting/tests/qunit/methods.js
vendored
92
public/vendor/accounting/tests/qunit/methods.js
vendored
@ -1,92 +0,0 @@
|
||||
$(document).ready(function() {
|
||||
|
||||
module("Library Methods");
|
||||
|
||||
test("accounting.unformat()", function() {
|
||||
equals(accounting.unformat("$12,345,678.90 USD"), 12345678.9, 'Can unformat currency to float');
|
||||
equals(accounting.unformat(1234567890), 1234567890, 'Returns same value when passed an integer');
|
||||
equals(accounting.unformat("string"), 0, 'Returns 0 for a string with no numbers');
|
||||
equals(accounting.unformat({joss:1}), 0, 'Returns 0 for object');
|
||||
});
|
||||
|
||||
test("accounting.toFixed()", function() {
|
||||
equals(accounting.toFixed(54321, 5), "54321.00000", 'Performs basic float zero-padding');
|
||||
equals(accounting.toFixed(0.615, 2), "0.62", 'Rounds 0.615 to "0.62" instead of "0.61"');
|
||||
});
|
||||
|
||||
test("accounting.formatNumber()", function() {
|
||||
// Check custom precision and separators:
|
||||
equals(accounting.formatNumber(4999.99, 2, ".", ","), "4.999,99", 'Custom precision and decimal/thousand separators are a-ok')
|
||||
|
||||
// check usage with options object parameter:
|
||||
equal(accounting.formatNumber(5318008, {
|
||||
precision : 3,
|
||||
thousand : "__",
|
||||
decimal : "--"
|
||||
}), "5__318__008--000", 'Correctly handles custom precision and separators passed in via second param options object');
|
||||
|
||||
|
||||
// check rounding:
|
||||
equals(accounting.formatNumber(0.615, 2), "0.62", 'Rounds 0.615 up to "0.62" with precision of 2');
|
||||
|
||||
// manually and recursively formatted arrays should have same values:
|
||||
var numbers = [8008135, [1234, 5678], 1000];
|
||||
var formattedManually = [accounting.formatNumber(8008135), [accounting.formatNumber(1234), accounting.formatNumber(5678)], accounting.formatNumber(1000)];
|
||||
var formattedRecursively = accounting.formatNumber(numbers);
|
||||
equals(formattedRecursively.toString(), formattedManually.toString(), 'can recursively format multi-dimensional arrays');
|
||||
});
|
||||
|
||||
|
||||
test("accounting.formatMoney()", function() {
|
||||
equals(accounting.formatMoney(12345678), "$12,345,678.00", "Default usage with default parameters is ok");
|
||||
equals(accounting.formatMoney(4999.99, "$ ", 2, ".", ","), "$ 4.999,99", 'custom formatting via straight params works ok');
|
||||
equals(accounting.formatMoney(-500000, "£ ", 0), "£ -500,000", 'negative values, custom params, works ok');
|
||||
equals(accounting.formatMoney(5318008, { symbol: "GBP", format: "%v %s" }), "5,318,008.00 GBP", "`format` parameter is observed in string output");
|
||||
equals(accounting.formatMoney(1000, { format: "test %v 123 %s test" }), "test 1,000.00 123 $ test", "`format` parameter is observed in string output, despite being rather strange");
|
||||
|
||||
// Format param is an object:
|
||||
var format = {
|
||||
pos: "%s %v",
|
||||
neg: "%s (%v)",
|
||||
zero:"%s --"
|
||||
}
|
||||
equals(accounting.formatMoney(0, { symbol: "GBP", format:format}), "GBP --", "`format` parameter provided given as an object with `zero` format, correctly observed in string output");
|
||||
equals(accounting.formatMoney(-1000, { symbol: "GBP", format:format}), "GBP (1,000.00)", "`format` parameter provided given as an object with `neg` format, correctly observed in string output");
|
||||
equals(accounting.formatMoney(1000, { symbol: "GBP", format:{neg:"--%v %s"}}), "GBP1,000.00", "`format` parameter provided, but only `neg` value provided - positive value should be formatted by default format (%s%v)");
|
||||
|
||||
accounting.settings.currency.format = "%s%v";
|
||||
accounting.formatMoney(0, {format:""});
|
||||
equals(typeof accounting.settings.currency.format, "object", "`settings.currency.format` default string value should be reformatted to an object, the first time it is used");
|
||||
});
|
||||
|
||||
|
||||
test("accounting.formatColumn()", function() {
|
||||
// standard usage:
|
||||
var list = [123, 12345];
|
||||
equals(accounting.formatColumn(list, "$ ", 0).toString(), (["$ 123", "$ 12,345"]).toString(), "formatColumn works as expected");
|
||||
|
||||
|
||||
// multi-dimensional array (formatColumn should be applied recursively):
|
||||
var list = [[1, 100], [900, 9]];
|
||||
equals(accounting.formatColumn(list).toString(), ([["$ 1.00", "$100.00"], ["$900.00", "$ 9.00"]]).toString(), "formatcolumn works on multi-dimensional array");
|
||||
|
||||
|
||||
// random numbers, must come back same length:
|
||||
var column = accounting.formatColumn([Math.random(), Math.random() * 1000, Math.random() * 10000000]);
|
||||
ok((column[0].length === column[2].length && column[1].length === column[2].length), "formatColumn() with 3 random numbers returned strings of matching length");
|
||||
|
||||
|
||||
// random numbers, must come back same length:
|
||||
var column = accounting.formatColumn([Math.random(), Math.random() * 1000, Math.random() * 10000000], {
|
||||
format: '(%v] --++== %s',
|
||||
thousand: ')(',
|
||||
decimal: ')[',
|
||||
precision: 3
|
||||
});
|
||||
ok((column[0].length === column[2].length && column[1].length === column[2].length), "formatColumn() with 3 random numbers returned strings of matching length, even with a weird custom `format` parameter");
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
});
|
76
public/vendor/accounting/tests/qunit/speed.js
vendored
76
public/vendor/accounting/tests/qunit/speed.js
vendored
@ -1,76 +0,0 @@
|
||||
(function() {
|
||||
|
||||
var numbers = [];
|
||||
for (var i=0; i<1000; i++) numbers.push((Math.random() * (1000*i)));
|
||||
var strings = $.map(numbers, function(num){ return accounting.formatMoney(num*1000, "HK$ "); });
|
||||
|
||||
JSLitmus.test('unformat()', function(count) {
|
||||
var i = 0;
|
||||
while ( count-- ) {
|
||||
accounting.unformat(strings[i])
|
||||
i++;
|
||||
i > strings.length && (i = 0);
|
||||
}
|
||||
});
|
||||
|
||||
JSLitmus.test('unformat(array)', function(count) {
|
||||
var i = 0;
|
||||
while ( count-- ) {
|
||||
accounting.unformat([strings[i], strings[i+1]]);
|
||||
i += 2;
|
||||
i > numbers.length && (i = 0);
|
||||
}
|
||||
});
|
||||
|
||||
JSLitmus.test('toFixed()', function(count) {
|
||||
while ( count-- ) {
|
||||
accounting.toFixed(count*1000, 2);
|
||||
}
|
||||
});
|
||||
|
||||
JSLitmus.test('formatNumber()', function(count) {
|
||||
var i = 0;
|
||||
while ( count-- ) {
|
||||
accounting.formatNumber(numbers[i]);
|
||||
i++;
|
||||
i > numbers.length && (i = 0);
|
||||
}
|
||||
});
|
||||
|
||||
JSLitmus.test('formatNumber(array)', function(count) {
|
||||
var i = 0;
|
||||
while ( count-- ) {
|
||||
accounting.formatNumber([numbers[i], numbers[i+1]]);
|
||||
i += 2;
|
||||
i > numbers.length && (i = 0);
|
||||
}
|
||||
});
|
||||
|
||||
JSLitmus.test('formatMoney()', function(count) {
|
||||
var i = 0;
|
||||
while ( count-- ) {
|
||||
accounting.formatMoney(numbers[i]);
|
||||
i++;
|
||||
i > numbers.length && (i = 0);
|
||||
}
|
||||
});
|
||||
|
||||
JSLitmus.test('formatMoney(array)', function(count) {
|
||||
var i = 0;
|
||||
while ( count-- ) {
|
||||
accounting.formatMoney([numbers[i], numbers[i+1]]);
|
||||
i += 2;
|
||||
i > numbers.length && (i = 0);
|
||||
}
|
||||
});
|
||||
|
||||
JSLitmus.test('formatColumn()', function(count) {
|
||||
var i = 0;
|
||||
while ( count-- ) {
|
||||
accounting.formatColumn([numbers[i], numbers[i+1]]);
|
||||
i += 2;
|
||||
i > numbers.length && (i = 0);
|
||||
}
|
||||
});
|
||||
|
||||
})();
|
32
public/vendor/accounting/tests/qunit/test.html
vendored
32
public/vendor/accounting/tests/qunit/test.html
vendored
@ -1,32 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>accounting.js test suite</title>
|
||||
<link rel="stylesheet" href="vendor/qunit.css" type="text/css" media="screen" />
|
||||
<script type="text/javascript" src="vendor/jquery.js"></script>
|
||||
<script type="text/javascript" src="vendor/qunit.js"></script>
|
||||
<script type="text/javascript" src="vendor/jslitmus.js"></script>
|
||||
<script type="text/javascript" src="../../accounting.js"></script>
|
||||
|
||||
<script type="text/javascript" src="methods.js"></script>
|
||||
<script type="text/javascript" src="speed.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="accountingjs-test">
|
||||
<h1 id="qunit-header">accounting.js tests</h1>
|
||||
<h2 id="qunit-banner"></h2>
|
||||
<h2 id="qunit-userAgent"></h2>
|
||||
<ol id="qunit-tests"></ol>
|
||||
<br />
|
||||
<h1 class="qunit-header">accounting.js speed tests</h1>
|
||||
<p>Each library method is represented here running on predefined random numbers/strings, with default parameters, to provide a sense of how fast they might run in different browsers.</p>
|
||||
<br />
|
||||
|
||||
<script type="text/html" id="template">
|
||||
<%
|
||||
if (data) { data += 12345; }; %>
|
||||
<li><%= data %></li>
|
||||
</script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
File diff suppressed because one or more lines are too long
@ -1,670 +0,0 @@
|
||||
// JSLitmus.js
|
||||
//
|
||||
// History:
|
||||
// 2008-10-27: Initial release
|
||||
// 2008-11-09: Account for iteration loop overhead
|
||||
// 2008-11-13: Added OS detection
|
||||
// 2009-02-25: Create tinyURL automatically, shift-click runs tests in reverse
|
||||
//
|
||||
// Copyright (c) 2008-2009, Robert Kieffer
|
||||
// All Rights Reserved
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the
|
||||
// Software), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
// persons to whom the Software is furnished to do so, subject to the
|
||||
// following conditions:
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
(function() {
|
||||
// Private methods and state
|
||||
|
||||
// Get platform info but don't go crazy trying to recognize everything
|
||||
// that's out there. This is just for the major platforms and OSes.
|
||||
var platform = 'unknown platform', ua = navigator.userAgent;
|
||||
|
||||
// Detect OS
|
||||
var oses = ['Windows','iPhone OS','(Intel |PPC )?Mac OS X','Linux'].join('|');
|
||||
var pOS = new RegExp('((' + oses + ') [^ \);]*)').test(ua) ? RegExp.$1 : null;
|
||||
if (!pOS) pOS = new RegExp('((' + oses + ')[^ \);]*)').test(ua) ? RegExp.$1 : null;
|
||||
|
||||
// Detect browser
|
||||
var pName = /(Chrome|MSIE|Safari|Opera|Firefox)/.test(ua) ? RegExp.$1 : null;
|
||||
|
||||
// Detect version
|
||||
var vre = new RegExp('(Version|' + pName + ')[ \/]([^ ;]*)');
|
||||
var pVersion = (pName && vre.test(ua)) ? RegExp.$2 : null;
|
||||
var platform = (pOS && pName && pVersion) ? pName + ' ' + pVersion + ' on ' + pOS : 'unknown platform';
|
||||
|
||||
/**
|
||||
* A smattering of methods that are needed to implement the JSLitmus testbed.
|
||||
*/
|
||||
var jsl = {
|
||||
/**
|
||||
* Enhanced version of escape()
|
||||
*/
|
||||
escape: function(s) {
|
||||
s = s.replace(/,/g, '\\,');
|
||||
s = escape(s);
|
||||
s = s.replace(/\+/g, '%2b');
|
||||
s = s.replace(/ /g, '+');
|
||||
return s;
|
||||
},
|
||||
|
||||
/**
|
||||
* Get an element by ID.
|
||||
*/
|
||||
$: function(id) {
|
||||
return document.getElementById(id);
|
||||
},
|
||||
|
||||
/**
|
||||
* Null function
|
||||
*/
|
||||
F: function() {},
|
||||
|
||||
/**
|
||||
* Set the status shown in the UI
|
||||
*/
|
||||
status: function(msg) {
|
||||
var el = jsl.$('jsl_status');
|
||||
if (el) el.innerHTML = msg || '';
|
||||
},
|
||||
|
||||
/**
|
||||
* Convert a number to an abbreviated string like, "15K" or "10M"
|
||||
*/
|
||||
toLabel: function(n) {
|
||||
if (n == Infinity) {
|
||||
return 'Infinity';
|
||||
} else if (n > 1e9) {
|
||||
n = Math.round(n/1e8);
|
||||
return n/10 + 'B';
|
||||
} else if (n > 1e6) {
|
||||
n = Math.round(n/1e5);
|
||||
return n/10 + 'M';
|
||||
} else if (n > 1e3) {
|
||||
n = Math.round(n/1e2);
|
||||
return n/10 + 'K';
|
||||
}
|
||||
return n;
|
||||
},
|
||||
|
||||
/**
|
||||
* Copy properties from src to dst
|
||||
*/
|
||||
extend: function(dst, src) {
|
||||
for (var k in src) dst[k] = src[k]; return dst;
|
||||
},
|
||||
|
||||
/**
|
||||
* Like Array.join(), but for the key-value pairs in an object
|
||||
*/
|
||||
join: function(o, delimit1, delimit2) {
|
||||
if (o.join) return o.join(delimit1); // If it's an array
|
||||
var pairs = [];
|
||||
for (var k in o) pairs.push(k + delimit1 + o[k]);
|
||||
return pairs.join(delimit2);
|
||||
},
|
||||
|
||||
/**
|
||||
* Array#indexOf isn't supported in IE, so we use this as a cross-browser solution
|
||||
*/
|
||||
indexOf: function(arr, o) {
|
||||
if (arr.indexOf) return arr.indexOf(o);
|
||||
for (var i = 0; i < this.length; i++) if (arr[i] === o) return i;
|
||||
return -1;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Test manages a single test (created with
|
||||
* JSLitmus.test())
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
var Test = function (name, f) {
|
||||
if (!f) throw new Error('Undefined test function');
|
||||
if (!(/function[^\(]*\(([^,\)]*)/).test(f.toString())) {
|
||||
throw new Error('"' + name + '" test: Test is not a valid Function object');
|
||||
}
|
||||
this.loopArg = RegExp.$1;
|
||||
this.name = name;
|
||||
this.f = f;
|
||||
};
|
||||
|
||||
jsl.extend(Test, /** @lends Test */ {
|
||||
/** Calibration tests for establishing iteration loop overhead */
|
||||
CALIBRATIONS: [
|
||||
new Test('calibrating loop', function(count) {while (count--);}),
|
||||
new Test('calibrating function', jsl.F)
|
||||
],
|
||||
|
||||
/**
|
||||
* Run calibration tests. Returns true if calibrations are not yet
|
||||
* complete (in which case calling code should run the tests yet again).
|
||||
* onCalibrated - Callback to invoke when calibrations have finished
|
||||
*/
|
||||
calibrate: function(onCalibrated) {
|
||||
for (var i = 0; i < Test.CALIBRATIONS.length; i++) {
|
||||
var cal = Test.CALIBRATIONS[i];
|
||||
if (cal.running) return true;
|
||||
if (!cal.count) {
|
||||
cal.isCalibration = true;
|
||||
cal.onStop = onCalibrated;
|
||||
//cal.MIN_TIME = .1; // Do calibrations quickly
|
||||
cal.run(2e4);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
jsl.extend(Test.prototype, {/** @lends Test.prototype */
|
||||
/** Initial number of iterations */
|
||||
INIT_COUNT: 10,
|
||||
/** Max iterations allowed (i.e. used to detect bad looping functions) */
|
||||
MAX_COUNT: 1e9,
|
||||
/** Minimum time a test should take to get valid results (secs) */
|
||||
MIN_TIME: .5,
|
||||
|
||||
/** Callback invoked when test state changes */
|
||||
onChange: jsl.F,
|
||||
|
||||
/** Callback invoked when test is finished */
|
||||
onStop: jsl.F,
|
||||
|
||||
/**
|
||||
* Reset test state
|
||||
*/
|
||||
reset: function() {
|
||||
delete this.count;
|
||||
delete this.time;
|
||||
delete this.running;
|
||||
delete this.error;
|
||||
},
|
||||
|
||||
/**
|
||||
* Run the test (in a timeout). We use a timeout to make sure the browser
|
||||
* has a chance to finish rendering any UI changes we've made, like
|
||||
* updating the status message.
|
||||
*/
|
||||
run: function(count) {
|
||||
count = count || this.INIT_COUNT;
|
||||
jsl.status(this.name + ' x ' + count);
|
||||
this.running = true;
|
||||
var me = this;
|
||||
setTimeout(function() {me._run(count);}, 200);
|
||||
},
|
||||
|
||||
/**
|
||||
* The nuts and bolts code that actually runs a test
|
||||
*/
|
||||
_run: function(count) {
|
||||
var me = this;
|
||||
|
||||
// Make sure calibration tests have run
|
||||
if (!me.isCalibration && Test.calibrate(function() {me.run(count);})) return;
|
||||
this.error = null;
|
||||
|
||||
try {
|
||||
var start, f = this.f, now, i = count;
|
||||
|
||||
// Start the timer
|
||||
start = new Date();
|
||||
|
||||
// Now for the money shot. If this is a looping function ...
|
||||
if (this.loopArg) {
|
||||
// ... let it do the iteration itself
|
||||
f(count);
|
||||
} else {
|
||||
// ... otherwise do the iteration for it
|
||||
while (i--) f();
|
||||
}
|
||||
|
||||
// Get time test took (in secs)
|
||||
this.time = Math.max(1,new Date() - start)/1000;
|
||||
|
||||
// Store iteration count and per-operation time taken
|
||||
this.count = count;
|
||||
this.period = this.time/count;
|
||||
|
||||
// Do we need to do another run?
|
||||
this.running = this.time <= this.MIN_TIME;
|
||||
|
||||
// ... if so, compute how many times we should iterate
|
||||
if (this.running) {
|
||||
// Bump the count to the nearest power of 2
|
||||
var x = this.MIN_TIME/this.time;
|
||||
var pow = Math.pow(2, Math.max(1, Math.ceil(Math.log(x)/Math.log(2))));
|
||||
count *= pow;
|
||||
if (count > this.MAX_COUNT) {
|
||||
throw new Error('Max count exceeded. If this test uses a looping function, make sure the iteration loop is working properly.');
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
// Exceptions are caught and displayed in the test UI
|
||||
this.reset();
|
||||
this.error = e;
|
||||
}
|
||||
|
||||
// Figure out what to do next
|
||||
if (this.running) {
|
||||
me.run(count);
|
||||
} else {
|
||||
jsl.status('');
|
||||
me.onStop(me);
|
||||
}
|
||||
|
||||
// Finish up
|
||||
this.onChange(this);
|
||||
},
|
||||
|
||||
/**
|
||||
* Get the number of operations per second for this test.
|
||||
*
|
||||
* @param normalize if true, iteration loop overhead taken into account
|
||||
*/
|
||||
getHz: function(/**Boolean*/ normalize) {
|
||||
var p = this.period;
|
||||
|
||||
// Adjust period based on the calibration test time
|
||||
if (normalize && !this.isCalibration) {
|
||||
var cal = Test.CALIBRATIONS[this.loopArg ? 0 : 1];
|
||||
|
||||
// If the period is within 20% of the calibration time, then zero the
|
||||
// it out
|
||||
p = p < cal.period*1.2 ? 0 : p - cal.period;
|
||||
}
|
||||
|
||||
return Math.round(1/p);
|
||||
},
|
||||
|
||||
/**
|
||||
* Get a friendly string describing the test
|
||||
*/
|
||||
toString: function() {
|
||||
return this.name + ' - ' + this.time/this.count + ' secs';
|
||||
}
|
||||
});
|
||||
|
||||
// CSS we need for the UI
|
||||
var STYLESHEET = '<style> \
|
||||
#jslitmus {font-family:sans-serif; font-size: 12px;} \
|
||||
#jslitmus a {text-decoration: none;} \
|
||||
#jslitmus a:hover {text-decoration: underline;} \
|
||||
#jsl_status { \
|
||||
margin-top: 10px; \
|
||||
font-size: 10px; \
|
||||
color: #888; \
|
||||
} \
|
||||
A IMG {border:none} \
|
||||
#test_results { \
|
||||
margin-top: 10px; \
|
||||
font-size: 12px; \
|
||||
font-family: sans-serif; \
|
||||
border-collapse: collapse; \
|
||||
border-spacing: 0px; \
|
||||
} \
|
||||
#test_results th, #test_results td { \
|
||||
border: solid 1px #ccc; \
|
||||
vertical-align: top; \
|
||||
padding: 3px; \
|
||||
} \
|
||||
#test_results th { \
|
||||
vertical-align: bottom; \
|
||||
background-color: #ccc; \
|
||||
padding: 1px; \
|
||||
font-size: 10px; \
|
||||
} \
|
||||
#test_results #test_platform { \
|
||||
color: #444; \
|
||||
text-align:center; \
|
||||
} \
|
||||
#test_results .test_row { \
|
||||
color: #006; \
|
||||
cursor: pointer; \
|
||||
} \
|
||||
#test_results .test_nonlooping { \
|
||||
border-left-style: dotted; \
|
||||
border-left-width: 2px; \
|
||||
} \
|
||||
#test_results .test_looping { \
|
||||
border-left-style: solid; \
|
||||
border-left-width: 2px; \
|
||||
} \
|
||||
#test_results .test_name {white-space: nowrap;} \
|
||||
#test_results .test_pending { \
|
||||
} \
|
||||
#test_results .test_running { \
|
||||
font-style: italic; \
|
||||
} \
|
||||
#test_results .test_done {} \
|
||||
#test_results .test_done { \
|
||||
text-align: right; \
|
||||
font-family: monospace; \
|
||||
} \
|
||||
#test_results .test_error {color: #600;} \
|
||||
#test_results .test_error .error_head {font-weight:bold;} \
|
||||
#test_results .test_error .error_body {font-size:85%;} \
|
||||
#test_results .test_row:hover td { \
|
||||
background-color: #ffc; \
|
||||
text-decoration: underline; \
|
||||
} \
|
||||
#chart { \
|
||||
margin: 10px 0px; \
|
||||
width: 250px; \
|
||||
} \
|
||||
#chart img { \
|
||||
border: solid 1px #ccc; \
|
||||
margin-bottom: 5px; \
|
||||
} \
|
||||
#chart #tiny_url { \
|
||||
height: 40px; \
|
||||
width: 250px; \
|
||||
} \
|
||||
#jslitmus_credit { \
|
||||
font-size: 10px; \
|
||||
color: #888; \
|
||||
margin-top: 8px; \
|
||||
} \
|
||||
</style>';
|
||||
|
||||
// HTML markup for the UI
|
||||
var MARKUP = '<div id="jslitmus"> \
|
||||
<button onclick="JSLitmus.runAll(event)">Run Tests</button> \
|
||||
<button id="stop_button" disabled="disabled" onclick="JSLitmus.stop()">Stop Tests</button> \
|
||||
<br \> \
|
||||
<br \> \
|
||||
<input type="checkbox" style="vertical-align: middle" id="test_normalize" checked="checked" onchange="JSLitmus.renderAll()""> Normalize results \
|
||||
<table id="test_results"> \
|
||||
<colgroup> \
|
||||
<col /> \
|
||||
<col width="100" /> \
|
||||
</colgroup> \
|
||||
<tr><th id="test_platform" colspan="2">' + platform + '</th></tr> \
|
||||
<tr><th>Test</th><th>Ops/sec</th></tr> \
|
||||
<tr id="test_row_template" class="test_row" style="display:none"> \
|
||||
<td class="test_name"></td> \
|
||||
<td class="test_result">Ready</td> \
|
||||
</tr> \
|
||||
</table> \
|
||||
<div id="jsl_status"></div> \
|
||||
<div id="chart" style="display:none"> \
|
||||
<a id="chart_link" target="_blank"><img id="chart_image"></a> \
|
||||
TinyURL (for chart): \
|
||||
<iframe id="tiny_url" frameBorder="0" scrolling="no" src=""></iframe> \
|
||||
</div> \
|
||||
<a id="jslitmus_credit" title="JSLitmus home page" href="http://code.google.com/p/jslitmus" target="_blank">Powered by JSLitmus</a> \
|
||||
</div>';
|
||||
|
||||
/**
|
||||
* The public API for creating and running tests
|
||||
*/
|
||||
window.JSLitmus = {
|
||||
/** The list of all tests that have been registered with JSLitmus.test */
|
||||
_tests: [],
|
||||
/** The queue of tests that need to be run */
|
||||
_queue: [],
|
||||
|
||||
/**
|
||||
* The parsed query parameters the current page URL. This is provided as a
|
||||
* convenience for test functions - it's not used by JSLitmus proper
|
||||
*/
|
||||
params: {},
|
||||
|
||||
/**
|
||||
* Initialize
|
||||
*/
|
||||
_init: function() {
|
||||
// Parse query params into JSLitmus.params[] hash
|
||||
var match = (location + '').match(/([^?#]*)(#.*)?$/);
|
||||
if (match) {
|
||||
var pairs = match[1].split('&');
|
||||
for (var i = 0; i < pairs.length; i++) {
|
||||
var pair = pairs[i].split('=');
|
||||
if (pair.length > 1) {
|
||||
var key = pair.shift();
|
||||
var value = pair.length > 1 ? pair.join('=') : pair[0];
|
||||
this.params[key] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Write out the stylesheet. We have to do this here because IE
|
||||
// doesn't honor sheets written after the document has loaded.
|
||||
document.write(STYLESHEET);
|
||||
|
||||
// Setup the rest of the UI once the document is loaded
|
||||
if (window.addEventListener) {
|
||||
window.addEventListener('load', this._setup, false);
|
||||
} else if (document.addEventListener) {
|
||||
document.addEventListener('load', this._setup, false);
|
||||
} else if (window.attachEvent) {
|
||||
window.attachEvent('onload', this._setup);
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Set up the UI
|
||||
*/
|
||||
_setup: function() {
|
||||
var el = jsl.$('jslitmus_container');
|
||||
if (!el) document.body.appendChild(el = document.createElement('div'));
|
||||
|
||||
el.innerHTML = MARKUP;
|
||||
|
||||
// Render the UI for all our tests
|
||||
for (var i=0; i < JSLitmus._tests.length; i++)
|
||||
JSLitmus.renderTest(JSLitmus._tests[i]);
|
||||
},
|
||||
|
||||
/**
|
||||
* (Re)render all the test results
|
||||
*/
|
||||
renderAll: function() {
|
||||
for (var i = 0; i < JSLitmus._tests.length; i++)
|
||||
JSLitmus.renderTest(JSLitmus._tests[i]);
|
||||
JSLitmus.renderChart();
|
||||
},
|
||||
|
||||
/**
|
||||
* (Re)render the chart graphics
|
||||
*/
|
||||
renderChart: function() {
|
||||
var url = JSLitmus.chartUrl();
|
||||
jsl.$('chart_link').href = url;
|
||||
jsl.$('chart_image').src = url;
|
||||
jsl.$('chart').style.display = '';
|
||||
|
||||
// Update the tiny URL
|
||||
jsl.$('tiny_url').src = 'http://tinyurl.com/api-create.php?url='+escape(url);
|
||||
},
|
||||
|
||||
/**
|
||||
* (Re)render the results for a specific test
|
||||
*/
|
||||
renderTest: function(test) {
|
||||
// Make a new row if needed
|
||||
if (!test._row) {
|
||||
var trow = jsl.$('test_row_template');
|
||||
if (!trow) return;
|
||||
|
||||
test._row = trow.cloneNode(true);
|
||||
test._row.style.display = '';
|
||||
test._row.id = '';
|
||||
test._row.onclick = function() {JSLitmus._queueTest(test);};
|
||||
test._row.title = 'Run ' + test.name + ' test';
|
||||
trow.parentNode.appendChild(test._row);
|
||||
test._row.cells[0].innerHTML = test.name;
|
||||
}
|
||||
|
||||
var cell = test._row.cells[1];
|
||||
var cns = [test.loopArg ? 'test_looping' : 'test_nonlooping'];
|
||||
|
||||
if (test.error) {
|
||||
cns.push('test_error');
|
||||
cell.innerHTML =
|
||||
'<div class="error_head">' + test.error + '</div>' +
|
||||
'<ul class="error_body"><li>' +
|
||||
jsl.join(test.error, ': ', '</li><li>') +
|
||||
'</li></ul>';
|
||||
} else {
|
||||
if (test.running) {
|
||||
cns.push('test_running');
|
||||
cell.innerHTML = 'running';
|
||||
} else if (jsl.indexOf(JSLitmus._queue, test) >= 0) {
|
||||
cns.push('test_pending');
|
||||
cell.innerHTML = 'pending';
|
||||
} else if (test.count) {
|
||||
cns.push('test_done');
|
||||
var hz = test.getHz(jsl.$('test_normalize').checked);
|
||||
cell.innerHTML = hz != Infinity ? hz : '∞';
|
||||
} else {
|
||||
cell.innerHTML = 'ready';
|
||||
}
|
||||
}
|
||||
cell.className = cns.join(' ');
|
||||
},
|
||||
|
||||
/**
|
||||
* Create a new test
|
||||
*/
|
||||
test: function(name, f) {
|
||||
// Create the Test object
|
||||
var test = new Test(name, f);
|
||||
JSLitmus._tests.push(test);
|
||||
|
||||
// Re-render if the test state changes
|
||||
test.onChange = JSLitmus.renderTest;
|
||||
|
||||
// Run the next test if this one finished
|
||||
test.onStop = function(test) {
|
||||
if (JSLitmus.onTestFinish) JSLitmus.onTestFinish(test);
|
||||
JSLitmus.currentTest = null;
|
||||
JSLitmus._nextTest();
|
||||
};
|
||||
|
||||
// Render the new test
|
||||
this.renderTest(test);
|
||||
},
|
||||
|
||||
/**
|
||||
* Add all tests to the run queue
|
||||
*/
|
||||
runAll: function(e) {
|
||||
e = e || window.event;
|
||||
var reverse = e && e.shiftKey, len = JSLitmus._tests.length;
|
||||
for (var i = 0; i < len; i++) {
|
||||
JSLitmus._queueTest(JSLitmus._tests[!reverse ? i : (len - i - 1)]);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove all tests from the run queue. The current test has to finish on
|
||||
* it's own though
|
||||
*/
|
||||
stop: function() {
|
||||
while (JSLitmus._queue.length) {
|
||||
var test = JSLitmus._queue.shift();
|
||||
JSLitmus.renderTest(test);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Run the next test in the run queue
|
||||
*/
|
||||
_nextTest: function() {
|
||||
if (!JSLitmus.currentTest) {
|
||||
var test = JSLitmus._queue.shift();
|
||||
if (test) {
|
||||
jsl.$('stop_button').disabled = false;
|
||||
JSLitmus.currentTest = test;
|
||||
test.run();
|
||||
JSLitmus.renderTest(test);
|
||||
if (JSLitmus.onTestStart) JSLitmus.onTestStart(test);
|
||||
} else {
|
||||
jsl.$('stop_button').disabled = true;
|
||||
JSLitmus.renderChart();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Add a test to the run queue
|
||||
*/
|
||||
_queueTest: function(test) {
|
||||
if (jsl.indexOf(JSLitmus._queue, test) >= 0) return;
|
||||
JSLitmus._queue.push(test);
|
||||
JSLitmus.renderTest(test);
|
||||
JSLitmus._nextTest();
|
||||
},
|
||||
|
||||
/**
|
||||
* Generate a Google Chart URL that shows the data for all tests
|
||||
*/
|
||||
chartUrl: function() {
|
||||
var n = JSLitmus._tests.length, markers = [], data = [];
|
||||
var d, min = 0, max = -1e10;
|
||||
var normalize = jsl.$('test_normalize').checked;
|
||||
|
||||
// Gather test data
|
||||
for (var i=0; i < JSLitmus._tests.length; i++) {
|
||||
var test = JSLitmus._tests[i];
|
||||
if (test.count) {
|
||||
var hz = test.getHz(normalize);
|
||||
var v = hz != Infinity ? hz : 0;
|
||||
data.push(v);
|
||||
markers.push('t' + jsl.escape(test.name + '(' + jsl.toLabel(hz)+ ')') + ',000000,0,' +
|
||||
markers.length + ',10');
|
||||
max = Math.max(v, max);
|
||||
}
|
||||
}
|
||||
if (markers.length <= 0) return null;
|
||||
|
||||
// Build chart title
|
||||
var title = document.getElementsByTagName('title');
|
||||
title = (title && title.length) ? title[0].innerHTML : null;
|
||||
var chart_title = [];
|
||||
if (title) chart_title.push(title);
|
||||
chart_title.push('Ops/sec (' + platform + ')');
|
||||
|
||||
// Build labels
|
||||
var labels = [jsl.toLabel(min), jsl.toLabel(max)];
|
||||
|
||||
var w = 250, bw = 15;
|
||||
var bs = 5;
|
||||
var h = markers.length*(bw + bs) + 30 + chart_title.length*20;
|
||||
|
||||
var params = {
|
||||
chtt: escape(chart_title.join('|')),
|
||||
chts: '000000,10',
|
||||
cht: 'bhg', // chart type
|
||||
chd: 't:' + data.join(','), // data set
|
||||
chds: min + ',' + max, // max/min of data
|
||||
chxt: 'x', // label axes
|
||||
chxl: '0:|' + labels.join('|'), // labels
|
||||
chsp: '0,1',
|
||||
chm: markers.join('|'), // test names
|
||||
chbh: [bw, 0, bs].join(','), // bar widths
|
||||
// chf: 'bg,lg,0,eeeeee,0,eeeeee,.5,ffffff,1', // gradient
|
||||
chs: w + 'x' + h
|
||||
};
|
||||
return 'http://chart.apis.google.com/chart?' + jsl.join(params, '=', '&');
|
||||
}
|
||||
};
|
||||
|
||||
JSLitmus._init();
|
||||
})();
|
@ -1,196 +0,0 @@
|
||||
/** Font Family and Sizes */
|
||||
|
||||
#qunit-tests, #qunit-header, .qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
|
||||
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
|
||||
}
|
||||
|
||||
#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, .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-banner {
|
||||
height: 5px;
|
||||
}
|
||||
|
||||
#qunit-testrunner-toolbar {
|
||||
padding: 0em 0 0.5em 2em;
|
||||
}
|
||||
|
||||
#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 li strong {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#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;
|
||||
}
|
||||
|
||||
#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,
|
||||
#qunit-testrunner-toolbar { background-color: #EE5757; }
|
||||
|
||||
|
||||
/** Footer */
|
||||
|
||||
#qunit-testresult {
|
||||
padding: 0.5em 0.5em 0.5em 2.5em;
|
||||
|
||||
color: #2b81af;
|
||||
background-color: #D2E0E6;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
/** Fixture */
|
||||
|
||||
#qunit-fixture {
|
||||
position: absolute;
|
||||
top: -10000px;
|
||||
left: -10000px;
|
||||
}
|
2360
public/vendor/accounting/tests/qunit/vendor/qunit.js
vendored
2360
public/vendor/accounting/tests/qunit/vendor/qunit.js
vendored
File diff suppressed because it is too large
Load Diff
23
public/vendor/bootstrap-datepicker/.bower.json
vendored
23
public/vendor/bootstrap-datepicker/.bower.json
vendored
@ -1,23 +0,0 @@
|
||||
{
|
||||
"name": "bootstrap-datepicker",
|
||||
"version": "1.3.0",
|
||||
"main": [
|
||||
"js/bootstrap-datepicker.js",
|
||||
"css/datepicker.css",
|
||||
"css/datepicker3.css"
|
||||
],
|
||||
"dependencies": {
|
||||
"jquery": ">=1.7.1",
|
||||
"bootstrap": ">=3.0 <4.0"
|
||||
},
|
||||
"homepage": "https://github.com/eternicode/bootstrap-datepicker",
|
||||
"_release": "1.3.0",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "1.3.0",
|
||||
"commit": "37db99f95ff3a32ccc76b7122b2b73f3b0b9fe42"
|
||||
},
|
||||
"_source": "git://github.com/eternicode/bootstrap-datepicker.git",
|
||||
"_target": "~1.*",
|
||||
"_originalSource": "bootstrap-datepicker"
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
instrumented/
|
||||
tests/coverage.html
|
||||
docs/_build
|
3
public/vendor/bootstrap-datepicker/.hgignore
vendored
3
public/vendor/bootstrap-datepicker/.hgignore
vendored
@ -1,3 +0,0 @@
|
||||
instrumented/
|
||||
tests/coverage.html
|
||||
docs/_build
|
18
public/vendor/bootstrap-datepicker/.hgtags
vendored
18
public/vendor/bootstrap-datepicker/.hgtags
vendored
@ -1,18 +0,0 @@
|
||||
b965e03abfcb10d66c8dad96d54d6f8e1c5d8501 v1.0.0
|
||||
7a490672b362af7640bbeb68553a0e0a5a95cb9e v1.0.1
|
||||
9a730557f14d79c2ce2d28eacb24bdf52ac2e042 1.0.2-rc.1
|
||||
62604d506e5ba9d85ee6c2d86723b9b3d817e7bd 1.0.2-rc.1.1
|
||||
f6211e251c021331decc16bfbcf25577dd354ef4 1.0.2-rc.2
|
||||
493d2332f0cb7f2dd308c442920da86063ff2e0f 1.0.2
|
||||
77a6755dc3df3ada745024648535562587fab630 1.1.0
|
||||
fe9e4106def42741adba1606245ab0eab32acb55 1.1.1
|
||||
e37ab4f7d0d30a45ee80a7019fd2bcf8c1765de7 1.1.2
|
||||
0596a9619e30c5f52d0f56c9cba9daf0d69d29ab 1.1.3
|
||||
ba267071688d93d973bee4ddb11344971e851e9e 1.2.0-rc.1
|
||||
57e2f78d70dc5c6a265869cff3b885a78123300c 1.2.0
|
||||
68703f4d535efdeb865eba0c0b3d3b4acfb76121 1.3.0-rc.1
|
||||
abfc042e74af3e944a0819296260a8c96c6169c1 1.3.0-rc.2
|
||||
2687213f73e257375fcc3c35c1a3d23284e17341 1.3.0-rc.3
|
||||
0e5bbe72a69c9d75edbfce775943e2f7eb719eeb 1.3.0-rc.4
|
||||
3d6c7937e3f7b7e1cdb7db22fbd504e853ee776b 1.3.0-rc.5
|
||||
5bc760304871bb691a613b79c86ba9a91735007f 1.3.0-rc.6
|
27
public/vendor/bootstrap-datepicker/.jscs.json
vendored
27
public/vendor/bootstrap-datepicker/.jscs.json
vendored
@ -1,27 +0,0 @@
|
||||
{
|
||||
"requireSpaceAfterKeywords": [
|
||||
"if", "else", "for", "while", "do", "switch", "return"
|
||||
],
|
||||
"disallowSpacesInFunctionExpression": {
|
||||
"beforeOpeningRoundBrace": true,
|
||||
"beforeOpeningCurlyBrace": true
|
||||
},
|
||||
"disallowSpacesInsideObjectBrackets": true,
|
||||
"disallowSpacesInsideArrayBrackets": true,
|
||||
"disallowSpacesInsideParentheses": true,
|
||||
"disallowQuotedKeysInObjects": "allButReserved",
|
||||
"disallowSpaceAfterObjectKeys": true,
|
||||
"disallowLeftStickedOperators": [
|
||||
"?", "==", "===", "!=", "!==", ">", ">=", "<", "<="
|
||||
],
|
||||
"disallowRightStickedOperators": [
|
||||
"?", "==", "===", "!=", "!==", ">", ">=", "<", "<="
|
||||
],
|
||||
"requireLeftStickedOperators": [","],
|
||||
"requireRightStickedOperators": ["!"],
|
||||
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~"],
|
||||
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
|
||||
"validateLineBreaks": "LF",
|
||||
"requireKeywordsOnNewLine": ["else", "return", "break", "delete"],
|
||||
"requireLineFeedAtFileEnd": true
|
||||
}
|
20
public/vendor/bootstrap-datepicker/.jshintrc
vendored
20
public/vendor/bootstrap-datepicker/.jshintrc
vendored
@ -1,20 +0,0 @@
|
||||
{
|
||||
"jquery": true,
|
||||
"browser": true,
|
||||
|
||||
"eqeqeq": true,
|
||||
"freeze": true,
|
||||
//"indent": 4, // when we move to spaces
|
||||
"latedef": true,
|
||||
"undef": true,
|
||||
"unused": true,
|
||||
"immed": true,
|
||||
"trailing": true,
|
||||
"maxcomplexity": 50, // Can we get this under 5?
|
||||
//"maxlen": 120,
|
||||
|
||||
"-W014": false, // Bad line breaking before ? (in tertiary operator)
|
||||
"-W065": false, // Missing radix parameter to parseInt (defaults to 10)
|
||||
"-W069": false, // Literal accessor is better written in dot notation
|
||||
"-W100": false // Silently deleted characters (in locales)
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
install:
|
||||
- npm install -g jshint jscs
|
||||
before_script:
|
||||
- cd ./tests
|
||||
- echo "new Date().toString();" | phantomjs
|
||||
script:
|
||||
- jshint ../js/bootstrap-datepicker.js ../js/locales/*.js
|
||||
- jscs -c ../.jscs.json ../js/bootstrap-datepicker.js ../js/locales/*.js
|
||||
- phantomjs run-qunit.js tests.html
|
172
public/vendor/bootstrap-datepicker/CHANGELOG.md
vendored
172
public/vendor/bootstrap-datepicker/CHANGELOG.md
vendored
@ -1,172 +0,0 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
1.3.0
|
||||
-----
|
||||
|
||||
New features:
|
||||
* Bootstrap 3 support. Added build files `build/build_standalone3.less` and `build/build3.less`, and source files `less/datepicker3.less` and `css/datepicker3.css` (built from `build_standalone3.less`).
|
||||
* Multi-date functionality. This required rethinking several areas of the picker:
|
||||
* The internals have been modified to be completely multidate-centric.
|
||||
* Attributes and methods availabel on events have changed, but the old attributes and functions will still work.
|
||||
* Keyboard navigation has been revamped, as it didn't work at all properly with multidate selection.
|
||||
* The picker now explicitly supports "no selected date".
|
||||
|
||||
Non-API changes:
|
||||
* Keyboard navigation has been changed. See `docs/keyboard.rst`.
|
||||
* Empty pickers in a range picker setup will be populated with the first date selected by the user to make finding the next date easier.
|
||||
|
||||
Bug squashed:
|
||||
* Jan 1, 1970 is now highlighted when selected
|
||||
* `touchstart` added to document-bound picker-closing events (alongside `mousedown`)
|
||||
* Fixed a display bug with component add-on icons being vertically higher than they should have been.
|
||||
* Input is refocused after clicking the picker.
|
||||
* `changeDate` event is triggered when `setDate` is called.
|
||||
|
||||
Locale changes:
|
||||
* Added Ukrainian, Belgium-Dutch, Welsh, Galician, Vietnamese, and Azerbaijani
|
||||
* `clear` for German, Danish, Italian, and Romanian
|
||||
* Fixed `weekStart` and `format` for Norwegian
|
||||
* `weekStart` and `format` for Georgian
|
||||
* Tweaks for Latvian, French, Vietnamese, Swedish, and Croatian
|
||||
* De-duplicated Ukrainian files from `uk` and `ua` to just `ua`
|
||||
|
||||
Repository changes:
|
||||
* Documentation has been moved from the base `README.md` file to the `docs/` folder, and been re-written to use sphinx docs. The docs are now viewable online at http://bootstrap-datepicker.readthedocs.org/. The [gh-pages](http://eternicode.github.io/bootstrap-datepicker/) branch has been reduced to the sandbox demo.
|
||||
* Changed the js file header to point at repo/demo/docs urls instead of eyecon.ro
|
||||
* The css files are now the output of the standalone build scripts instead of `build/build.less` etc.
|
||||
* `composer.json` now supports component-installer
|
||||
* Added [JSHint](http://www.jshint.com/docs/) and [JSCS](https://github.com/mdevils/node-jscs) configurations
|
||||
|
||||
|
||||
1.2.0
|
||||
-----
|
||||
|
||||
New features:
|
||||
* Google Closure Compiler Compatibility
|
||||
* Smart orientation by default, and explicit picker orientation with the `orientation` option
|
||||
* Text inside the picker is no longer user-selectable
|
||||
* Packagist/Composer support (I think...)
|
||||
* No longer depends on glyphicons for arrows
|
||||
* `clearDate` event added, fired when the date is cleared
|
||||
|
||||
Bug squashed:
|
||||
* `noConflict` fixed
|
||||
* Fix for large years causing an infinite loop in date parsing
|
||||
* Fixed cases where `changeYear` and `changeMonth` events were not being triggered
|
||||
* `component.js` moved to `bower.js`
|
||||
* Falsey values for `startDate` and `endDate` translate to `-Infinity` and `Infinity`, respectively (effectively, falsey values mean "no bounds")
|
||||
* Fixed `autoclose` for non-input, non-component elements
|
||||
* Fixed 50% param in `mix()` less function -- expands compatibility with less compilers
|
||||
* Fixed `update` method to update the selected date
|
||||
* `beforeShowDay` was getting UTC dates, now it gets local dates (all dates that developers are given should be in local time, not UTC).
|
||||
* `startDate` and `endDate` were a bit confused when given `new Date()` -- they would not allow today to be selected (the range should be inclusive), they would change whether it was selectable based on local time, etc. These quirks should be fixed now. They both also now expect local dates (which will then be time-zeroed and converted to UTC).
|
||||
* Fixed selected date not being automatically constrained to the specified range when `setStartDate` and `setEndDate` were called.
|
||||
* No longer uses jQuery's `.size()` (deprecated in favor of `.length`)
|
||||
* `changeDate` triggered during manual user input
|
||||
* `change` event fired when input value changed, it wasn't in some cases
|
||||
|
||||
Locale changes:
|
||||
* Added Arabic, Norwegian, Georgian
|
||||
* `clear` for French
|
||||
* `today` and `clear` for Bahasa
|
||||
* `today` and `clear` for Portuguese (both `pt` and `pt-BR`)
|
||||
* `format` for Turkish
|
||||
* `format` and `weekStart` for Swedish
|
||||
* `format` and `weekStart` for Simplified Chinese; `today`, `format`, and `weekStart` for Traditional Chinese
|
||||
* Fixed typo in Serbian latin (`rs-latin`)
|
||||
* More appropriate use of Traditional Chinese habit in `zh-TW`
|
||||
|
||||
|
||||
1.1.3
|
||||
----------
|
||||
|
||||
Clicking the clear button now triggers the input's `change` and datepicker's `changeDate` events.
|
||||
Fixed a bug that broke the event-attached `format` function.
|
||||
|
||||
|
||||
1.1.2
|
||||
----------
|
||||
|
||||
Botched release, no change from 1.1.1
|
||||
|
||||
|
||||
1.1.1
|
||||
----------
|
||||
|
||||
Fixes a bug when setting startDate or endDate during initialization.
|
||||
|
||||
|
||||
1.1.0
|
||||
----------
|
||||
|
||||
New features:
|
||||
* Date range picker.
|
||||
* Data API / noConflict.
|
||||
* `getDate` and `setDate` methods.
|
||||
* `format` method for events; this allows you to easily format the `date` associated with the event.
|
||||
* New options:
|
||||
* `beforeShowDay` option: a dev-provided function that can enable/disable dates, add css classes, and add tooltips.
|
||||
* `clearBtn`, a button for resetting the picker.
|
||||
|
||||
Internal changes:
|
||||
* Cleaner and more reliable method for extracting options from all potential sources (defaults, locale overrides, data-attrs, and instantiation options, in that order). This also populates `$.fn.datepicker.defaults` with the default values, and uses this hash as the actual source of defaults, meaning you can globally change the default value for a given option.
|
||||
|
||||
Bugs squashed:
|
||||
* Resolved a conflict with bootstrap's native `.switch` class.
|
||||
* Fixed a bug with components where they would be stuck with a stale value when editing the value manually.
|
||||
* The `date` attributes on events are now local dates instead of internal UTC dates.
|
||||
* Separate `Date` objects for internal selected and view date references.
|
||||
* Clicking multiple times inside inputs no longer hides the picker.
|
||||
|
||||
Minor improvements:
|
||||
* Better text color for highlighted "today" date.
|
||||
* Last year in decade view now marked as "new" instead of "old".
|
||||
* Formats now properly handle trailing separators.
|
||||
|
||||
Locale changes:
|
||||
* Added Albanian, Estonian, and Macedonian
|
||||
* Added `weekStart` for Russian
|
||||
* Added `weekStart` and `format` for Finnish
|
||||
|
||||
Potentially backward-incompatible changes:
|
||||
* Options revamp:
|
||||
* This fixes bugs in the correlation of some data-attrs to their associated option names. If you use `data-date-weekstart`, `data-date-startdate`, or `data-date-enddate`, you should update these to `data-date-week-start`, `data-date-start-date`, or `data-date-end-date`, respectively.
|
||||
* All options for datepicker are now properties on the datepicker's `o` property; options are no longer stored on the Datepicker instance itself. If you have code that accesses options stored on the datepicker instance (eg, `datepicker.format`), you will need to update it to access those options via the `o` property (eg, `datepicker.o.format`). "Raw" options are available via the `_o` property.
|
||||
|
||||
1.0.2
|
||||
----------
|
||||
|
||||
Small optimizations release
|
||||
|
||||
* Reduced the number of times `update` is called on initialization.
|
||||
* Datepicker now detaches the picker dropdown when it is hidden, and appends it when shown. This removes the picker from the DOM when it is not in use.
|
||||
* No longer listens to document/window events unless picker is visible.
|
||||
|
||||
v1.0.1
|
||||
------
|
||||
|
||||
* Support for [Bower](http://twitter.github.com/bower/)
|
||||
* Component pickers are now aligned under the input, not the add-on element.
|
||||
* Japanese locale now has "today" and "format".
|
||||
* "remove" method removes `.data().date` if the datepicker is on a non-input.
|
||||
* Events on initialized elements are no longer blocked from bubbling up the DOM (jQuery.live et al can now catch the events).
|
||||
* Component triggers now include `.btn` in addition to `.add-on`.
|
||||
* Updates to README contents.
|
||||
|
||||
v1.0.0
|
||||
------
|
||||
|
||||
Initial release:
|
||||
|
||||
* format option
|
||||
* weekStart option
|
||||
* calendarWeeks option
|
||||
* startDate / endDate options
|
||||
* daysOfWeekDisabled option
|
||||
* autoclose option
|
||||
* startView / mnViewMode options
|
||||
* todayBtn / todayHighlight options
|
||||
* keyboardNavigation option
|
||||
* language option
|
||||
* forceParse option
|
@ -1,41 +0,0 @@
|
||||
# Contributing
|
||||
|
||||
## Support requests
|
||||
|
||||
The issue tracker is not the place for support requests. If you get stuck with bootstrap-datepicker, it's very likely that the fine folks at [StackOverflow](http://stackoverflow.com/) will be able to help you; simply describe the problem you're having and provide them a link to the repo (so they know what code you're using). Another option is to post to the [bootstrap-datepicker google group](https://groups.google.com/group/bootstrap-datepicker).
|
||||
|
||||
## Issues
|
||||
|
||||
If you've found a bug in bootstrap-datepicker, we want to know about it! However, please keep the following in mind:
|
||||
|
||||
* This is not the bootstrap-datepicker from [eyecon.ro](http://www.eyecon.ro/bootstrap-datepicker/). Stefan provided the initial code for bootstrap-datepicker, but this repo is divergent from his codebase. Please make sure you're using either the latest tagged version or the latest master from https://github.com/eternicode/bootstrap-datepicker/ .
|
||||
* A working example of the bug you've found is *much* easier to work with than a description alone. If possible, please provide a link to a demonstration of the bug, perhaps using http://jsfiddle.net/ .
|
||||
* CDN-backed assets can be found at http://bsdp-assets.blackcherry.us/ . These should be used *only* for building test cases, as they may be removed or changed at any time.
|
||||
* Finally, it's possible someone else has already reported the same bug you have. Please search the issue tracker for similar issues before posting your own. Thanks!
|
||||
|
||||
## Pull Requests
|
||||
|
||||
Patches welcome!
|
||||
|
||||
For all cases, you should have your own fork of the repo.
|
||||
|
||||
To submit a pull request for a **new feature**:
|
||||
|
||||
1. Run the tests. Every pull request for a new feature should have an accompanying unit test and docs changes. See the README in the `tests/` and `docs/` directories for details.
|
||||
2. Create a new branch off of the `master` branch for your feature. This is particularly helpful when you want to submit multiple pull requests.
|
||||
3. Add a test (or multiple tests) for your feature. Again, see `tests/README.md`.
|
||||
4. Add your new feature, making the test pass.
|
||||
5. Push to your fork and submit the pull request!
|
||||
|
||||
To submit a **bug fix**:
|
||||
|
||||
1. Create a new branch off of the `master` branch.
|
||||
2. Add a test that demonstrates the bug.
|
||||
3. Make the test pass.
|
||||
4. Push to your fork and submit the pull request!
|
||||
|
||||
To submit a **documentation fix**:
|
||||
|
||||
1. Create a new branch off of the `master` branch.
|
||||
2. Add your documentation fixes (no tests required).
|
||||
3. Push to your fork and submit the pull request!
|
202
public/vendor/bootstrap-datepicker/LICENSE
vendored
202
public/vendor/bootstrap-datepicker/LICENSE
vendored
@ -1,202 +0,0 @@
|
||||
|
||||
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.
|
13
public/vendor/bootstrap-datepicker/README.md
vendored
13
public/vendor/bootstrap-datepicker/README.md
vendored
@ -1,13 +0,0 @@
|
||||
# bootstrap-datepicker
|
||||
|
||||
This is a fork of Stefan Petre's [original code](http://www.eyecon.ro/bootstrap-datepicker/);
|
||||
thanks go to him for getting this thing started!
|
||||
|
||||
Please note that this fork is not used on Stefan's page, nor is it maintained or contributed to by him.
|
||||
|
||||
Versions are incremented according to [semver](http://semver.org/).
|
||||
|
||||
* [Online Demo](http://eternicode.github.io/bootstrap-datepicker/)
|
||||
* [Online Docs](http://bootstrap-datepicker.readthedocs.org/) (ReadTheDocs.com)
|
||||
* [Google Group](https://groups.google.com/group/bootstrap-datepicker/)
|
||||
* [Travis CI ![Build Status](https://travis-ci.org/eternicode/bootstrap-datepicker.png?branch=master)](https://travis-ci.org/eternicode/bootstrap-datepicker)
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"name": "bootstrap-datepicker",
|
||||
"version": "1.3.0",
|
||||
"main": ["js/bootstrap-datepicker.js", "css/datepicker.css", "css/datepicker3.css"],
|
||||
"dependencies": {
|
||||
"jquery" : ">=1.7.1",
|
||||
"bootstrap" : ">=3.0 <4.0"
|
||||
}
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
// Datepicker .less buildfile. Includes select mixins/variables from bootstrap
|
||||
// and imports the included datepicker.less to output a minimal datepicker.css
|
||||
//
|
||||
// Usage:
|
||||
// lessc build.less datepicker.css
|
||||
//
|
||||
// Variables and mixins copied from bootstrap 2.0.2
|
||||
|
||||
// Variables
|
||||
@grayLight: #999;
|
||||
@grayLighter: #eee;
|
||||
@white: #fff;
|
||||
@linkColor: #08c;
|
||||
@btnPrimaryBackground: @linkColor;
|
||||
@orange: #f89406;
|
||||
@baseLineHeight: 18px;
|
||||
|
||||
// Mixins
|
||||
|
||||
// Border Radius
|
||||
.border-radius(@radius: 5px) {
|
||||
-webkit-border-radius: @radius;
|
||||
-moz-border-radius: @radius;
|
||||
border-radius: @radius;
|
||||
}
|
||||
|
||||
// Button backgrounds
|
||||
.buttonBackground(@startColor, @endColor) {
|
||||
.gradientBar(@startColor, @endColor);
|
||||
.reset-filter();
|
||||
&:hover, &:active, &.active, &.disabled, &[disabled] {
|
||||
background-color: @endColor;
|
||||
}
|
||||
&:active,
|
||||
&.active {
|
||||
background-color: darken(@endColor, 10%) e("\9");
|
||||
}
|
||||
}
|
||||
|
||||
// Reset filters for IE
|
||||
.reset-filter() {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
}
|
||||
|
||||
// Gradient Bar Colors for buttons and alerts
|
||||
.gradientBar(@primaryColor, @secondaryColor) {
|
||||
#gradient > .vertical(@primaryColor, @secondaryColor);
|
||||
border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);
|
||||
border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
|
||||
}
|
||||
|
||||
// Gradients
|
||||
#gradient {
|
||||
.vertical(@startColor: #555, @endColor: #333) {
|
||||
background-color: mix(@startColor, @endColor, 60%);
|
||||
background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
|
||||
background-image: -ms-linear-gradient(top, @startColor, @endColor); // IE10
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
|
||||
background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
|
||||
background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
|
||||
background-image: linear-gradient(top, @startColor, @endColor); // The standard
|
||||
background-repeat: repeat-x;
|
||||
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE9 and down
|
||||
}
|
||||
}
|
||||
|
||||
@import "../less/datepicker.less";
|
@ -1,71 +0,0 @@
|
||||
// Datepicker .less buildfile. Includes select mixins/variables from bootstrap
|
||||
// and imports the included datepicker.less to output a minimal datepicker.css
|
||||
//
|
||||
// Usage:
|
||||
// lessc build.less datepicker.css
|
||||
//
|
||||
// Variables and mixins copied from bootstrap 2.0.2
|
||||
|
||||
// Variables
|
||||
@gray: lighten(#000, 33.5%); // #555
|
||||
@gray-light: lighten(#000, 60%); // #999
|
||||
@gray-lighter: lighten(#000, 93.5%); // #eee
|
||||
|
||||
@input-border: #ccc;
|
||||
|
||||
@brand-primary: #428bca;
|
||||
//@btn-default-color: #333;
|
||||
//@btn-default-bg: #fff;
|
||||
//@btn-default-border: #ccc;
|
||||
@btn-primary-color: #fff;
|
||||
@btn-primary-bg: @brand-primary;
|
||||
@btn-primary-border: darken(@btn-primary-bg, 5%);
|
||||
|
||||
|
||||
@btn-link-disabled-color: @gray-light;
|
||||
|
||||
@input-group-addon-bg: @gray-lighter;
|
||||
@input-group-addon-border-color: @input-border;
|
||||
|
||||
@font-size-base: 14px;
|
||||
@line-height-base: 1.428571429; // 20/14
|
||||
@line-height-computed: floor(@font-size-base * @line-height-base); // ~20px
|
||||
|
||||
|
||||
// Mixins
|
||||
|
||||
// Button variants
|
||||
.button-variant(@color; @background; @border) {
|
||||
color: @color;
|
||||
background-color: @background;
|
||||
border-color: @border;
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active,
|
||||
&.active,
|
||||
.open .dropdown-toggle& {
|
||||
color: @color;
|
||||
background-color: darken(@background, 8%);
|
||||
border-color: darken(@border, 12%);
|
||||
}
|
||||
&:active,
|
||||
&.active,
|
||||
.open .dropdown-toggle& {
|
||||
background-image: none;
|
||||
}
|
||||
&.disabled,
|
||||
&[disabled],
|
||||
fieldset[disabled] & {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active,
|
||||
&.active {
|
||||
background-color: @background;
|
||||
border-color: @border
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@import "../less/datepicker3.less";
|
@ -1,61 +0,0 @@
|
||||
// Datepicker standalone .less buildfile. Includes all necessary mixins/variables/rules from bootstrap
|
||||
// and imports the included datepicker.less to output a minimal standalone datepicker.css
|
||||
//
|
||||
// Usage:
|
||||
// lessc build_standalone.less datepicker.css
|
||||
//
|
||||
// Variables, mixins, and rules copied from bootstrap 2.0.2
|
||||
|
||||
@import "build.less";
|
||||
|
||||
// Dropdown css
|
||||
|
||||
@zindexDropdown: 1000;
|
||||
@grayDark: #333;
|
||||
@baseLineHeight: 20px;
|
||||
@tableBackground: transparent; // overall background-color
|
||||
@dropdownBackground: @white;
|
||||
@dropdownBorder: rgba(0,0,0,.2);
|
||||
@dropdownLinkColor: @grayDark;
|
||||
@dropdownLinkColorHover: @white;
|
||||
@dropdownLinkBackgroundHover: @linkColor;
|
||||
|
||||
// Drop shadows
|
||||
.box-shadow(@shadow) {
|
||||
-webkit-box-shadow: @shadow;
|
||||
-moz-box-shadow: @shadow;
|
||||
box-shadow: @shadow;
|
||||
}
|
||||
|
||||
// The dropdown menu (ul)
|
||||
// ----------------------
|
||||
.datepicker.dropdown-menu {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: @zindexDropdown;
|
||||
float: left;
|
||||
display: none; // none by default, but block on "open" of the menu
|
||||
min-width: 160px;
|
||||
list-style: none;
|
||||
background-color: @dropdownBackground;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0,0,0,.2);
|
||||
.border-radius(5px);
|
||||
.box-shadow(0 5px 10px rgba(0,0,0,.2));
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
*border-right-width: 2px;
|
||||
*border-bottom-width: 2px;
|
||||
|
||||
// Normally inherited from bootstrap's `body`
|
||||
color: #333333;
|
||||
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
|
||||
font-size:13px;
|
||||
line-height: @baseLineHeight;
|
||||
|
||||
th, td {
|
||||
padding: 4px 5px;
|
||||
}
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
// Datepicker standalone .less buildfile. Includes all necessary mixins/variables/rules from bootstrap
|
||||
// and imports the included datepicker.less to output a minimal standalone datepicker.css
|
||||
//
|
||||
// Usage:
|
||||
// lessc build_standalone.less datepicker.css
|
||||
//
|
||||
// Variables, mixins, and rules copied from bootstrap 2.0.2
|
||||
|
||||
@import "build3.less";
|
||||
|
||||
// Dropdown css
|
||||
|
||||
@zindex-dropdown: 1000;
|
||||
@gray-dark: #333;
|
||||
@line-height-base: 1.428571429; // 20/14
|
||||
@table-bg: transparent; // overall background-color
|
||||
@dropdown-bg: #fff;
|
||||
@dropdow-border: rgba(0,0,0,.15);
|
||||
@dropdown-link-color: @gray-dark;
|
||||
@dropdown-link-hover-color: #fff;
|
||||
@component-active-bg: @brand-primary;
|
||||
@dropdown-link-active-bg: @component-active-bg;
|
||||
@dropdown-link-hover-bg: @dropdown-link-active-bg;
|
||||
|
||||
// Drop shadows
|
||||
.box-shadow(@shadow) {
|
||||
-webkit-box-shadow: @shadow;
|
||||
-moz-box-shadow: @shadow;
|
||||
box-shadow: @shadow;
|
||||
}
|
||||
|
||||
// The dropdown menu (ul)
|
||||
// ----------------------
|
||||
.datepicker.dropdown-menu {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: @zindex-dropdown;
|
||||
float: left;
|
||||
display: none; // none by default, but block on "open" of the menu
|
||||
min-width: 160px;
|
||||
list-style: none;
|
||||
background-color: @dropdown-bg;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0,0,0,.2);
|
||||
border-radius: 5px;
|
||||
.box-shadow(0 5px 10px rgba(0,0,0,.2));
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
*border-right-width: 2px;
|
||||
*border-bottom-width: 2px;
|
||||
|
||||
// Normally inherited from bootstrap's `body`
|
||||
color: #333333;
|
||||
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
|
||||
font-size:13px;
|
||||
line-height: @line-height-base;
|
||||
|
||||
th, td {
|
||||
padding: 4px 5px;
|
||||
}
|
||||
}
|
20
public/vendor/bootstrap-datepicker/composer.json
vendored
20
public/vendor/bootstrap-datepicker/composer.json
vendored
@ -1,20 +0,0 @@
|
||||
{
|
||||
"name": "eternicode/bootstrap-datepicker",
|
||||
"type": "component",
|
||||
"require": {
|
||||
"robloach/component-installer": "*",
|
||||
"components/bootstrap" : ">=3.0, <4.0",
|
||||
"components/jquery": ">=1.7.1"
|
||||
},
|
||||
"extra": {
|
||||
"component": {
|
||||
"scripts": [
|
||||
"js/bootstrap-datepicker.js"
|
||||
],
|
||||
"styles": [
|
||||
"css/datepicker.css",
|
||||
"css/datepicker3.css"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,512 +0,0 @@
|
||||
/*!
|
||||
* Datepicker for Bootstrap
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*/
|
||||
.datepicker {
|
||||
padding: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
/*.dow {
|
||||
border-top: 1px solid #ddd !important;
|
||||
}*/
|
||||
}
|
||||
.datepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datepicker.datepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.datepicker.datepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
.datepicker-dropdown {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.datepicker-dropdown:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-top: 0;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
}
|
||||
.datepicker-dropdown:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #ffffff;
|
||||
border-top: 0;
|
||||
position: absolute;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-left:before {
|
||||
left: 6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-left:after {
|
||||
left: 7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-right:before {
|
||||
right: 6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-right:after {
|
||||
right: 7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-top:before {
|
||||
top: -7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-top:after {
|
||||
top: -6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-bottom:before {
|
||||
bottom: -7px;
|
||||
border-bottom: 0;
|
||||
border-top: 7px solid #999;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-bottom:after {
|
||||
bottom: -6px;
|
||||
border-bottom: 0;
|
||||
border-top: 6px solid #ffffff;
|
||||
}
|
||||
.datepicker > div {
|
||||
display: none;
|
||||
}
|
||||
.datepicker.days div.datepicker-days {
|
||||
display: block;
|
||||
}
|
||||
.datepicker.months div.datepicker-months {
|
||||
display: block;
|
||||
}
|
||||
.datepicker.years div.datepicker-years {
|
||||
display: block;
|
||||
}
|
||||
.datepicker table {
|
||||
margin: 0;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
.datepicker td,
|
||||
.datepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
.table-striped .datepicker table tr td,
|
||||
.table-striped .datepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datepicker table tr td.day:hover,
|
||||
.datepicker table tr td.day.focused {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker table tr td.old,
|
||||
.datepicker table tr td.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datepicker table tr td.disabled,
|
||||
.datepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td.today,
|
||||
.datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today.disabled:hover {
|
||||
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);
|
||||
color: #000;
|
||||
}
|
||||
.datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today:hover:hover,
|
||||
.datepicker table tr td.today.disabled:hover,
|
||||
.datepicker table tr td.today.disabled:hover:hover,
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today:hover:active,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.active,
|
||||
.datepicker table tr td.today:hover.active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.active,
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today:hover.disabled,
|
||||
.datepicker table tr td.today.disabled.disabled,
|
||||
.datepicker table tr td.today.disabled:hover.disabled,
|
||||
.datepicker table tr td.today[disabled],
|
||||
.datepicker table tr td.today:hover[disabled],
|
||||
.datepicker table tr td.today.disabled[disabled],
|
||||
.datepicker table tr td.today.disabled:hover[disabled] {
|
||||
background-color: #fdf59a;
|
||||
}
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today:hover:active,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.active,
|
||||
.datepicker table tr td.today:hover.active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.active {
|
||||
background-color: #fbf069 \9;
|
||||
}
|
||||
.datepicker table tr td.today:hover:hover {
|
||||
color: #000;
|
||||
}
|
||||
.datepicker table tr td.today.active:hover {
|
||||
color: #fff;
|
||||
}
|
||||
.datepicker table tr td.range,
|
||||
.datepicker table tr td.range:hover,
|
||||
.datepicker table tr td.range.disabled,
|
||||
.datepicker table tr td.range.disabled:hover {
|
||||
background: #eeeeee;
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range.today,
|
||||
.datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today.disabled:hover {
|
||||
background-color: #f3d17a;
|
||||
background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
|
||||
background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
|
||||
border-color: #f3e97a #f3e97a #edde34;
|
||||
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);
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today:hover:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover:hover,
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today:hover:active,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.active,
|
||||
.datepicker table tr td.range.today:hover.active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.active,
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today:hover.disabled,
|
||||
.datepicker table tr td.range.today.disabled.disabled,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled,
|
||||
.datepicker table tr td.range.today[disabled],
|
||||
.datepicker table tr td.range.today:hover[disabled],
|
||||
.datepicker table tr td.range.today.disabled[disabled],
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled] {
|
||||
background-color: #f3e97a;
|
||||
}
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today:hover:active,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.active,
|
||||
.datepicker table tr td.range.today:hover.active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.active {
|
||||
background-color: #efe24b \9;
|
||||
}
|
||||
.datepicker table tr td.selected,
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected.disabled,
|
||||
.datepicker table tr td.selected.disabled:hover {
|
||||
background-color: #9e9e9e;
|
||||
background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
|
||||
background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: -o-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: linear-gradient(top, #b3b3b3, #808080);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
|
||||
border-color: #808080 #808080 #595959;
|
||||
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);
|
||||
}
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected:hover:hover,
|
||||
.datepicker table tr td.selected.disabled:hover,
|
||||
.datepicker table tr td.selected.disabled:hover:hover,
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected:hover:active,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected:hover.active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.active,
|
||||
.datepicker table tr td.selected.disabled,
|
||||
.datepicker table tr td.selected:hover.disabled,
|
||||
.datepicker table tr td.selected.disabled.disabled,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled,
|
||||
.datepicker table tr td.selected[disabled],
|
||||
.datepicker table tr td.selected:hover[disabled],
|
||||
.datepicker table tr td.selected.disabled[disabled],
|
||||
.datepicker table tr td.selected.disabled:hover[disabled] {
|
||||
background-color: #808080;
|
||||
}
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected:hover:active,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected:hover.active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.active {
|
||||
background-color: #666666 \9;
|
||||
}
|
||||
.datepicker table tr td.active,
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active.disabled,
|
||||
.datepicker 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);
|
||||
}
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active:hover:hover,
|
||||
.datepicker table tr td.active.disabled:hover,
|
||||
.datepicker table tr td.active.disabled:hover:hover,
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active:hover:active,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active:hover.active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.active,
|
||||
.datepicker table tr td.active.disabled,
|
||||
.datepicker table tr td.active:hover.disabled,
|
||||
.datepicker table tr td.active.disabled.disabled,
|
||||
.datepicker table tr td.active.disabled:hover.disabled,
|
||||
.datepicker table tr td.active[disabled],
|
||||
.datepicker table tr td.active:hover[disabled],
|
||||
.datepicker table tr td.active.disabled[disabled],
|
||||
.datepicker table tr td.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active:hover:active,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active:hover.active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datepicker 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;
|
||||
}
|
||||
.datepicker table tr td span:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker table tr td span.disabled,
|
||||
.datepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td span.active,
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover {
|
||||
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);
|
||||
}
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active:hover:hover,
|
||||
.datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover:hover,
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active,
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active:hover.disabled,
|
||||
.datepicker table tr td span.active.disabled.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled,
|
||||
.datepicker table tr td span.active[disabled],
|
||||
.datepicker table tr td span.active:hover[disabled],
|
||||
.datepicker table tr td span.active.disabled[disabled],
|
||||
.datepicker table tr td span.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datepicker table tr td span.old,
|
||||
.datepicker table tr td span.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datepicker th.datepicker-switch {
|
||||
width: 145px;
|
||||
}
|
||||
.datepicker thead tr:first-child th,
|
||||
.datepicker tfoot tr th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker thead tr:first-child th:hover,
|
||||
.datepicker tfoot tr th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker .cw {
|
||||
font-size: 10px;
|
||||
width: 12px;
|
||||
padding: 0 2px 0 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.datepicker thead tr:first-child th.cw {
|
||||
cursor: default;
|
||||
background-color: transparent;
|
||||
}
|
||||
.input-append.date .add-on i,
|
||||
.input-prepend.date .add-on i {
|
||||
cursor: pointer;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.input-daterange input {
|
||||
text-align: center;
|
||||
}
|
||||
.input-daterange input:first-child {
|
||||
-webkit-border-radius: 3px 0 0 3px;
|
||||
-moz-border-radius: 3px 0 0 3px;
|
||||
border-radius: 3px 0 0 3px;
|
||||
}
|
||||
.input-daterange input:last-child {
|
||||
-webkit-border-radius: 0 3px 3px 0;
|
||||
-moz-border-radius: 0 3px 3px 0;
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
.input-daterange .add-on {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
min-width: 16px;
|
||||
height: 20px;
|
||||
padding: 4px 5px;
|
||||
font-weight: normal;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
text-shadow: 0 1px 0 #ffffff;
|
||||
vertical-align: middle;
|
||||
background-color: #eeeeee;
|
||||
border: 1px solid #ccc;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
}
|
||||
.datepicker.dropdown-menu {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: 1000;
|
||||
float: left;
|
||||
display: none;
|
||||
min-width: 160px;
|
||||
list-style: none;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
*border-right-width: 2px;
|
||||
*border-bottom-width: 2px;
|
||||
color: #333333;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
}
|
||||
.datepicker.dropdown-menu th,
|
||||
.datepicker.dropdown-menu td {
|
||||
padding: 4px 5px;
|
||||
}
|
@ -1,790 +0,0 @@
|
||||
/*!
|
||||
* Datepicker for Bootstrap
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*/
|
||||
.datepicker {
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
/*.dow {
|
||||
border-top: 1px solid #ddd !important;
|
||||
}*/
|
||||
}
|
||||
.datepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datepicker.datepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.datepicker.datepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
.datepicker-dropdown {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.datepicker-dropdown:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-top: 0;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
}
|
||||
.datepicker-dropdown:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #fff;
|
||||
border-top: 0;
|
||||
position: absolute;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-left:before {
|
||||
left: 6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-left:after {
|
||||
left: 7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-right:before {
|
||||
right: 6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-right:after {
|
||||
right: 7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-top:before {
|
||||
top: -7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-top:after {
|
||||
top: -6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-bottom:before {
|
||||
bottom: -7px;
|
||||
border-bottom: 0;
|
||||
border-top: 7px solid #999;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-bottom:after {
|
||||
bottom: -6px;
|
||||
border-bottom: 0;
|
||||
border-top: 6px solid #fff;
|
||||
}
|
||||
.datepicker > div {
|
||||
display: none;
|
||||
}
|
||||
.datepicker.days div.datepicker-days {
|
||||
display: block;
|
||||
}
|
||||
.datepicker.months div.datepicker-months {
|
||||
display: block;
|
||||
}
|
||||
.datepicker.years div.datepicker-years {
|
||||
display: block;
|
||||
}
|
||||
.datepicker table {
|
||||
margin: 0;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
.datepicker table tr td,
|
||||
.datepicker table tr th {
|
||||
text-align: center;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
.table-striped .datepicker table tr td,
|
||||
.table-striped .datepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datepicker table tr td.day:hover,
|
||||
.datepicker table tr td.day.focused {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker table tr td.old,
|
||||
.datepicker table tr td.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datepicker table tr td.disabled,
|
||||
.datepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td.today,
|
||||
.datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today.disabled:hover {
|
||||
color: #000000;
|
||||
background-color: #ffdb99;
|
||||
border-color: #ffb733;
|
||||
}
|
||||
.datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today:hover:hover,
|
||||
.datepicker table tr td.today.disabled:hover,
|
||||
.datepicker table tr td.today.disabled:hover:hover,
|
||||
.datepicker table tr td.today:focus,
|
||||
.datepicker table tr td.today:hover:focus,
|
||||
.datepicker table tr td.today.disabled:focus,
|
||||
.datepicker table tr td.today.disabled:hover:focus,
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today:hover:active,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.active,
|
||||
.datepicker table tr td.today:hover.active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.today,
|
||||
.open .dropdown-toggle.datepicker table tr td.today:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.today.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
|
||||
color: #000000;
|
||||
background-color: #ffcd70;
|
||||
border-color: #f59e00;
|
||||
}
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today:hover:active,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.active,
|
||||
.datepicker table tr td.today:hover.active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.today,
|
||||
.open .dropdown-toggle.datepicker table tr td.today:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.today.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
|
||||
background-image: none;
|
||||
}
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today:hover.disabled,
|
||||
.datepicker table tr td.today.disabled.disabled,
|
||||
.datepicker table tr td.today.disabled:hover.disabled,
|
||||
.datepicker table tr td.today[disabled],
|
||||
.datepicker table tr td.today:hover[disabled],
|
||||
.datepicker table tr td.today.disabled[disabled],
|
||||
.datepicker table tr td.today.disabled:hover[disabled],
|
||||
fieldset[disabled] .datepicker table tr td.today,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:hover,
|
||||
.datepicker table tr td.today.disabled:hover,
|
||||
.datepicker table tr td.today:hover.disabled:hover,
|
||||
.datepicker table tr td.today.disabled.disabled:hover,
|
||||
.datepicker table tr td.today.disabled:hover.disabled:hover,
|
||||
.datepicker table tr td.today[disabled]:hover,
|
||||
.datepicker table tr td.today:hover[disabled]:hover,
|
||||
.datepicker table tr td.today.disabled[disabled]:hover,
|
||||
.datepicker table tr td.today.disabled:hover[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover:hover,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:hover,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
|
||||
.datepicker table tr td.today.disabled:focus,
|
||||
.datepicker table tr td.today:hover.disabled:focus,
|
||||
.datepicker table tr td.today.disabled.disabled:focus,
|
||||
.datepicker table tr td.today.disabled:hover.disabled:focus,
|
||||
.datepicker table tr td.today[disabled]:focus,
|
||||
.datepicker table tr td.today:hover[disabled]:focus,
|
||||
.datepicker table tr td.today.disabled[disabled]:focus,
|
||||
.datepicker table tr td.today.disabled:hover[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.today:focus,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover:focus,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:focus,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today:hover.disabled:active,
|
||||
.datepicker table tr td.today.disabled.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover.disabled:active,
|
||||
.datepicker table tr td.today[disabled]:active,
|
||||
.datepicker table tr td.today:hover[disabled]:active,
|
||||
.datepicker table tr td.today.disabled[disabled]:active,
|
||||
.datepicker table tr td.today.disabled:hover[disabled]:active,
|
||||
fieldset[disabled] .datepicker table tr td.today:active,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover:active,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:active,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today:hover.disabled.active,
|
||||
.datepicker table tr td.today.disabled.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.disabled.active,
|
||||
.datepicker table tr td.today[disabled].active,
|
||||
.datepicker table tr td.today:hover[disabled].active,
|
||||
.datepicker table tr td.today.disabled[disabled].active,
|
||||
.datepicker table tr td.today.disabled:hover[disabled].active,
|
||||
fieldset[disabled] .datepicker table tr td.today.active,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover.active,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled.active,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
|
||||
background-color: #ffdb99;
|
||||
border-color: #ffb733;
|
||||
}
|
||||
.datepicker table tr td.today:hover:hover {
|
||||
color: #000;
|
||||
}
|
||||
.datepicker table tr td.today.active:hover {
|
||||
color: #fff;
|
||||
}
|
||||
.datepicker table tr td.range,
|
||||
.datepicker table tr td.range:hover,
|
||||
.datepicker table tr td.range.disabled,
|
||||
.datepicker table tr td.range.disabled:hover {
|
||||
background: #eeeeee;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range.today,
|
||||
.datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today.disabled:hover {
|
||||
color: #000000;
|
||||
background-color: #f7ca77;
|
||||
border-color: #f1a417;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today:hover:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover:hover,
|
||||
.datepicker table tr td.range.today:focus,
|
||||
.datepicker table tr td.range.today:hover:focus,
|
||||
.datepicker table tr td.range.today.disabled:focus,
|
||||
.datepicker table tr td.range.today.disabled:hover:focus,
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today:hover:active,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.active,
|
||||
.datepicker table tr td.range.today:hover.active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
|
||||
color: #000000;
|
||||
background-color: #f4bb51;
|
||||
border-color: #bf800c;
|
||||
}
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today:hover:active,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.active,
|
||||
.datepicker table tr td.range.today:hover.active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
|
||||
background-image: none;
|
||||
}
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today:hover.disabled,
|
||||
.datepicker table tr td.range.today.disabled.disabled,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled,
|
||||
.datepicker table tr td.range.today[disabled],
|
||||
.datepicker table tr td.range.today:hover[disabled],
|
||||
.datepicker table tr td.range.today.disabled[disabled],
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled],
|
||||
fieldset[disabled] .datepicker table tr td.range.today,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover,
|
||||
.datepicker table tr td.range.today:hover.disabled:hover,
|
||||
.datepicker table tr td.range.today.disabled.disabled:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled:hover,
|
||||
.datepicker table tr td.range.today[disabled]:hover,
|
||||
.datepicker table tr td.range.today:hover[disabled]:hover,
|
||||
.datepicker table tr td.range.today.disabled[disabled]:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
|
||||
.datepicker table tr td.range.today.disabled:focus,
|
||||
.datepicker table tr td.range.today:hover.disabled:focus,
|
||||
.datepicker table tr td.range.today.disabled.disabled:focus,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled:focus,
|
||||
.datepicker table tr td.range.today[disabled]:focus,
|
||||
.datepicker table tr td.range.today:hover[disabled]:focus,
|
||||
.datepicker table tr td.range.today.disabled[disabled]:focus,
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today:hover.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled:active,
|
||||
.datepicker table tr td.range.today[disabled]:active,
|
||||
.datepicker table tr td.range.today:hover[disabled]:active,
|
||||
.datepicker table tr td.range.today.disabled[disabled]:active,
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled]:active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover:active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today:hover.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled.active,
|
||||
.datepicker table tr td.range.today[disabled].active,
|
||||
.datepicker table tr td.range.today:hover[disabled].active,
|
||||
.datepicker table tr td.range.today.disabled[disabled].active,
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled].active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover.active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
|
||||
background-color: #f7ca77;
|
||||
border-color: #f1a417;
|
||||
}
|
||||
.datepicker table tr td.selected,
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected.disabled,
|
||||
.datepicker table tr td.selected.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #999999;
|
||||
border-color: #555555;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected:hover:hover,
|
||||
.datepicker table tr td.selected.disabled:hover,
|
||||
.datepicker table tr td.selected.disabled:hover:hover,
|
||||
.datepicker table tr td.selected:focus,
|
||||
.datepicker table tr td.selected:hover:focus,
|
||||
.datepicker table tr td.selected.disabled:focus,
|
||||
.datepicker table tr td.selected.disabled:hover:focus,
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected:hover:active,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected:hover.active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #858585;
|
||||
border-color: #373737;
|
||||
}
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected:hover:active,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected:hover.active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
|
||||
background-image: none;
|
||||
}
|
||||
.datepicker table tr td.selected.disabled,
|
||||
.datepicker table tr td.selected:hover.disabled,
|
||||
.datepicker table tr td.selected.disabled.disabled,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled,
|
||||
.datepicker table tr td.selected[disabled],
|
||||
.datepicker table tr td.selected:hover[disabled],
|
||||
.datepicker table tr td.selected.disabled[disabled],
|
||||
.datepicker table tr td.selected.disabled:hover[disabled],
|
||||
fieldset[disabled] .datepicker table tr td.selected,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
|
||||
.datepicker table tr td.selected.disabled:hover,
|
||||
.datepicker table tr td.selected:hover.disabled:hover,
|
||||
.datepicker table tr td.selected.disabled.disabled:hover,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled:hover,
|
||||
.datepicker table tr td.selected[disabled]:hover,
|
||||
.datepicker table tr td.selected:hover[disabled]:hover,
|
||||
.datepicker table tr td.selected.disabled[disabled]:hover,
|
||||
.datepicker table tr td.selected.disabled:hover[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
|
||||
.datepicker table tr td.selected.disabled:focus,
|
||||
.datepicker table tr td.selected:hover.disabled:focus,
|
||||
.datepicker table tr td.selected.disabled.disabled:focus,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled:focus,
|
||||
.datepicker table tr td.selected[disabled]:focus,
|
||||
.datepicker table tr td.selected:hover[disabled]:focus,
|
||||
.datepicker table tr td.selected.disabled[disabled]:focus,
|
||||
.datepicker table tr td.selected.disabled:hover[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected:focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover:focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected:hover.disabled:active,
|
||||
.datepicker table tr td.selected.disabled.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled:active,
|
||||
.datepicker table tr td.selected[disabled]:active,
|
||||
.datepicker table tr td.selected:hover[disabled]:active,
|
||||
.datepicker table tr td.selected.disabled[disabled]:active,
|
||||
.datepicker table tr td.selected.disabled:hover[disabled]:active,
|
||||
fieldset[disabled] .datepicker table tr td.selected:active,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover:active,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:active,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected:hover.disabled.active,
|
||||
.datepicker table tr td.selected.disabled.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled.active,
|
||||
.datepicker table tr td.selected[disabled].active,
|
||||
.datepicker table tr td.selected:hover[disabled].active,
|
||||
.datepicker table tr td.selected.disabled[disabled].active,
|
||||
.datepicker table tr td.selected.disabled:hover[disabled].active,
|
||||
fieldset[disabled] .datepicker table tr td.selected.active,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover.active,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled.active,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
|
||||
background-color: #999999;
|
||||
border-color: #555555;
|
||||
}
|
||||
.datepicker table tr td.active,
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active.disabled,
|
||||
.datepicker table tr td.active.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #428bca;
|
||||
border-color: #357ebd;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active:hover:hover,
|
||||
.datepicker table tr td.active.disabled:hover,
|
||||
.datepicker table tr td.active.disabled:hover:hover,
|
||||
.datepicker table tr td.active:focus,
|
||||
.datepicker table tr td.active:hover:focus,
|
||||
.datepicker table tr td.active.disabled:focus,
|
||||
.datepicker table tr td.active.disabled:hover:focus,
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active:hover:active,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active:hover.active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.active:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.active.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #3276b1;
|
||||
border-color: #285e8e;
|
||||
}
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active:hover:active,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active:hover.active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.active:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.active.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
|
||||
background-image: none;
|
||||
}
|
||||
.datepicker table tr td.active.disabled,
|
||||
.datepicker table tr td.active:hover.disabled,
|
||||
.datepicker table tr td.active.disabled.disabled,
|
||||
.datepicker table tr td.active.disabled:hover.disabled,
|
||||
.datepicker table tr td.active[disabled],
|
||||
.datepicker table tr td.active:hover[disabled],
|
||||
.datepicker table tr td.active.disabled[disabled],
|
||||
.datepicker table tr td.active.disabled:hover[disabled],
|
||||
fieldset[disabled] .datepicker table tr td.active,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:hover,
|
||||
.datepicker table tr td.active.disabled:hover,
|
||||
.datepicker table tr td.active:hover.disabled:hover,
|
||||
.datepicker table tr td.active.disabled.disabled:hover,
|
||||
.datepicker table tr td.active.disabled:hover.disabled:hover,
|
||||
.datepicker table tr td.active[disabled]:hover,
|
||||
.datepicker table tr td.active:hover[disabled]:hover,
|
||||
.datepicker table tr td.active.disabled[disabled]:hover,
|
||||
.datepicker table tr td.active.disabled:hover[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
|
||||
.datepicker table tr td.active.disabled:focus,
|
||||
.datepicker table tr td.active:hover.disabled:focus,
|
||||
.datepicker table tr td.active.disabled.disabled:focus,
|
||||
.datepicker table tr td.active.disabled:hover.disabled:focus,
|
||||
.datepicker table tr td.active[disabled]:focus,
|
||||
.datepicker table tr td.active:hover[disabled]:focus,
|
||||
.datepicker table tr td.active.disabled[disabled]:focus,
|
||||
.datepicker table tr td.active.disabled:hover[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.active:focus,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover:focus,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:focus,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active:hover.disabled:active,
|
||||
.datepicker table tr td.active.disabled.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover.disabled:active,
|
||||
.datepicker table tr td.active[disabled]:active,
|
||||
.datepicker table tr td.active:hover[disabled]:active,
|
||||
.datepicker table tr td.active.disabled[disabled]:active,
|
||||
.datepicker table tr td.active.disabled:hover[disabled]:active,
|
||||
fieldset[disabled] .datepicker table tr td.active:active,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover:active,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:active,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active:hover.disabled.active,
|
||||
.datepicker table tr td.active.disabled.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.disabled.active,
|
||||
.datepicker table tr td.active[disabled].active,
|
||||
.datepicker table tr td.active:hover[disabled].active,
|
||||
.datepicker table tr td.active.disabled[disabled].active,
|
||||
.datepicker table tr td.active.disabled:hover[disabled].active,
|
||||
fieldset[disabled] .datepicker table tr td.active.active,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover.active,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled.active,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
|
||||
background-color: #428bca;
|
||||
border-color: #357ebd;
|
||||
}
|
||||
.datepicker table tr td span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.datepicker table tr td span:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker table tr td span.disabled,
|
||||
.datepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td span.active,
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #428bca;
|
||||
border-color: #357ebd;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active:hover:hover,
|
||||
.datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover:hover,
|
||||
.datepicker table tr td span.active:focus,
|
||||
.datepicker table tr td span.active:hover:focus,
|
||||
.datepicker table tr td span.active.disabled:focus,
|
||||
.datepicker table tr td span.active.disabled:hover:focus,
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #3276b1;
|
||||
border-color: #285e8e;
|
||||
}
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
|
||||
background-image: none;
|
||||
}
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active:hover.disabled,
|
||||
.datepicker table tr td span.active.disabled.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled,
|
||||
.datepicker table tr td span.active[disabled],
|
||||
.datepicker table tr td span.active:hover[disabled],
|
||||
.datepicker table tr td span.active.disabled[disabled],
|
||||
.datepicker table tr td span.active.disabled:hover[disabled],
|
||||
fieldset[disabled] .datepicker table tr td span.active,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active:hover.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled:hover,
|
||||
.datepicker table tr td span.active[disabled]:hover,
|
||||
.datepicker table tr td span.active:hover[disabled]:hover,
|
||||
.datepicker table tr td span.active.disabled[disabled]:hover,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
|
||||
.datepicker table tr td span.active.disabled:focus,
|
||||
.datepicker table tr td span.active:hover.disabled:focus,
|
||||
.datepicker table tr td span.active.disabled.disabled:focus,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled:focus,
|
||||
.datepicker table tr td span.active[disabled]:focus,
|
||||
.datepicker table tr td span.active:hover[disabled]:focus,
|
||||
.datepicker table tr td span.active.disabled[disabled]:focus,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active:hover.disabled:active,
|
||||
.datepicker table tr td span.active.disabled.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled:active,
|
||||
.datepicker table tr td span.active[disabled]:active,
|
||||
.datepicker table tr td span.active:hover[disabled]:active,
|
||||
.datepicker table tr td span.active.disabled[disabled]:active,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled]:active,
|
||||
fieldset[disabled] .datepicker table tr td span.active:active,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover:active,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:active,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active:hover.disabled.active,
|
||||
.datepicker table tr td span.active.disabled.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled.active,
|
||||
.datepicker table tr td span.active[disabled].active,
|
||||
.datepicker table tr td span.active:hover[disabled].active,
|
||||
.datepicker table tr td span.active.disabled[disabled].active,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled].active,
|
||||
fieldset[disabled] .datepicker table tr td span.active.active,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover.active,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled.active,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
|
||||
background-color: #428bca;
|
||||
border-color: #357ebd;
|
||||
}
|
||||
.datepicker table tr td span.old,
|
||||
.datepicker table tr td span.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datepicker th.datepicker-switch {
|
||||
width: 145px;
|
||||
}
|
||||
.datepicker thead tr:first-child th,
|
||||
.datepicker tfoot tr th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker thead tr:first-child th:hover,
|
||||
.datepicker tfoot tr th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker .cw {
|
||||
font-size: 10px;
|
||||
width: 12px;
|
||||
padding: 0 2px 0 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.datepicker thead tr:first-child th.cw {
|
||||
cursor: default;
|
||||
background-color: transparent;
|
||||
}
|
||||
.input-group.date .input-group-addon i {
|
||||
cursor: pointer;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.input-daterange input {
|
||||
text-align: center;
|
||||
}
|
||||
.input-daterange input:first-child {
|
||||
border-radius: 3px 0 0 3px;
|
||||
}
|
||||
.input-daterange input:last-child {
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
.input-daterange .input-group-addon {
|
||||
width: auto;
|
||||
min-width: 16px;
|
||||
padding: 4px 5px;
|
||||
font-weight: normal;
|
||||
line-height: 1.428571429;
|
||||
text-align: center;
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
vertical-align: middle;
|
||||
background-color: #eeeeee;
|
||||
border: solid #cccccc;
|
||||
border-width: 1px 0;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
}
|
||||
.datepicker.dropdown-menu {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: 1000;
|
||||
float: left;
|
||||
display: none;
|
||||
min-width: 160px;
|
||||
list-style: none;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
border-radius: 5px;
|
||||
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
*border-right-width: 2px;
|
||||
*border-bottom-width: 2px;
|
||||
color: #333333;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-size: 13px;
|
||||
line-height: 1.428571429;
|
||||
}
|
||||
.datepicker.dropdown-menu th,
|
||||
.datepicker.dropdown-menu td {
|
||||
padding: 4px 5px;
|
||||
}
|
153
public/vendor/bootstrap-datepicker/docs/Makefile
vendored
153
public/vendor/bootstrap-datepicker/docs/Makefile
vendored
@ -1,153 +0,0 @@
|
||||
# Makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = sphinx-build
|
||||
PAPER =
|
||||
BUILDDIR = _build
|
||||
|
||||
# Internal variables.
|
||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||
PAPEROPT_letter = -D latex_paper_size=letter
|
||||
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||
# the i18n builder cannot share the environment and doctrees with the others
|
||||
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||
|
||||
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
|
||||
|
||||
help:
|
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo " html to make standalone HTML files"
|
||||
@echo " dirhtml to make HTML files named index.html in directories"
|
||||
@echo " singlehtml to make a single large HTML file"
|
||||
@echo " pickle to make pickle files"
|
||||
@echo " json to make JSON files"
|
||||
@echo " htmlhelp to make HTML files and a HTML help project"
|
||||
@echo " qthelp to make HTML files and a qthelp project"
|
||||
@echo " devhelp to make HTML files and a Devhelp project"
|
||||
@echo " epub to make an epub"
|
||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
||||
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
||||
@echo " text to make text files"
|
||||
@echo " man to make manual pages"
|
||||
@echo " texinfo to make Texinfo files"
|
||||
@echo " info to make Texinfo files and run them through makeinfo"
|
||||
@echo " gettext to make PO message catalogs"
|
||||
@echo " changes to make an overview of all changed/added/deprecated items"
|
||||
@echo " linkcheck to check all external links for integrity"
|
||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||
|
||||
clean:
|
||||
-rm -rf $(BUILDDIR)/*
|
||||
|
||||
html:
|
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||
|
||||
dirhtml:
|
||||
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
||||
|
||||
singlehtml:
|
||||
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
||||
|
||||
pickle:
|
||||
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
||||
@echo
|
||||
@echo "Build finished; now you can process the pickle files."
|
||||
|
||||
json:
|
||||
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
||||
@echo
|
||||
@echo "Build finished; now you can process the JSON files."
|
||||
|
||||
htmlhelp:
|
||||
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||
".hhp project file in $(BUILDDIR)/htmlhelp."
|
||||
|
||||
qthelp:
|
||||
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/bootstrap-datepicker.qhcp"
|
||||
@echo "To view the help file:"
|
||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/bootstrap-datepicker.qhc"
|
||||
|
||||
devhelp:
|
||||
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
||||
@echo
|
||||
@echo "Build finished."
|
||||
@echo "To view the help file:"
|
||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/bootstrap-datepicker"
|
||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/bootstrap-datepicker"
|
||||
@echo "# devhelp"
|
||||
|
||||
epub:
|
||||
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
||||
@echo
|
||||
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
||||
|
||||
latex:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo
|
||||
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
||||
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
||||
"(use \`make latexpdf' here to do that automatically)."
|
||||
|
||||
latexpdf:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo "Running LaTeX files through pdflatex..."
|
||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||
|
||||
text:
|
||||
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
||||
@echo
|
||||
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
||||
|
||||
man:
|
||||
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
||||
@echo
|
||||
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
||||
|
||||
texinfo:
|
||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||
@echo
|
||||
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
|
||||
@echo "Run \`make' in that directory to run these through makeinfo" \
|
||||
"(use \`make info' here to do that automatically)."
|
||||
|
||||
info:
|
||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||
@echo "Running Texinfo files through makeinfo..."
|
||||
make -C $(BUILDDIR)/texinfo info
|
||||
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
|
||||
|
||||
gettext:
|
||||
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
|
||||
@echo
|
||||
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
|
||||
|
||||
changes:
|
||||
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
||||
@echo
|
||||
@echo "The overview file is in $(BUILDDIR)/changes."
|
||||
|
||||
linkcheck:
|
||||
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
||||
@echo
|
||||
@echo "Link check complete; look for any errors in the above output " \
|
||||
"or in $(BUILDDIR)/linkcheck/output.txt."
|
||||
|
||||
doctest:
|
||||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
||||
@echo "Testing of doctests in the sources finished, look at the " \
|
||||
"results in $(BUILDDIR)/doctest/output.txt."
|
@ -1,8 +0,0 @@
|
||||
Documentation
|
||||
=============
|
||||
|
||||
Project documentation is built using [Sphinx docs](http://sphinx-doc.org/), which uses [ReST](http://docutils.sf.net/rst.html) for markup. This allows the docs to cover a vast amount of topics without using a thousand-line README file.
|
||||
|
||||
Sphinx docs is pip-installable via `pip install sphinx`. Once installed, open a command line in the docs folder and run `make html`; the output files will be placed in the `_build/html/` directory, and can be browsed (locally) with any browser.
|
||||
|
||||
The docs can also be found online at http://bootstrap-datepicker.readthedocs.org/.
|
Binary file not shown.
Before Width: | Height: | Size: 27 KiB |
248
public/vendor/bootstrap-datepicker/docs/conf.py
vendored
248
public/vendor/bootstrap-datepicker/docs/conf.py
vendored
@ -1,248 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# bootstrap-datepicker documentation build configuration file, created by
|
||||
# sphinx-quickstart on Fri Aug 2 14:45:57 2013.
|
||||
#
|
||||
# This file is execfile()d with the current directory set to its containing dir.
|
||||
#
|
||||
# Note that not all possible configuration values are present in this
|
||||
# autogenerated file.
|
||||
#
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
|
||||
import sys, os
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
#version = ''
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
#release = ''
|
||||
|
||||
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
#sys.path.insert(0, os.path.abspath('.'))
|
||||
|
||||
# -- General configuration -----------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
#needs_sphinx = '1.0'
|
||||
|
||||
primary_domain = 'js'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be extensions
|
||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||
extensions = []
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
#source_encoding = 'utf-8-sig'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'bootstrap-datepicker'
|
||||
copyright = u'2013, eternicode'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#language = None
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
#today = ''
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
exclude_patterns = ['_build']
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all documents.
|
||||
#default_role = None
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||
#add_function_parentheses = True
|
||||
|
||||
# If true, the current module name will be prepended to all description
|
||||
# unit titles (such as .. function::).
|
||||
#add_module_names = True
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
#show_authors = False
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
|
||||
highlight_language = 'javascript'
|
||||
|
||||
# A list of ignored prefixes for module index sorting.
|
||||
#modindex_common_prefix = []
|
||||
|
||||
|
||||
# -- Options for HTML output ---------------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
html_theme = 'default'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
#html_theme_options = {}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
#html_theme_path = []
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
#html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#html_short_title = None
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
#html_logo = None
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
#html_favicon = None
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
#html_last_updated_fmt = '%b %d, %Y'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
#html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
#html_sidebars = {}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
#html_additional_pages = {}
|
||||
|
||||
# If false, no module index is generated.
|
||||
#html_domain_indices = True
|
||||
|
||||
# If false, no index is generated.
|
||||
#html_use_index = True
|
||||
|
||||
# If true, the index is split into individual pages for each letter.
|
||||
#html_split_index = False
|
||||
|
||||
# If true, links to the reST sources are added to the pages.
|
||||
#html_show_sourcelink = True
|
||||
|
||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||
#html_show_sphinx = True
|
||||
|
||||
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||
#html_show_copyright = True
|
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages will
|
||||
# contain a <link> tag referring to it. The value of this option must be the
|
||||
# base URL from which the finished HTML is served.
|
||||
#html_use_opensearch = ''
|
||||
|
||||
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
||||
#html_file_suffix = None
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'bootstrap-datepickerdoc'
|
||||
|
||||
|
||||
# -- Options for LaTeX output --------------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#'preamble': '',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||
latex_documents = [
|
||||
('index', 'bootstrap-datepicker.tex', u'bootstrap-datepicker Documentation',
|
||||
u'eternicode', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
#latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
#latex_use_parts = False
|
||||
|
||||
# If true, show page references after internal links.
|
||||
#latex_show_pagerefs = False
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#latex_show_urls = False
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#latex_domain_indices = True
|
||||
|
||||
|
||||
# -- Options for manual page output --------------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('index', 'bootstrap-datepicker', u'bootstrap-datepicker Documentation',
|
||||
[u'eternicode'], 1)
|
||||
]
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#man_show_urls = False
|
||||
|
||||
|
||||
# -- Options for Texinfo output ------------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
('index', 'bootstrap-datepicker', u'bootstrap-datepicker Documentation',
|
||||
u'eternicode', 'bootstrap-datepicker', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#texinfo_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#texinfo_domain_indices = True
|
||||
|
||||
# How to display URL addresses: 'footnote', 'no', or 'inline'.
|
||||
#texinfo_show_urls = 'footnote'
|
@ -1,48 +0,0 @@
|
||||
Events
|
||||
======
|
||||
|
||||
Datepicker triggers a number of events in certain circumstances. All events have extra data attached to the event object that is passed to any event handlers::
|
||||
|
||||
$('.datepicker').datepicker()
|
||||
.on(picker_event, function(e){
|
||||
# `e` here contains the extra attributes
|
||||
});
|
||||
|
||||
* ``date``: the relevant Date object, in local timezone. For a multidate picker, this will be the latest date picked.
|
||||
* ``dates``: an Array of Date objects, in local timezone, when using a multidate picker.
|
||||
* ``format([ix], [format])``: a function to make formatting ``date`` easier. ``ix`` can be the index of a Date in the ``dates`` array to format; if absent, the last date selected will be used. ``format`` can be any format string that datepicker supports; if absent, the format set on the datepicker will be used. Both arguments are optional.
|
||||
|
||||
|
||||
show
|
||||
----
|
||||
|
||||
Fired when the date picker is displayed.
|
||||
|
||||
|
||||
hide
|
||||
----
|
||||
|
||||
Fired when the date picker is hidden.
|
||||
|
||||
|
||||
clearDate
|
||||
---------
|
||||
|
||||
Fired when the date is cleared, normally when the "clear" button (enabled with the ``clearBtn`` option) is pressed.
|
||||
|
||||
|
||||
changeDate
|
||||
----------
|
||||
|
||||
Fired when the date is changed.
|
||||
|
||||
|
||||
changeYear
|
||||
----------
|
||||
|
||||
Fired when the *view* year is changed from decade view.
|
||||
|
||||
changeMonth
|
||||
-----------
|
||||
|
||||
Fired when the *view* month is changed from year view.
|
28
public/vendor/bootstrap-datepicker/docs/i18n.rst
vendored
28
public/vendor/bootstrap-datepicker/docs/i18n.rst
vendored
@ -1,28 +0,0 @@
|
||||
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.datepicker.dates``, before calling ``.datepicker()``. Example::
|
||||
|
||||
$.fn.datepicker.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",
|
||||
clear: "Clear"
|
||||
};
|
||||
|
||||
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:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<script type="text/javascript" src="bootstrap-datepicker.XX.js" charset="UTF-8"></script>
|
||||
|
||||
::
|
||||
|
||||
$('.datepicker').datepicker({
|
||||
language: 'XX'
|
||||
});
|
122
public/vendor/bootstrap-datepicker/docs/index.rst
vendored
122
public/vendor/bootstrap-datepicker/docs/index.rst
vendored
@ -1,122 +0,0 @@
|
||||
bootstrap-datepicker
|
||||
====================
|
||||
|
||||
Bootstrap-datepicker provides a flexible datepicker widget in the Twitter bootstrap style.
|
||||
|
||||
.. figure:: _static/demo_head.png
|
||||
:align: center
|
||||
|
||||
This is a fork of Stefan Petre's `original code <http://www.eyecon.ro/bootstrap-datepicker/>`_; thanks go to him for getting this thing started!
|
||||
|
||||
Please note that this fork is not used on Stefan's page at this time, nor is it maintained or contributed to by him.
|
||||
|
||||
Versions are incremented according to `semver <http://semver.org/>`_.
|
||||
|
||||
`Online Demo <http://eternicode.github.io/bootstrap-datepicker/>`_
|
||||
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
* `Bootstrap`_ 2.0.4+
|
||||
* `jQuery`_ 1.7.1+
|
||||
|
||||
.. _Bootstrap: http://twitter.github.com/bootstrap/
|
||||
.. _jQuery: http://jquery.com/
|
||||
|
||||
These are the specific versions bootstrap-datepicker is tested against (``js`` files) and built against (``css`` files). Use other versions at your own risk.
|
||||
|
||||
|
||||
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::
|
||||
|
||||
$ lessc build/build_standalone.less datepicker.css
|
||||
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
Call the datepicker via javascript::
|
||||
|
||||
$('.datepicker').datepicker()
|
||||
|
||||
|
||||
Data API
|
||||
^^^^^^^^
|
||||
|
||||
As with bootstrap's own plugins, datepicker provides a data-api that can be used to instantiate datepickers without the need for custom javascript. For most datepickers, simply set ``data-provide="datepicker"`` on the element you want to initialize, and it will be intialized lazily, in true bootstrap fashion. For inline datepickers, use ``data-provide="datepicker-inline"``; these will be immediately initialized on page load, and cannot be lazily loaded.
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<input data-provide="datepicker">
|
||||
|
||||
You can disable datepicker's data-api in the same way as you would disable other bootstrap plugins::
|
||||
|
||||
$(document).off('.datepicker.data-api');
|
||||
|
||||
|
||||
Configuration
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
:doc:`options` are passed to the ``datepicker`` function via an options hash at instantiation::
|
||||
|
||||
$('.datepicker').datepicker({
|
||||
format: 'mm/dd/yyyy',
|
||||
startDate: '-3d'
|
||||
})
|
||||
|
||||
Most options may be provided as data-attributes on the target element:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<input class="datepicker" data-date-format="mm/dd/yyyy">
|
||||
|
||||
::
|
||||
|
||||
$('.datepicker').datepicker({
|
||||
startDate: '-3d'
|
||||
})
|
||||
|
||||
Defaults for all options can be modified directly by changing values in the ``$.fn.datepicker.defaults`` hash::
|
||||
|
||||
$.fn.datepicker.defaults.format = "mm/dd/yyyy";
|
||||
$('.datepicker').datepicker({
|
||||
startDate: '-3d'
|
||||
})
|
||||
|
||||
|
||||
No Conflict mode
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
``$.fn.datepicker.noConflict`` provides a way to avoid conflict with other jQuery datepicker plugins::
|
||||
|
||||
var datepicker = $.fn.datepicker.noConflict(); // return $.fn.datepicker to previously assigned value
|
||||
$.fn.bootstrapDP = datepicker; // give $().bootstrapDP the bootstrap-datepicker functionality
|
||||
|
||||
|
||||
|
||||
Table of Contents
|
||||
-----------------
|
||||
|
||||
.. toctree::
|
||||
|
||||
markup
|
||||
options
|
||||
methods
|
||||
events
|
||||
keyboard
|
||||
i18n
|
||||
|
||||
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`modindex`
|
||||
* :ref:`search`
|
||||
|
@ -1,27 +0,0 @@
|
||||
Keyboard support
|
||||
================
|
||||
|
||||
The datepicker includes keyboard navigation. The "focused date" is kept track of and highlighted (as with mouse hover) during keyboard nav, and is cleared when a date is toggled or the picker is hidden.
|
||||
|
||||
up, down, left, right arrow keys
|
||||
--------------------------------
|
||||
|
||||
By themselves, left/right will move focus backward/forward one day, up/down will move focus back/forward one week.
|
||||
|
||||
With the shift key, up/left will move focus backward one month, down/right will move focus forward one month.
|
||||
|
||||
With the ctrl key, up/left will move focus backward one year, down/right will move focus forward one year.
|
||||
|
||||
Shift+ctrl behaves the same as ctrl -- that is, it does not change both month and year simultaneously, only the year.
|
||||
|
||||
enter
|
||||
-----
|
||||
|
||||
When the picker is visible, enter will toggle the focused date (if there is one). When the picker is not visible, enter will have normal effects -- submitting the current form, etc.
|
||||
|
||||
When the date is deselected, the ``clearDate`` event is triggered; otherwise, the ``changeDate`` event is triggered. If ``autoclose`` is enabled, the picker will be hidden after selection or deselection.
|
||||
|
||||
escape
|
||||
------
|
||||
|
||||
The escape key can be used to clear the focused date and hide and re-show the datepicker; hiding the picker is necessary if the user wants to manually edit the value.
|
190
public/vendor/bootstrap-datepicker/docs/make.bat
vendored
190
public/vendor/bootstrap-datepicker/docs/make.bat
vendored
@ -1,190 +0,0 @@
|
||||
@ECHO OFF
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
if "%SPHINXBUILD%" == "" (
|
||||
set SPHINXBUILD=sphinx-build
|
||||
)
|
||||
set BUILDDIR=_build
|
||||
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
|
||||
set I18NSPHINXOPTS=%SPHINXOPTS% .
|
||||
if NOT "%PAPER%" == "" (
|
||||
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
|
||||
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
|
||||
)
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
if "%1" == "help" (
|
||||
:help
|
||||
echo.Please use `make ^<target^>` where ^<target^> is one of
|
||||
echo. html to make standalone HTML files
|
||||
echo. dirhtml to make HTML files named index.html in directories
|
||||
echo. singlehtml to make a single large HTML file
|
||||
echo. pickle to make pickle files
|
||||
echo. json to make JSON files
|
||||
echo. htmlhelp to make HTML files and a HTML help project
|
||||
echo. qthelp to make HTML files and a qthelp project
|
||||
echo. devhelp to make HTML files and a Devhelp project
|
||||
echo. epub to make an epub
|
||||
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
|
||||
echo. text to make text files
|
||||
echo. man to make manual pages
|
||||
echo. texinfo to make Texinfo files
|
||||
echo. gettext to make PO message catalogs
|
||||
echo. changes to make an overview over all changed/added/deprecated items
|
||||
echo. linkcheck to check all external links for integrity
|
||||
echo. doctest to run all doctests embedded in the documentation if enabled
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "clean" (
|
||||
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
|
||||
del /q /s %BUILDDIR%\*
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "html" (
|
||||
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "dirhtml" (
|
||||
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "singlehtml" (
|
||||
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "pickle" (
|
||||
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; now you can process the pickle files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "json" (
|
||||
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; now you can process the JSON files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "htmlhelp" (
|
||||
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; now you can run HTML Help Workshop with the ^
|
||||
.hhp project file in %BUILDDIR%/htmlhelp.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "qthelp" (
|
||||
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
||||
.qhcp project file in %BUILDDIR%/qthelp, like this:
|
||||
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\bootstrap-datepicker.qhcp
|
||||
echo.To view the help file:
|
||||
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\bootstrap-datepicker.ghc
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "devhelp" (
|
||||
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "epub" (
|
||||
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The epub file is in %BUILDDIR%/epub.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "latex" (
|
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "text" (
|
||||
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The text files are in %BUILDDIR%/text.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "man" (
|
||||
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The manual pages are in %BUILDDIR%/man.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "texinfo" (
|
||||
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "gettext" (
|
||||
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "changes" (
|
||||
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.The overview file is in %BUILDDIR%/changes.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "linkcheck" (
|
||||
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Link check complete; look for any errors in the above output ^
|
||||
or in %BUILDDIR%/linkcheck/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "doctest" (
|
||||
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Testing of doctests in the sources finished, look at the ^
|
||||
results in %BUILDDIR%/doctest/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
:end
|
@ -1,50 +0,0 @@
|
||||
Markup
|
||||
=======
|
||||
|
||||
The following are examples of supported markup. On their own, these will not provide a datepicker widget; you will need to instantiate the datepicker on the markup.
|
||||
|
||||
|
||||
input
|
||||
-----
|
||||
|
||||
The simplest case: focusing the input (clicking or tabbing into it) will show the picker.
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<input value="02-16-2012">
|
||||
|
||||
component
|
||||
---------
|
||||
|
||||
Adding the ``date`` class to an ``input-append`` or ``input-prepend`` bootstrap component will allow the ``add-on`` elements to trigger the picker.
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<div class="input-append date">
|
||||
<input value="12-02-2012">
|
||||
<span class="add-on"><i class="icon-th"></i></span>
|
||||
</div>
|
||||
|
||||
|
||||
date-range
|
||||
----------
|
||||
|
||||
Using the ``input-daterange`` construct with multiple child inputs will instantiate one picker per input and link them together to allow selecting ranges.
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<div class="input-daterange">
|
||||
<input value="2012-04-05" />
|
||||
<span class="add-on">to</span>
|
||||
<input value="2012-04-07" />
|
||||
</div>
|
||||
|
||||
|
||||
inline or embedded
|
||||
------------------
|
||||
|
||||
Instantiating the datepicker on a simple div will give an embedded picker that is always visible.
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<div></div>
|
164
public/vendor/bootstrap-datepicker/docs/methods.rst
vendored
164
public/vendor/bootstrap-datepicker/docs/methods.rst
vendored
@ -1,164 +0,0 @@
|
||||
Methods
|
||||
=======
|
||||
|
||||
Methods are called on a datepicker by call the ``datepicker`` function with a string first argument, followed by any arguments the method takes::
|
||||
|
||||
$('.datepicker').datepicker('method', arg1, arg2);
|
||||
|
||||
|
||||
remove
|
||||
------
|
||||
|
||||
Arguments: None
|
||||
|
||||
Remove the datepicker. Removes attached events, internal attached objects, and added HTML elements.
|
||||
|
||||
|
||||
show
|
||||
----
|
||||
|
||||
Arguments: None
|
||||
|
||||
Show the picker.
|
||||
|
||||
|
||||
hide
|
||||
----
|
||||
|
||||
Arguments: None
|
||||
|
||||
Hide the picker.
|
||||
|
||||
|
||||
update
|
||||
------
|
||||
|
||||
Arguments:
|
||||
|
||||
* date (String|Date, optional)
|
||||
|
||||
Update the datepicker with given argument or the current input value.
|
||||
|
||||
If ``date`` is provided and is a Date object, it is assumed to be a "local" date object, and will be converted to UTC for internal use.
|
||||
|
||||
::
|
||||
|
||||
$('.datepicker').datepicker('update');
|
||||
$('.datepicker').datepicker('update', '2011-03-05');
|
||||
$('.datepicker').datepicker('update', new Date(2011, 2, 5));
|
||||
|
||||
|
||||
setDate
|
||||
-------
|
||||
|
||||
Arguments:
|
||||
|
||||
* date (Date)
|
||||
|
||||
Sets the internal date. ``date`` is assumed to be a "local" date object, and will be converted to UTC for internal use.
|
||||
|
||||
|
||||
setUTCDate
|
||||
----------
|
||||
|
||||
Arguments:
|
||||
|
||||
* date (Date)
|
||||
|
||||
Sets the internal date. ``date`` is assumed to be a UTC date object, and will not be converted.
|
||||
|
||||
|
||||
setDates
|
||||
--------
|
||||
|
||||
Arguments:
|
||||
|
||||
* date[, date[, ...]] (Date)
|
||||
|
||||
or
|
||||
|
||||
* [date[, date[, ...]]] (Array)
|
||||
|
||||
Sets the internal date list; accepts multiple dates or a single array of dates as arguments. Each ``date`` is assumed to mbe a "local" date object, and will be converted to UTC for internal use. For use with multidate pickers.
|
||||
|
||||
|
||||
setUTCDates
|
||||
-----------
|
||||
|
||||
Arguments:
|
||||
|
||||
* date[, date[, ...]] (Date)
|
||||
|
||||
or
|
||||
|
||||
* [date[, date[, ...]]] (Array)
|
||||
|
||||
Sets the internal date list. Each ``date`` is assumed to be a UTC date object, and will not be converted. For use with multidate pickers.
|
||||
|
||||
|
||||
getDate
|
||||
-------
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns a localized date object representing the internal date object of the first datepicker in the selection. For multidate pickers, returns the latest date selected.
|
||||
|
||||
|
||||
getUTCDate
|
||||
----------
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns the internal UTC date object, as-is and unconverted to local time, of the first datepicker in the selection. For multidate pickers, returns the latest date selected.
|
||||
|
||||
|
||||
getDates
|
||||
--------
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns a list of localized date objects representing the internal date objects of the first datepicker in the selection. For use with multidate pickers.
|
||||
|
||||
|
||||
getUTCDates
|
||||
-----------
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns the internal list of UTC date objects, as they are and unconverted to local time, of the first datepicker in the selection. For use with multidate pickers.
|
||||
|
||||
|
||||
setStartDate
|
||||
------------
|
||||
|
||||
Arguments:
|
||||
|
||||
* startDate (Date)
|
||||
|
||||
Sets a new lower date limit on the datepicker. See :ref:`startdate` for valid values.
|
||||
|
||||
Omit startDate (or provide an otherwise falsey value) to unset the limit.
|
||||
|
||||
|
||||
setEndDate
|
||||
----------
|
||||
|
||||
Arguments:
|
||||
|
||||
* endDate (Date)
|
||||
|
||||
Sets a new upper date limit on the datepicker. See :ref:`enddate` for valid values.
|
||||
|
||||
Omit endDate (or provide an otherwise falsey value) to unset the limit.
|
||||
|
||||
|
||||
setDaysOfWeekDisabled
|
||||
---------------------
|
||||
|
||||
Arguments:
|
||||
|
||||
* daysOfWeekDisabled (String|Array)
|
||||
|
||||
Sets the days of week that should be disabled. See :ref:`daysofweekdisabled` for valid values.
|
||||
|
||||
Omit daysOfWeekDisabled (or provide an otherwise falsey value) to unset the disabled days.
|
191
public/vendor/bootstrap-datepicker/docs/options.rst
vendored
191
public/vendor/bootstrap-datepicker/docs/options.rst
vendored
@ -1,191 +0,0 @@
|
||||
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).
|
||||
|
||||
Most options can be provided via data-attributes. An option can be converted to a data-attribute by taking its name, replacing each uppercase letter with its lowercase equivalent preceded by a dash, and prepending "data-date-" to the result. For example, ``startDate`` would be ``data-date-start-date``, ``format`` would be ``data-date-format``, and ``daysOfWeekDisabled`` would be ``data-date-days-of-week-disabled``.
|
||||
|
||||
|
||||
autoclose
|
||||
---------
|
||||
|
||||
Boolean. Default: false
|
||||
|
||||
Whether or not to close the datepicker immediately when a date is selected.
|
||||
|
||||
|
||||
beforeShowDay
|
||||
-------------
|
||||
|
||||
Function(Date). Default: $.noop
|
||||
|
||||
A function that takes a date as a parameter and returns one of the following values:
|
||||
|
||||
* undefined to have no effect
|
||||
* A Boolean, indicating whether or not this date is selectable
|
||||
* A String representing additional CSS classes to apply to the date's cell
|
||||
* An object with the following properties:
|
||||
|
||||
* ``enabled``: same as the Boolean value above
|
||||
* ``classes``: same as the String value above
|
||||
* ``tooltip``: a tooltip to apply to this date, via the ``title`` HTML attribute
|
||||
|
||||
|
||||
calendarWeeks
|
||||
-------------
|
||||
|
||||
Boolean. Default: false
|
||||
|
||||
Whether or not to show week numbers to the left of week rows.
|
||||
|
||||
|
||||
clearBtn
|
||||
--------
|
||||
|
||||
Boolean. Default: false
|
||||
|
||||
If true, displays a "Clear" button at the bottom of the datepicker to clear the input value. If "autoclose" is also set to true, this button will also close the datepicker.
|
||||
|
||||
|
||||
.. _daysofweekdisabled:
|
||||
|
||||
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]``.
|
||||
|
||||
|
||||
.. _enddate:
|
||||
|
||||
endDate
|
||||
-------
|
||||
|
||||
Date. Default: End of time
|
||||
|
||||
The latest date that may be selected; all later dates will be disabled.
|
||||
|
||||
|
||||
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`.
|
||||
|
||||
|
||||
format
|
||||
------
|
||||
|
||||
String. Default: "mm/dd/yyyy"
|
||||
|
||||
The date format, combination of d, dd, D, DD, m, mm, M, MM, yy, yyyy.
|
||||
|
||||
* d, dd: Numeric date, no leading zero and leading zero, respectively. Eg, 5, 05.
|
||||
* D, DD: Abbreviated and full weekday names, respectively. Eg, Mon, Monday.
|
||||
* m, mm: Numeric month, no leading zero and leading zero, respectively. Eg, 7, 07.
|
||||
* M, MM: Abbreviated and full month names, respectively. Eg, Jan, January
|
||||
* yy, yyyy: 2- and 4-digit years, respectively. Eg, 12, 2012.
|
||||
|
||||
|
||||
inputs
|
||||
------
|
||||
|
||||
Array. Default: None
|
||||
|
||||
A list of inputs to be used in a range picker, which will be attached to the selected element. Allows for explicitly creating a range picker on a non-standard element.
|
||||
|
||||
|
||||
keyboardNavigation
|
||||
------------------
|
||||
|
||||
Boolean. Default: true
|
||||
|
||||
Whether or not to allow date navigation by arrow keys.
|
||||
|
||||
|
||||
language
|
||||
--------
|
||||
|
||||
String. Default: "en"
|
||||
|
||||
The IETF code (eg "en" for English, "pt-BR" for Brazilian Portuguese) 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). If a full code (eg "de-DE") is supplied the picker will first check for an "de-DE" language and if not found will fallback and check for a "de" language. If an unknown language code is given, English will be used. See :doc:`i18n`.
|
||||
|
||||
|
||||
minViewMode
|
||||
-----------
|
||||
|
||||
Number, String. Default: 0, "days"
|
||||
|
||||
Set a limit for the view mode. Accepts: "days" or 0, "months" or 1, and "years" or 2.
|
||||
Gives the ability to pick only a month or an year. The day is set to the 1st for "months", and the month is set to January for "years".
|
||||
|
||||
|
||||
multidate
|
||||
---------
|
||||
|
||||
Boolean, Number. Default: false
|
||||
|
||||
Enable multidate picking. Each date in month view acts as a toggle button, keeping track of which dates the user has selected in order. If a number is given, the picker will limit how many dates can be selected to that number, dropping the oldest dates from the list when the number is exceeded. ``true`` equates to no limit. The input's value (if present) is set to a string generated by joining the dates, formatted, with ``multidateSeparator``.
|
||||
|
||||
|
||||
multidateSeparator
|
||||
------------------
|
||||
|
||||
String. Default: ","
|
||||
|
||||
The string that will appear between dates when generating the input's value. When parsing the input's value for a multidate picker, this will also be used to split the incoming string to separate multiple formatted dates; as such, it is highly recommended that you not use a string that could be a substring of a formatted date (eg, using '-' to separate dates when your format is 'yyyy-mm-dd').
|
||||
|
||||
|
||||
orientation
|
||||
-----------
|
||||
|
||||
String. Default: "auto"
|
||||
|
||||
A space-separated string consisting of one or two of "left" or "right", "top" or "bottom", and "auto" (may be omitted); for example, "top left", "bottom" (horizontal orientation will default to "auto"), "right" (vertical orientation will default to "auto"), "auto top". Allows for fixed placement of the picker popup.
|
||||
|
||||
"orientation" refers to the location of the picker popup's "anchor"; you can also think of it as the location of the trigger element (input, component, etc) relative to the picker.
|
||||
|
||||
"auto" triggers "smart orientation" of the picker. Horizontal orientation will default to "left" and left offset will be tweaked to keep the picker inside the browser viewport; vertical orientation will simply choose "top" or "bottom", whichever will show more of the picker in the viewport.
|
||||
|
||||
.. _startdate:
|
||||
|
||||
startDate
|
||||
---------
|
||||
|
||||
Date. Default: Beginning of time
|
||||
|
||||
The earliest date that may be selected; all earlier dates will be disabled.
|
||||
|
||||
|
||||
startView
|
||||
---------
|
||||
|
||||
Number, String. Default: 0, "month"
|
||||
|
||||
The view that the datepicker should show when it is opened. Accepts values of 0 or "month" for month view (the default), 1 or "year" for the 12-month overview, and 2 or "decade" for the 10-year overview. Useful for date-of-birth datepickers.
|
||||
|
||||
|
||||
todayBtn
|
||||
--------
|
||||
|
||||
Boolean, "linked". Default: false
|
||||
|
||||
If true or "linked", displays a "Today" button at the bottom of the datepicker 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.
|
||||
|
||||
|
||||
weekStart
|
||||
---------
|
||||
|
||||
Integer. Default: 0
|
||||
|
||||
Day of the week start. 0 (Sunday) to 6 (Saturday)
|
File diff suppressed because it is too large
Load Diff
@ -1,15 +0,0 @@
|
||||
/**
|
||||
* Arabic translation for bootstrap-datepicker
|
||||
* Mohammed Alshehri <alshehri866@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.dates['ar'] = {
|
||||
days: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"],
|
||||
daysShort: ["أحد", "اثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت", "أحد"],
|
||||
daysMin: ["ح", "ن", "ث", "ع", "خ", "ج", "س", "ح"],
|
||||
months: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
|
||||
monthsShort: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
|
||||
today: "هذا اليوم",
|
||||
rtl: true
|
||||
};
|
||||
}(jQuery));
|
@ -1,12 +0,0 @@
|
||||
// Azerbaijani
|
||||
;(function($){
|
||||
$.fn.datepicker.dates['az'] = {
|
||||
days: ["Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə", "Bazar"],
|
||||
daysShort: ["B.", "B.e", "Ç.a", "Ç.", "C.a", "C.", "Ş.", "B."],
|
||||
daysMin: ["B.", "B.e", "Ç.a", "Ç.", "C.a", "C.", "Ş.", "B."],
|
||||
months: ["Yanvar", "Fevral", "Mart", "Aprel", "May", "İyun", "İyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"],
|
||||
monthsShort: ["Yan", "Fev", "Mar", "Apr", "May", "İyun", "İyul", "Avq", "Sen", "Okt", "Noy", "Dek"],
|
||||
today: "Bu gün",
|
||||
weekStart: 1
|
||||
};
|
||||
}(jQuery));
|
@ -1,14 +0,0 @@
|
||||
/**
|
||||
* Bulgarian translation for bootstrap-datepicker
|
||||
* Apostol Apostolov <apostol.s.apostolov@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.dates['bg'] = {
|
||||
days: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота", "Неделя"],
|
||||
daysShort: ["Нед", "Пон", "Вто", "Сря", "Чет", "Пет", "Съб", "Нед"],
|
||||
daysMin: ["Н", "П", "В", "С", "Ч", "П", "С", "Н"],
|
||||
months: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"],
|
||||
monthsShort: ["Ян", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Ное", "Дек"],
|
||||
today: "днес"
|
||||
};
|
||||
}(jQuery));
|
@ -1,14 +0,0 @@
|
||||
/**
|
||||
* Catalan translation for bootstrap-datepicker
|
||||
* J. Garcia <jogaco.en@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.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"
|
||||
};
|
||||
}(jQuery));
|
@ -1,15 +0,0 @@
|
||||
/**
|
||||
* Czech translation for bootstrap-datepicker
|
||||
* Matěj Koubík <matej@koubik.name>
|
||||
* Fixes by Michal Remiš <michal.remis@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.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"
|
||||
};
|
||||
}(jQuery));
|
@ -1,14 +0,0 @@
|
||||
/**
|
||||
* Welsh translation for bootstrap-datepicker
|
||||
* S. Morris <s.morris@bangor.ac.uk>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.dates['cy'] = {
|
||||
days: ["Sul", "Llun", "Mawrth", "Mercher", "Iau", "Gwener", "Sadwrn", "Sul"],
|
||||
daysShort: ["Sul", "Llu", "Maw", "Mer", "Iau", "Gwe", "Sad", "Sul"],
|
||||
daysMin: ["Su", "Ll", "Ma", "Me", "Ia", "Gwe", "Sa", "Su"],
|
||||
months: ["Ionawr", "Chewfror", "Mawrth", "Ebrill", "Mai", "Mehefin", "Gorfennaf", "Awst", "Medi", "Hydref", "Tachwedd", "Rhagfyr"],
|
||||
monthsShort: ["Ion", "Chw", "Maw", "Ebr", "Mai", "Meh", "Gor", "Aws", "Med", "Hyd", "Tach", "Rha"],
|
||||
today: "Heddiw"
|
||||
};
|
||||
}(jQuery));
|
@ -1,15 +0,0 @@
|
||||
/**
|
||||
* Danish translation for bootstrap-datepicker
|
||||
* Christian Pedersen <http://github.com/chripede>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.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",
|
||||
clear: "Nulstil"
|
||||
};
|
||||
}(jQuery));
|
@ -1,17 +0,0 @@
|
||||
/**
|
||||
* German translation for bootstrap-datepicker
|
||||
* Sam Zurcher <sam@orelias.ch>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.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",
|
||||
clear: "Löschen",
|
||||
weekStart: 1,
|
||||
format: "dd.mm.yyyy"
|
||||
};
|
||||
}(jQuery));
|
@ -1,13 +0,0 @@
|
||||
/**
|
||||
* Greek translation for bootstrap-datepicker
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.dates['el'] = {
|
||||
days: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο", "Κυριακή"],
|
||||
daysShort: ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ", "Κυρ"],
|
||||
daysMin: ["Κυ", "Δε", "Τρ", "Τε", "Πε", "Πα", "Σα", "Κυ"],
|
||||
months: ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"],
|
||||
monthsShort: ["Ιαν", "Φεβ", "Μαρ", "Απρ", "Μάι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ"],
|
||||
today: "Σήμερα"
|
||||
};
|
||||
}(jQuery));
|
@ -1,14 +0,0 @@
|
||||
/**
|
||||
* Spanish translation for bootstrap-datepicker
|
||||
* Bruno Bonamin <bruno.bonamin@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.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"
|
||||
};
|
||||
}(jQuery));
|
@ -1,18 +0,0 @@
|
||||
/**
|
||||
* Estonian translation for bootstrap-datepicker
|
||||
* Ando Roots <https://github.com/anroots>
|
||||
* Fixes by Illimar Tambek <<https://github.com/ragulka>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.dates['et'] = {
|
||||
days: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev", "Pühapäev"],
|
||||
daysShort: ["Pühap", "Esmasp", "Teisip", "Kolmap", "Neljap", "Reede", "Laup", "Pühap"],
|
||||
daysMin: ["P", "E", "T", "K", "N", "R", "L", "P"],
|
||||
months: ["Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"],
|
||||
monthsShort: ["Jaan", "Veebr", "Märts", "Apr", "Mai", "Juuni", "Juuli", "Aug", "Sept", "Okt", "Nov", "Dets"],
|
||||
today: "Täna",
|
||||
clear: "Tühjenda",
|
||||
weekStart: 1,
|
||||
format: "dd.mm.yyyy"
|
||||
};
|
||||
}(jQuery));
|
@ -1,17 +0,0 @@
|
||||
/**
|
||||
* Persian translation for bootstrap-datepicker
|
||||
* Mostafa Rokooie <mostafa.rokooie@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.dates['fa'] = {
|
||||
days: ["یکشنبه", "دوشنبه", "سهشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه", "یکشنبه"],
|
||||
daysShort: ["یک", "دو", "سه", "چهار", "پنج", "جمعه", "شنبه", "یک"],
|
||||
daysMin: ["ی", "د", "س", "چ", "پ", "ج", "ش", "ی"],
|
||||
months: ["ژانویه", "فوریه", "مارس", "آوریل", "مه", "ژوئن", "ژوئیه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "دسامبر"],
|
||||
monthsShort: ["ژان", "فور", "مار", "آور", "مه", "ژون", "ژوی", "اوت", "سپت", "اکت", "نوا", "دسا"],
|
||||
today: "امروز",
|
||||
clear: "پاک کن",
|
||||
weekStart: 1,
|
||||
format: "yyyy/mm/dd"
|
||||
};
|
||||
}(jQuery));
|
@ -1,16 +0,0 @@
|
||||
/**
|
||||
* Finnish translation for bootstrap-datepicker
|
||||
* Jaakko Salonen <https://github.com/jsalonen>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.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",
|
||||
weekStart: 1,
|
||||
format: "d.m.yyyy"
|
||||
};
|
||||
}(jQuery));
|
@ -1,17 +0,0 @@
|
||||
/**
|
||||
* French translation for bootstrap-datepicker
|
||||
* Nico Mollet <nico.mollet@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.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", "Fév", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc"],
|
||||
today: "Aujourd'hui",
|
||||
clear: "Effacer",
|
||||
weekStart: 1,
|
||||
format: "dd/mm/yyyy"
|
||||
};
|
||||
}(jQuery));
|
@ -1,11 +0,0 @@
|
||||
;(function($){
|
||||
$.fn.datepicker.dates['gl'] = {
|
||||
days: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado", "Domingo"],
|
||||
daysShort: ["Dom", "Lun", "Mar", "Mér", "Xov", "Ven", "Sáb", "Dom"],
|
||||
daysMin: ["Do", "Lu", "Ma", "Me", "Xo", "Ve", "Sa", "Do"],
|
||||
months: ["Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xuño", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro"],
|
||||
monthsShort: ["Xan", "Feb", "Mar", "Abr", "Mai", "Xun", "Xul", "Ago", "Sep", "Out", "Nov", "Dec"],
|
||||
today: "Hoxe",
|
||||
clear: "Limpar"
|
||||
};
|
||||
}(jQuery));
|
@ -1,15 +0,0 @@
|
||||
/**
|
||||
* Hebrew translation for bootstrap-datepicker
|
||||
* Sagie Maoz <sagie@maoz.info>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.dates['he'] = {
|
||||
days: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"],
|
||||
daysShort: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"],
|
||||
daysMin: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"],
|
||||
months: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"],
|
||||
monthsShort: ["ינו", "פבר", "מרץ", "אפר", "מאי", "יונ", "יול", "אוג", "ספט", "אוק", "נוב", "דצמ"],
|
||||
today: "היום",
|
||||
rtl: true
|
||||
};
|
||||
}(jQuery));
|
@ -1,13 +0,0 @@
|
||||
/**
|
||||
* Croatian localisation
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.dates['hr'] = {
|
||||
days: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota", "Nedjelja"],
|
||||
daysShort: ["Ned", "Pon", "Uto", "Sri", "Č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: ["Sij", "Velj", "Ožu", "Tra", "Svi", "Lip", "Srp", "Kol", "Ruj", "Lis", "Stu", "Pro"],
|
||||
today: "Danas"
|
||||
};
|
||||
}(jQuery));
|
@ -1,16 +0,0 @@
|
||||
/**
|
||||
* Hungarian translation for bootstrap-datepicker
|
||||
* Sotus László <lacisan@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.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: ["Va", "Hé", "Ke", "Sz", "Cs", "Pé", "Sz", "Va"],
|
||||
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",
|
||||
weekStart: 1,
|
||||
format: "yyyy.mm.dd"
|
||||
};
|
||||
}(jQuery));
|
@ -1,15 +0,0 @@
|
||||
/**
|
||||
* Bahasa translation for bootstrap-datepicker
|
||||
* Azwar Akbar <azwar.akbar@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.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"],
|
||||
today: "Hari Ini",
|
||||
clear: "Kosongkan"
|
||||
};
|
||||
}(jQuery));
|
@ -1,14 +0,0 @@
|
||||
/**
|
||||
* Icelandic translation for bootstrap-datepicker
|
||||
* Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
|
||||
*/
|
||||
;(function($){
|
||||
$.fn.datepicker.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"
|
||||
};
|
||||
}(jQuery));
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user