mirror of https://github.com/itflow-org/itflow
Initial Integration of fullcalendar.io JS library, currently can see listed events
This commit is contained in:
parent
4b86947dd7
commit
f1ee97670c
|
|
@ -13,44 +13,109 @@ $sql = mysqli_query($mysqli,"SELECT * FROM calendars, calendar_events WHERE cale
|
|||
|
||||
?>
|
||||
|
||||
<div id='calendar'></div>
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<h5 class="float-left mt-2"><i class="fa fa-calendar mr-2"></i>Events</h5>
|
||||
<button type="button" class="btn btn-primary badge-pill mr-auto float-right" data-toggle="modal" data-target="#addCalendarEventModal"><i class="fas fa-fw fa-calendar-plus"></i></button>
|
||||
<form>
|
||||
<select onchange="this.form.submit()" class="form-control mt-5" name="calendar_id">
|
||||
<option value="">- ALL Calendars -</option>
|
||||
<?php
|
||||
|
||||
while($row = mysqli_fetch_array($sql_calendars)){
|
||||
$calendar_id = $row['calendar_id'];
|
||||
$calendar_name = $row['calendar_name'];
|
||||
?>
|
||||
<option <?php if($calendar_id == $calendar_selected_id){ ?> selected <?php } ?> value="<?php echo $calendar_id; ?>"> <?php echo $calendar_name; ?></option>
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
</select>
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-borderless table-hover" id="dataTable" width="100%" cellspacing="0">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Times</th>
|
||||
<th>Title</th>
|
||||
<th>Calendar</th>
|
||||
<th class="text-center">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<div class="col-md-10">
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<h5 class="float-left mt-2"><i class="fa fa-calendar mr-2"></i>Events</h5>
|
||||
<button type="button" class="btn btn-primary badge-pill mr-auto float-right" data-toggle="modal" data-target="#addCalendarEventModal"><i class="fas fa-fw fa-calendar-plus"></i></button>
|
||||
<form>
|
||||
<select onchange="this.form.submit()" class="form-control mt-5" name="calendar_id">
|
||||
<option value="">- ALL Calendars -</option>
|
||||
<?php
|
||||
|
||||
while($row = mysqli_fetch_array($sql_calendars)){
|
||||
$calendar_id = $row['calendar_id'];
|
||||
$calendar_name = $row['calendar_name'];
|
||||
?>
|
||||
<option <?php if($calendar_id == $calendar_selected_id){ ?> selected <?php } ?> value="<?php echo $calendar_id; ?>"> <?php echo $calendar_name; ?></option>
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
</select>
|
||||
</form>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-borderless table-hover" id="dataTable" width="100%" cellspacing="0">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Times</th>
|
||||
<th>Title</th>
|
||||
<th>Calendar</th>
|
||||
<th class="text-center">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
|
||||
while($row = mysqli_fetch_array($sql)){
|
||||
$calendar_event_id = $row['calendar_event_id'];
|
||||
$calendar_event_title = $row['calendar_event_title'];
|
||||
$calendar_event_start = $row['calendar_event_start'];
|
||||
$calendar_event_end = $row['calendar_event_end'];
|
||||
$calendar_id = $row['calendar_id'];
|
||||
$calendar_name = $row['calendar_name'];
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td><?php echo date( 'm/d/y', strtotime($calendar_event_start)); ?></td>
|
||||
<td><?php echo date( 'g:i A', strtotime($calendar_event_start)); ?> - <?php echo date( 'g:i A', strtotime($calendar_event_end)); ?></td>
|
||||
<td><?php echo $calendar_event_title; ?></td>
|
||||
<td><?php echo $calendar_name; ?></td>
|
||||
<td>
|
||||
<div class="dropdown dropleft text-center">
|
||||
<button class="btn btn-secondary btn-sm" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<i class="fas fa-ellipsis-h"></i>
|
||||
</button>
|
||||
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
|
||||
<a class="dropdown-item" href="#" data-toggle="modal" data-target="#editCalendarEventModal<?php echo $calendar_event_id; ?>">Edit</a>
|
||||
<a class="dropdown-item" href="post.php?delete_calendar_event=<?php echo $calendar_event_id; ?>">Delete</a>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
include("edit_calendar_event_modal.php");
|
||||
}
|
||||
?>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include("add_calendar_event_modal.php"); ?>
|
||||
|
||||
<?php include("footer.php"); ?>
|
||||
|
||||
<script>
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var calendarEl = document.getElementById('calendar');
|
||||
|
||||
var calendar = new FullCalendar.Calendar(calendarEl, {
|
||||
plugins: [ 'interaction', 'dayGrid', 'timeGrid', 'list' ],
|
||||
defaultView: 'dayGridMonth',
|
||||
header: {
|
||||
left: 'prev,next today',
|
||||
center: 'title',
|
||||
right: 'dayGridMonth,timeGridWeek,timeGridDay,listMonth'
|
||||
},
|
||||
events: [
|
||||
<?php
|
||||
|
||||
$sql = mysqli_query($mysqli,"SELECT * FROM calendar_events");
|
||||
while($row = mysqli_fetch_array($sql)){
|
||||
$calendar_event_id = $row['calendar_event_id'];
|
||||
$calendar_event_title = $row['calendar_event_title'];
|
||||
|
|
@ -58,37 +123,13 @@ $sql = mysqli_query($mysqli,"SELECT * FROM calendars, calendar_events WHERE cale
|
|||
$calendar_event_end = $row['calendar_event_end'];
|
||||
$calendar_id = $row['calendar_id'];
|
||||
$calendar_name = $row['calendar_name'];
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td><?php echo date( 'm/d/y', strtotime($calendar_event_start)); ?></td>
|
||||
<td><?php echo date( 'g:i A', strtotime($calendar_event_start)); ?> - <?php echo date( 'g:i A', strtotime($calendar_event_end)); ?></td>
|
||||
<td><?php echo $calendar_event_title; ?></td>
|
||||
<td><?php echo $calendar_name; ?></td>
|
||||
<td>
|
||||
<div class="dropdown dropleft text-center">
|
||||
<button class="btn btn-secondary btn-sm" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<i class="fas fa-ellipsis-h"></i>
|
||||
</button>
|
||||
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
|
||||
<a class="dropdown-item" href="#" data-toggle="modal" data-target="#editCalendarEventModal<?php echo $calendar_event_id; ?>">Edit</a>
|
||||
<a class="dropdown-item" href="post.php?delete_calendar_event=<?php echo $calendar_event_id; ?>">Delete</a>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
include("edit_calendar_event_modal.php");
|
||||
echo "{ title: '$calendar_event_title', start: '$calendar_event_start' },";
|
||||
}
|
||||
?>
|
||||
]
|
||||
});
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
calendar.render();
|
||||
});
|
||||
|
||||
<?php include("add_calendar_event_modal.php"); ?>
|
||||
|
||||
<?php include("footer.php");
|
||||
</script>
|
||||
|
|
@ -0,0 +1,505 @@
|
|||
<?php include("header.php"); ?>
|
||||
|
||||
<?php
|
||||
|
||||
if(isset($_GET['year'])){
|
||||
$year = intval($_GET['year']);
|
||||
}else{
|
||||
$year = date('Y');
|
||||
}
|
||||
|
||||
//GET THE YEARS
|
||||
$sql_payment_years = mysqli_query($mysqli,"SELECT DISTINCT YEAR(payment_date) AS payment_year FROM payments ORDER BY payment_year DESC");
|
||||
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('contact_id') AS num FROM contacts WHERE client_id = $client_id"));
|
||||
$num_contacts = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('location_id') AS num FROM locations WHERE client_id = $client_id"));
|
||||
$num_locations = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('asset_id') AS num FROM assets WHERE client_id = $client_id"));
|
||||
$num_assets = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('ticket_id') AS num FROM tickets WHERE client_id = $client_id"));
|
||||
$num_tickets = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('vendor_id') AS num FROM vendors WHERE client_id = $client_id"));
|
||||
$num_vendors = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('login_id') AS num FROM logins WHERE client_id = $client_id"));
|
||||
$num_logins = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('network_id') AS num FROM networks WHERE client_id = $client_id"));
|
||||
$num_networks = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('domain_id') AS num FROM domains WHERE client_id = $client_id"));
|
||||
$num_domains = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('software_id') AS num FROM software WHERE client_id = $client_id"));
|
||||
$num_software = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('invoice_id') AS num FROM invoices WHERE client_id = $client_id"));
|
||||
$num_invoices = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('quote_id') AS num FROM quotes WHERE client_id = $client_id"));
|
||||
$num_quotes = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('recurring_id') AS num FROM recurring WHERE client_id = $client_id"));
|
||||
$num_recurring = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('payment_id') AS num FROM payments, invoices WHERE payments.invoice_id = invoices.invoice_id AND invoices.client_id = $client_id"));
|
||||
$num_payments = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('file_id') AS num FROM files WHERE client_id = $client_id"));
|
||||
$num_files = $row['num'];
|
||||
|
||||
$row = mysqli_fetch_assoc(mysqli_query($mysqli,"SELECT COUNT('note_id') AS num FROM notes WHERE client_id = $client_id"));
|
||||
$num_notes = $row['num'];
|
||||
|
||||
?>
|
||||
|
||||
<form>
|
||||
<select onchange="this.form.submit()" class="form-control mb-3" name="year">
|
||||
<?php
|
||||
|
||||
while($row = mysqli_fetch_array($sql_payment_years)){
|
||||
$payment_year = $row['payment_year'];
|
||||
?>
|
||||
<option <?php if($year == $payment_year){ ?> selected <?php } ?> > <?php echo $payment_year; ?></option>
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
</select>
|
||||
</form>
|
||||
|
||||
<!-- Icon Cards-->
|
||||
<div class="row">
|
||||
<div class="col-xl-4 col-sm-6 mb-3">
|
||||
<div class="card text-white bg-primary o-hidden h-100">
|
||||
<div class="card-body">
|
||||
<div class="card-body-icon">
|
||||
<i class="fas fa-fw fa-money-check"></i>
|
||||
</div>
|
||||
<div class="mr-5">Total Incomes <h1>$<?php echo number_format($total_income,2); ?></h1></div>
|
||||
<hr>
|
||||
Recievables: $<?php echo number_format($recievables,2); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-4 col-sm-6 mb-3">
|
||||
<div class="card text-white bg-danger o-hidden h-100">
|
||||
<div class="card-body">
|
||||
<div class="card-body-icon">
|
||||
<i class="fas fa-fw fa-shopping-cart"></i>
|
||||
</div>
|
||||
<div class="mr-5">Total Expenses <h1>$<?php echo number_format($total_expenses,2); ?></h1></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-4 col-sm-6 mb-3">
|
||||
<div class="card text-white bg-success o-hidden h-100">
|
||||
<div class="card-body">
|
||||
<div class="card-body-icon">
|
||||
<i class="fas fa-fw fa-heart"></i>
|
||||
</div>
|
||||
<div class="mr-5">Total Profit <h1>$<?php echo number_format($profit,2); ?></h1></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
<!-- Area Chart Example-->
|
||||
<div class="card mb-3">
|
||||
<div class="card-header"><i class="fas fa-fw fa-chart-area"></i> Cash Flow</div>
|
||||
<div class="card-body">
|
||||
<canvas id="myAreaChart" width="100%" height="25"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4">
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-chart-pie"></i>
|
||||
Income By Category
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<canvas id="incomeByCategoryPieChart" width="100%" height="60"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4">
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-chart-pie"></i>
|
||||
Expense By Category
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<canvas id="expenseByCategoryPieChart" width="100%" height="60"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4">
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-chart-pie"></i>
|
||||
Expense By Vendor
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<canvas id="expenseByVendorPieChart" width="100%" height="60"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Account Balance
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
<?php
|
||||
while($row = mysqli_fetch_array($sql_accounts)){
|
||||
$account_id = $row['account_id'];
|
||||
$account_name = $row['account_name'];
|
||||
$opening_balance = $row['opening_balance'];
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td><?php echo $account_name; ?></a></td>
|
||||
<?php
|
||||
$sql2 = mysqli_query($mysqli,"SELECT SUM(payment_amount) AS total_payments FROM payments WHERE account_id = $account_id");
|
||||
$row2 = mysqli_fetch_array($sql2);
|
||||
|
||||
$sql3 = mysqli_query($mysqli,"SELECT SUM(expense_amount) AS total_expenses FROM expenses WHERE account_id = $account_id");
|
||||
$row3 = mysqli_fetch_array($sql3);
|
||||
|
||||
$balance = $opening_balance + $row2['total_payments'] - $row3['total_expenses'];
|
||||
if($balance == ''){
|
||||
$balance = '0.00';
|
||||
}
|
||||
?>
|
||||
|
||||
<td class="text-right text-monospace">$<?php echo number_format($balance,2); ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- .col -->
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Latest Payments
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-borderless">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Customer</th>
|
||||
<th>Invoice</th>
|
||||
<th class="text-right">Amount</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
while($row = mysqli_fetch_array($sql_latest_income_payments)){
|
||||
$payment_date = $row['payment_date'];
|
||||
$payment_amount = $row['payment_amount'];
|
||||
$invoice_number = $row['invoice_number'];
|
||||
$client_name = $row['client_name'];
|
||||
?>
|
||||
<tr>
|
||||
<td><?php echo $payment_date; ?></td>
|
||||
<td><?php echo $client_name; ?></td>
|
||||
<td><?php echo $invoice_number; ?></td>
|
||||
<td class="text-right text-monospace">$<?php echo number_format($payment_amount,2); ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- .col -->
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Latest Expenses
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-borderless">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Vendor</th>
|
||||
<th>Category</th>
|
||||
<th class="text-right">Amount</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
while($row = mysqli_fetch_array($sql_latest_expenses)){
|
||||
$expense_date = $row['expense_date'];
|
||||
$expense_amount = $row['expense_amount'];
|
||||
$vendor_name = $row['vendor_name'];
|
||||
$category_name = $row['category_name'];
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td><?php echo $expense_date; ?></td>
|
||||
<td><?php echo $vendor_name; ?></td>
|
||||
<td><?php echo $category_name; ?></td>
|
||||
<td class="text-right text-monospace">$<?php echo number_format($expense_amount,2); ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- .col -->
|
||||
</div> <!-- row -->
|
||||
|
||||
|
||||
|
||||
<?php include("footer.php"); ?>
|
||||
<script>
|
||||
// Set new default font family and font color to mimic Bootstrap's default styling
|
||||
Chart.defaults.global.defaultFontFamily = '-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif';
|
||||
Chart.defaults.global.defaultFontColor = '#292b2c';
|
||||
|
||||
// Area Chart Example
|
||||
var ctx = document.getElementById("myAreaChart");
|
||||
var myLineChart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Nov", "Dec"],
|
||||
datasets: [{
|
||||
label: "Income",
|
||||
lineTension: 0.3,
|
||||
backgroundColor: "rgba(2,117,216,0.2)",
|
||||
borderColor: "rgba(2,117,216,1)",
|
||||
pointRadius: 5,
|
||||
pointBackgroundColor: "rgba(2,117,216,1)",
|
||||
pointBorderColor: "rgba(255,255,255,0.8)",
|
||||
pointHoverRadius: 5,
|
||||
pointHoverBackgroundColor: "rgba(2,117,216,1)",
|
||||
pointHitRadius: 50,
|
||||
pointBorderWidth: 2,
|
||||
data: [
|
||||
<?php
|
||||
for($month = 1; $month<=12; $month++) {
|
||||
$sql_payments = mysqli_query($mysqli,"SELECT SUM(payment_amount) AS payment_amount_for_month FROM payments, invoices WHERE payments.invoice_id = invoices.invoice_id AND YEAR(payment_date) = $year AND MONTH(payment_date) = $month");
|
||||
$row = mysqli_fetch_array($sql_payments);
|
||||
$income_for_month = $row['payment_amount_for_month'];
|
||||
if($income_for_month > 0 AND $income_for_month > $largest_income_month){
|
||||
$largest_income_month = $income_for_month;
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
<?php echo "$income_for_month,"; ?>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
],
|
||||
}],
|
||||
},
|
||||
options: {
|
||||
scales: {
|
||||
xAxes: [{
|
||||
time: {
|
||||
unit: 'date'
|
||||
},
|
||||
gridLines: {
|
||||
display: false
|
||||
},
|
||||
ticks: {
|
||||
maxTicksLimit: 12
|
||||
}
|
||||
}],
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
min: 0,
|
||||
max: <?php echo roundUpToNearestMultiple($largest_income_month); ?>,
|
||||
maxTicksLimit: 5
|
||||
},
|
||||
gridLines: {
|
||||
color: "rgba(0, 0, 0, .125)",
|
||||
}
|
||||
}],
|
||||
},
|
||||
legend: {
|
||||
display: false
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Set new default font family and font color to mimic Bootstrap's default styling
|
||||
Chart.defaults.global.defaultFontFamily = '-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif';
|
||||
Chart.defaults.global.defaultFontColor = '#292b2c';
|
||||
|
||||
// Pie Chart Example
|
||||
var ctx = document.getElementById("incomeByCategoryPieChart");
|
||||
var myPieChart = new Chart(ctx, {
|
||||
type: 'pie',
|
||||
data: {
|
||||
labels: [
|
||||
<?php
|
||||
$sql_categories = mysqli_query($mysqli,"SELECT DISTINCT category_name, categories.category_id FROM categories, invoices WHERE invoices.category_id = categories.category_id AND invoice_status = 'Paid' AND YEAR(invoice_date) = $year");
|
||||
while($row = mysqli_fetch_array($sql_categories)){
|
||||
$category_name = $row['category_name'];
|
||||
echo "\"$category_name\",";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
],
|
||||
datasets: [{
|
||||
data: [
|
||||
<?php
|
||||
$sql_categories = mysqli_query($mysqli,"SELECT DISTINCT category_name, categories.category_id FROM categories, invoices WHERE invoices.category_id = categories.category_id AND invoice_status = 'Paid' AND YEAR(invoice_date) = $year");
|
||||
while($row = mysqli_fetch_array($sql_categories)){
|
||||
$category_id = $row['category_id'];
|
||||
|
||||
$sql_invoices = mysqli_query($mysqli,"SELECT SUM(invoice_amount) AS income_amount_for_year FROM invoices WHERE category_id = $category_id AND YEAR(invoice_date) = $year");
|
||||
$row = mysqli_fetch_array($sql_invoices);
|
||||
$income_amount_for_year = $row['income_amount_for_year'];
|
||||
echo "$income_amount_for_year,";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
],
|
||||
backgroundColor: [
|
||||
<?php
|
||||
$sql_categories = mysqli_query($mysqli,"SELECT DISTINCT category_name, categories.category_id, category_color FROM categories, invoices WHERE invoices.category_id = categories.category_id AND YEAR(invoice_date) = $year");
|
||||
while($row = mysqli_fetch_array($sql_categories)){
|
||||
$category_color = $row['category_color'];
|
||||
echo "\"$category_color\",";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
],
|
||||
}],
|
||||
},
|
||||
});
|
||||
|
||||
// Set new default font family and font color to mimic Bootstrap's default styling
|
||||
Chart.defaults.global.defaultFontFamily = '-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif';
|
||||
Chart.defaults.global.defaultFontColor = '#292b2c';
|
||||
|
||||
// Pie Chart Example
|
||||
var ctx = document.getElementById("expenseByCategoryPieChart");
|
||||
var myPieChart = new Chart(ctx, {
|
||||
type: 'pie',
|
||||
data: {
|
||||
labels: [
|
||||
<?php
|
||||
$sql_categories = mysqli_query($mysqli,"SELECT DISTINCT category_name, categories.category_id FROM categories, expenses WHERE expenses.category_id = categories.category_id AND YEAR(expense_date) = $year");
|
||||
while($row = mysqli_fetch_array($sql_categories)){
|
||||
$category_name = $row['category_name'];
|
||||
echo "\"$category_name\",";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
],
|
||||
datasets: [{
|
||||
data: [
|
||||
<?php
|
||||
$sql_categories = mysqli_query($mysqli,"SELECT DISTINCT category_name, categories.category_id FROM categories, expenses WHERE expenses.category_id = categories.category_id AND YEAR(expense_date) = $year");
|
||||
while($row = mysqli_fetch_array($sql_categories)){
|
||||
$category_id = $row['category_id'];
|
||||
|
||||
$sql_expenses = mysqli_query($mysqli,"SELECT SUM(expense_amount) AS expense_amount_for_year FROM expenses WHERE category_id = $category_id AND YEAR(expense_date) = $year");
|
||||
$row = mysqli_fetch_array($sql_expenses);
|
||||
$expense_amount_for_year = $row['expense_amount_for_year'];
|
||||
echo "$expense_amount_for_year,";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
],
|
||||
backgroundColor: [
|
||||
<?php
|
||||
$sql_categories = mysqli_query($mysqli,"SELECT DISTINCT category_name, category_color FROM categories, expenses WHERE expenses.category_id = categories.category_id AND YEAR(expense_date) = $year");
|
||||
while($row = mysqli_fetch_array($sql_categories)){
|
||||
$category_color = $row['category_color'];
|
||||
echo "\"$category_color\",";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
],
|
||||
}],
|
||||
},
|
||||
});
|
||||
|
||||
// Pie Chart Example
|
||||
var ctx = document.getElementById("expenseByVendorPieChart");
|
||||
var myPieChart = new Chart(ctx, {
|
||||
type: 'pie',
|
||||
data: {
|
||||
labels: [
|
||||
<?php
|
||||
$sql_vendors = mysqli_query($mysqli,"SELECT DISTINCT vendor_name, vendors.vendor_id FROM vendors, expenses WHERE expenses.vendor_id = vendors.vendor_id AND YEAR(expense_date) = $year");
|
||||
while($row = mysqli_fetch_array($sql_vendors)){
|
||||
$vendor_name = $row['vendor_name'];
|
||||
echo "\"$vendor_name\",";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
],
|
||||
datasets: [{
|
||||
data: [
|
||||
<?php
|
||||
$sql_vendors = mysqli_query($mysqli,"SELECT DISTINCT vendor_name, vendors.vendor_id FROM vendors, expenses WHERE expenses.vendor_id = vendors.vendor_id AND YEAR(expense_date) = $year");
|
||||
while($row = mysqli_fetch_array($sql_vendors)){
|
||||
$vendor_id = $row['vendor_id'];
|
||||
|
||||
$sql_expenses = mysqli_query($mysqli,"SELECT SUM(expense_amount) AS expense_amount_for_year FROM expenses WHERE vendor_id = $vendor_id AND YEAR(expense_date) = $year");
|
||||
$row = mysqli_fetch_array($sql_expenses);
|
||||
$expense_amount_for_year = $row['expense_amount_for_year'];
|
||||
echo "$expense_amount_for_year,";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
],
|
||||
backgroundColor: [
|
||||
<?php
|
||||
$sql_categories = mysqli_query($mysqli,"SELECT DISTINCT category_name, category_color FROM categories, expenses WHERE expenses.category_id = categories.category_id AND YEAR(expense_date) = $year");
|
||||
while($row = mysqli_fetch_array($sql_categories)){
|
||||
$category_color = $row['category_color'];
|
||||
echo "\"$category_color\",";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
],
|
||||
}],
|
||||
},
|
||||
});
|
||||
|
||||
</script>
|
||||
|
|
@ -27,6 +27,10 @@
|
|||
<script src="vendor/Bootstrap-3-Typeahead/bootstrap3-typeahead.min.js"></script>
|
||||
<script src="vendor/moment/min/moment.min.js"></script>
|
||||
<script src="vendor/datepicker/build/js/tempusdominus-bootstrap-4.min.js"></script>
|
||||
<script src='vendor/fullcalendar/core/main.min.js'></script>
|
||||
<script src='vendor/fullcalendar/daygrid/main.min.js'></script>
|
||||
<script src='vendor/fullcalendar/timegrid/main.min.js'></script>
|
||||
<script src='vendor/fullcalendar/list/main.min.js'></script>
|
||||
|
||||
<!-- Custom scripts for all pages-->
|
||||
<script src="js/sb-admin.min.js"></script>
|
||||
|
|
|
|||
|
|
@ -34,6 +34,11 @@
|
|||
|
||||
<!-- Custom Style Sheet -->
|
||||
<link href="css/style.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<link href='vendor/fullcalendar/core/main.min.css' rel='stylesheet' />
|
||||
<link href='vendor/fullcalendar/daygrid/main.min.css' rel='stylesheet' />
|
||||
<link href='vendor/fullcalendar/timegrid/main.min.css' rel='stylesheet' />
|
||||
<link href='vendor/fullcalendar/list/main.min.css' rel='stylesheet' />
|
||||
|
||||
</head>
|
||||
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ if(isset($_GET['year'])){
|
|||
//GET unique years from expenses and payments
|
||||
$sql_all_years = mysqli_query($mysqli,"SELECT YEAR(expense_date) AS all_years FROM expenses UNION DISTINCT SELECT YEAR(payment_date) FROM payments ORDER BY all_years DESC");
|
||||
|
||||
$sql_categories_income = mysqli_query($mysqli,"SELECT * FROM categories WHERE category_type = 'Income' ORDER BY category_name ASC");
|
||||
$sql_categories_income = mysqli_query($mysqli,"SELECT * FROM categories WHERE category_type = 'Income' ORDER BY category_name ASC");
|
||||
|
||||
$sql_categories_expense = mysqli_query($mysqli,"SELECT * FROM categories WHERE category_type = 'Expense' ORDER BY category_name ASC");
|
||||
$sql_categories_expense = mysqli_query($mysqli,"SELECT * FROM categories WHERE category_type = 'Expense' ORDER BY category_name ASC");
|
||||
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
/*!
|
||||
FullCalendar Bootstrap Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
.fc.fc-bootstrap a {
|
||||
text-decoration: none; }
|
||||
|
||||
.fc.fc-bootstrap a[data-goto]:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.fc-bootstrap hr.fc-divider {
|
||||
border-color: inherit; }
|
||||
|
||||
.fc-bootstrap .fc-today.alert {
|
||||
border-radius: 0; }
|
||||
|
||||
.fc-bootstrap a.fc-event:not([href]):not([tabindex]) {
|
||||
color: #fff; }
|
||||
|
||||
.fc-bootstrap .fc-popover.card {
|
||||
position: absolute; }
|
||||
|
||||
/* Popover
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-bootstrap .fc-popover .card-body {
|
||||
padding: 0; }
|
||||
|
||||
/* TimeGrid Slats (lines that run horizontally)
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-bootstrap .fc-time-grid .fc-slats table {
|
||||
/* some themes have background color. see through to slats */
|
||||
background: none; }
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
/*!
|
||||
FullCalendar Bootstrap Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) :
|
||||
typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) :
|
||||
(global = global || self, factory(global.FullCalendarBootstrap = {}, global.FullCalendar));
|
||||
}(this, function (exports, core) { 'use strict';
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
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
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
/* global Reflect, Promise */
|
||||
|
||||
var extendStatics = function(d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
|
||||
function __extends(d, b) {
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
}
|
||||
|
||||
var BootstrapTheme = /** @class */ (function (_super) {
|
||||
__extends(BootstrapTheme, _super);
|
||||
function BootstrapTheme() {
|
||||
return _super !== null && _super.apply(this, arguments) || this;
|
||||
}
|
||||
return BootstrapTheme;
|
||||
}(core.Theme));
|
||||
BootstrapTheme.prototype.classes = {
|
||||
widget: 'fc-bootstrap',
|
||||
tableGrid: 'table-bordered',
|
||||
tableList: 'table',
|
||||
tableListHeading: 'table-active',
|
||||
buttonGroup: 'btn-group',
|
||||
button: 'btn btn-primary',
|
||||
buttonActive: 'active',
|
||||
today: 'alert alert-info',
|
||||
popover: 'card card-primary',
|
||||
popoverHeader: 'card-header',
|
||||
popoverContent: 'card-body',
|
||||
// day grid
|
||||
// for left/right border color when border is inset from edges (all-day in timeGrid view)
|
||||
// avoid `table` class b/c don't want margins/padding/structure. only border color.
|
||||
headerRow: 'table-bordered',
|
||||
dayRow: 'table-bordered',
|
||||
// list view
|
||||
listView: 'card card-primary'
|
||||
};
|
||||
BootstrapTheme.prototype.baseIconClass = 'fa';
|
||||
BootstrapTheme.prototype.iconClasses = {
|
||||
close: 'fa-times',
|
||||
prev: 'fa-chevron-left',
|
||||
next: 'fa-chevron-right',
|
||||
prevYear: 'fa-angle-double-left',
|
||||
nextYear: 'fa-angle-double-right'
|
||||
};
|
||||
BootstrapTheme.prototype.iconOverrideOption = 'bootstrapFontAwesome';
|
||||
BootstrapTheme.prototype.iconOverrideCustomButtonOption = 'bootstrapFontAwesome';
|
||||
BootstrapTheme.prototype.iconOverridePrefix = 'fa-';
|
||||
var main = core.createPlugin({
|
||||
themeClasses: {
|
||||
bootstrap: BootstrapTheme
|
||||
}
|
||||
});
|
||||
|
||||
exports.BootstrapTheme = BootstrapTheme;
|
||||
exports.default = main;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
/*!
|
||||
FullCalendar Bootstrap Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/.fc.fc-bootstrap a{text-decoration:none}.fc.fc-bootstrap a[data-goto]:hover{text-decoration:underline}.fc-bootstrap hr.fc-divider{border-color:inherit}.fc-bootstrap .fc-today.alert{border-radius:0}.fc-bootstrap a.fc-event:not([href]):not([tabindex]){color:#fff}.fc-bootstrap .fc-popover.card{position:absolute}.fc-bootstrap .fc-popover .card-body{padding:0}.fc-bootstrap .fc-time-grid .fc-slats table{background:0 0}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
/*!
|
||||
FullCalendar Bootstrap Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@fullcalendar/core")):"function"==typeof define&&define.amd?define(["exports","@fullcalendar/core"],t):(e=e||self,t(e.FullCalendarBootstrap={},e.FullCalendar))}(this,function(e,t){"use strict";function o(e,t){function o(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
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
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
var r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])})(e,t)},a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t}(t.Theme);a.prototype.classes={widget:"fc-bootstrap",tableGrid:"table-bordered",tableList:"table",tableListHeading:"table-active",buttonGroup:"btn-group",button:"btn btn-primary",buttonActive:"active",today:"alert alert-info",popover:"card card-primary",popoverHeader:"card-header",popoverContent:"card-body",headerRow:"table-bordered",dayRow:"table-bordered",listView:"card card-primary"},a.prototype.baseIconClass="fa",a.prototype.iconClasses={close:"fa-times",prev:"fa-chevron-left",next:"fa-chevron-right",prevYear:"fa-angle-double-left",nextYear:"fa-angle-double-right"},a.prototype.iconOverrideOption="bootstrapFontAwesome",a.prototype.iconOverrideCustomButtonOption="bootstrapFontAwesome",a.prototype.iconOverridePrefix="fa-";var n=t.createPlugin({themeClasses:{bootstrap:a}});e.BootstrapTheme=a,e.default=n,Object.defineProperty(e,"__esModule",{value:!0})});
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.af = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var af = {
|
||||
code: "af",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Vorige",
|
||||
next: "Volgende",
|
||||
today: "Vandag",
|
||||
year: "Jaar",
|
||||
month: "Maand",
|
||||
week: "Week",
|
||||
day: "Dag",
|
||||
list: "Agenda"
|
||||
},
|
||||
allDayHtml: "Heeldag",
|
||||
eventLimitText: "Addisionele",
|
||||
noEventsMessage: "Daar is geen gebeurtenisse nie"
|
||||
};
|
||||
|
||||
return af;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['ar-dz'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var arDz = {
|
||||
code: "ar-dz",
|
||||
week: {
|
||||
dow: 0,
|
||||
doy: 4 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
dir: 'rtl',
|
||||
buttonText: {
|
||||
prev: "السابق",
|
||||
next: "التالي",
|
||||
today: "اليوم",
|
||||
month: "شهر",
|
||||
week: "أسبوع",
|
||||
day: "يوم",
|
||||
list: "أجندة"
|
||||
},
|
||||
weekLabel: "أسبوع",
|
||||
allDayText: "اليوم كله",
|
||||
eventLimitText: "أخرى",
|
||||
noEventsMessage: "أي أحداث لعرض"
|
||||
};
|
||||
|
||||
return arDz;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['ar-kw'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var arKw = {
|
||||
code: "ar-kw",
|
||||
week: {
|
||||
dow: 0,
|
||||
doy: 12 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
dir: 'rtl',
|
||||
buttonText: {
|
||||
prev: "السابق",
|
||||
next: "التالي",
|
||||
today: "اليوم",
|
||||
month: "شهر",
|
||||
week: "أسبوع",
|
||||
day: "يوم",
|
||||
list: "أجندة"
|
||||
},
|
||||
weekLabel: "أسبوع",
|
||||
allDayText: "اليوم كله",
|
||||
eventLimitText: "أخرى",
|
||||
noEventsMessage: "أي أحداث لعرض"
|
||||
};
|
||||
|
||||
return arKw;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['ar-ly'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var arLy = {
|
||||
code: "ar-ly",
|
||||
week: {
|
||||
dow: 6,
|
||||
doy: 12 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
dir: 'rtl',
|
||||
buttonText: {
|
||||
prev: "السابق",
|
||||
next: "التالي",
|
||||
today: "اليوم",
|
||||
month: "شهر",
|
||||
week: "أسبوع",
|
||||
day: "يوم",
|
||||
list: "أجندة"
|
||||
},
|
||||
weekLabel: "أسبوع",
|
||||
allDayText: "اليوم كله",
|
||||
eventLimitText: "أخرى",
|
||||
noEventsMessage: "أي أحداث لعرض"
|
||||
};
|
||||
|
||||
return arLy;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['ar-ma'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var arMa = {
|
||||
code: "ar-ma",
|
||||
week: {
|
||||
dow: 6,
|
||||
doy: 12 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
dir: 'rtl',
|
||||
buttonText: {
|
||||
prev: "السابق",
|
||||
next: "التالي",
|
||||
today: "اليوم",
|
||||
month: "شهر",
|
||||
week: "أسبوع",
|
||||
day: "يوم",
|
||||
list: "أجندة"
|
||||
},
|
||||
weekLabel: "أسبوع",
|
||||
allDayText: "اليوم كله",
|
||||
eventLimitText: "أخرى",
|
||||
noEventsMessage: "أي أحداث لعرض"
|
||||
};
|
||||
|
||||
return arMa;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['ar-sa'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var arSa = {
|
||||
code: "ar-sa",
|
||||
week: {
|
||||
dow: 0,
|
||||
doy: 6 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
dir: 'rtl',
|
||||
buttonText: {
|
||||
prev: "السابق",
|
||||
next: "التالي",
|
||||
today: "اليوم",
|
||||
month: "شهر",
|
||||
week: "أسبوع",
|
||||
day: "يوم",
|
||||
list: "أجندة"
|
||||
},
|
||||
weekLabel: "أسبوع",
|
||||
allDayText: "اليوم كله",
|
||||
eventLimitText: "أخرى",
|
||||
noEventsMessage: "أي أحداث لعرض"
|
||||
};
|
||||
|
||||
return arSa;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['ar-tn'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var arTn = {
|
||||
code: "ar-tn",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
dir: 'rtl',
|
||||
buttonText: {
|
||||
prev: "السابق",
|
||||
next: "التالي",
|
||||
today: "اليوم",
|
||||
month: "شهر",
|
||||
week: "أسبوع",
|
||||
day: "يوم",
|
||||
list: "أجندة"
|
||||
},
|
||||
weekLabel: "أسبوع",
|
||||
allDayText: "اليوم كله",
|
||||
eventLimitText: "أخرى",
|
||||
noEventsMessage: "أي أحداث لعرض"
|
||||
};
|
||||
|
||||
return arTn;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ar = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var ar = {
|
||||
code: "ar",
|
||||
week: {
|
||||
dow: 6,
|
||||
doy: 12 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
dir: 'rtl',
|
||||
buttonText: {
|
||||
prev: "السابق",
|
||||
next: "التالي",
|
||||
today: "اليوم",
|
||||
month: "شهر",
|
||||
week: "أسبوع",
|
||||
day: "يوم",
|
||||
list: "أجندة"
|
||||
},
|
||||
weekLabel: "أسبوع",
|
||||
allDayText: "اليوم كله",
|
||||
eventLimitText: "أخرى",
|
||||
noEventsMessage: "أي أحداث لعرض"
|
||||
};
|
||||
|
||||
return ar;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.bg = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var bg = {
|
||||
code: "bg",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "назад",
|
||||
next: "напред",
|
||||
today: "днес",
|
||||
month: "Месец",
|
||||
week: "Седмица",
|
||||
day: "Ден",
|
||||
list: "График"
|
||||
},
|
||||
allDayText: "Цял ден",
|
||||
eventLimitText: function (n) {
|
||||
return "+още " + n;
|
||||
},
|
||||
noEventsMessage: "Няма събития за показване"
|
||||
};
|
||||
|
||||
return bg;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.bs = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var bs = {
|
||||
code: "bs",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Prošli",
|
||||
next: "Sljedeći",
|
||||
today: "Danas",
|
||||
month: "Mjesec",
|
||||
week: "Sedmica",
|
||||
day: "Dan",
|
||||
list: "Raspored"
|
||||
},
|
||||
weekLabel: "Sed",
|
||||
allDayText: "Cijeli dan",
|
||||
eventLimitText: function (n) {
|
||||
return "+ još " + n;
|
||||
},
|
||||
noEventsMessage: "Nema događaja za prikazivanje"
|
||||
};
|
||||
|
||||
return bs;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ca = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var ca = {
|
||||
code: "ca",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Anterior",
|
||||
next: "Següent",
|
||||
today: "Avui",
|
||||
month: "Mes",
|
||||
week: "Setmana",
|
||||
day: "Dia",
|
||||
list: "Agenda"
|
||||
},
|
||||
weekLabel: "Set",
|
||||
allDayText: "Tot el dia",
|
||||
eventLimitText: "més",
|
||||
noEventsMessage: "No hi ha esdeveniments per mostrar"
|
||||
};
|
||||
|
||||
return ca;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.cs = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var cs = {
|
||||
code: "cs",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Dříve",
|
||||
next: "Později",
|
||||
today: "Nyní",
|
||||
month: "Měsíc",
|
||||
week: "Týden",
|
||||
day: "Den",
|
||||
list: "Agenda"
|
||||
},
|
||||
weekLabel: "Týd",
|
||||
allDayText: "Celý den",
|
||||
eventLimitText: function (n) {
|
||||
return "+další: " + n;
|
||||
},
|
||||
noEventsMessage: "Žádné akce k zobrazení"
|
||||
};
|
||||
|
||||
return cs;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.da = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var da = {
|
||||
code: "da",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Forrige",
|
||||
next: "Næste",
|
||||
today: "Idag",
|
||||
month: "Måned",
|
||||
week: "Uge",
|
||||
day: "Dag",
|
||||
list: "Agenda"
|
||||
},
|
||||
weekLabel: "Uge",
|
||||
allDayText: "Hele dagen",
|
||||
eventLimitText: "flere",
|
||||
noEventsMessage: "Ingen arrangementer at vise"
|
||||
};
|
||||
|
||||
return da;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.de = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var de = {
|
||||
code: "de",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Zurück",
|
||||
next: "Vor",
|
||||
today: "Heute",
|
||||
year: "Jahr",
|
||||
month: "Monat",
|
||||
week: "Woche",
|
||||
day: "Tag",
|
||||
list: "Terminübersicht"
|
||||
},
|
||||
weekLabel: "KW",
|
||||
allDayText: "Ganztägig",
|
||||
eventLimitText: function (n) {
|
||||
return "+ weitere " + n;
|
||||
},
|
||||
noEventsMessage: "Keine Ereignisse anzuzeigen"
|
||||
};
|
||||
|
||||
return de;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.el = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var el = {
|
||||
code: "el",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Προηγούμενος",
|
||||
next: "Επόμενος",
|
||||
today: "Σήμερα",
|
||||
month: "Μήνας",
|
||||
week: "Εβδομάδα",
|
||||
day: "Ημέρα",
|
||||
list: "Ατζέντα"
|
||||
},
|
||||
weekLabel: "Εβδ",
|
||||
allDayText: "Ολοήμερο",
|
||||
eventLimitText: "περισσότερα",
|
||||
noEventsMessage: "Δεν υπάρχουν γεγονότα για να εμφανιστεί"
|
||||
};
|
||||
|
||||
return el;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['en-au'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var enAu = {
|
||||
code: "en-au",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
}
|
||||
};
|
||||
|
||||
return enAu;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['en-gb'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var enGb = {
|
||||
code: "en-gb",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
}
|
||||
};
|
||||
|
||||
return enGb;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['en-nz'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var enNz = {
|
||||
code: "en-nz",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
}
|
||||
};
|
||||
|
||||
return enNz;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['es-us'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var esUs = {
|
||||
code: "es",
|
||||
week: {
|
||||
dow: 0,
|
||||
doy: 6 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Ant",
|
||||
next: "Sig",
|
||||
today: "Hoy",
|
||||
month: "Mes",
|
||||
week: "Semana",
|
||||
day: "Día",
|
||||
list: "Agenda"
|
||||
},
|
||||
weekLabel: "Sm",
|
||||
allDayHtml: "Todo<br/>el día",
|
||||
eventLimitText: "más",
|
||||
noEventsMessage: "No hay eventos para mostrar"
|
||||
};
|
||||
|
||||
return esUs;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.es = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var es = {
|
||||
code: "es",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Ant",
|
||||
next: "Sig",
|
||||
today: "Hoy",
|
||||
month: "Mes",
|
||||
week: "Semana",
|
||||
day: "Día",
|
||||
list: "Agenda"
|
||||
},
|
||||
weekLabel: "Sm",
|
||||
allDayHtml: "Todo<br/>el día",
|
||||
eventLimitText: "más",
|
||||
noEventsMessage: "No hay eventos para mostrar"
|
||||
};
|
||||
|
||||
return es;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.et = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var et = {
|
||||
code: "et",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Eelnev",
|
||||
next: "Järgnev",
|
||||
today: "Täna",
|
||||
month: "Kuu",
|
||||
week: "Nädal",
|
||||
day: "Päev",
|
||||
list: "Päevakord"
|
||||
},
|
||||
weekLabel: "näd",
|
||||
allDayText: "Kogu päev",
|
||||
eventLimitText: function (n) {
|
||||
return "+ veel " + n;
|
||||
},
|
||||
noEventsMessage: "Kuvamiseks puuduvad sündmused"
|
||||
};
|
||||
|
||||
return et;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.eu = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var eu = {
|
||||
code: "eu",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Aur",
|
||||
next: "Hur",
|
||||
today: "Gaur",
|
||||
month: "Hilabetea",
|
||||
week: "Astea",
|
||||
day: "Eguna",
|
||||
list: "Agenda"
|
||||
},
|
||||
weekLabel: "As",
|
||||
allDayHtml: "Egun<br/>osoa",
|
||||
eventLimitText: "gehiago",
|
||||
noEventsMessage: "Ez dago ekitaldirik erakusteko"
|
||||
};
|
||||
|
||||
return eu;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.fa = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var fa = {
|
||||
code: "fa",
|
||||
week: {
|
||||
dow: 6,
|
||||
doy: 12 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
dir: 'rtl',
|
||||
buttonText: {
|
||||
prev: "قبلی",
|
||||
next: "بعدی",
|
||||
today: "امروز",
|
||||
month: "ماه",
|
||||
week: "هفته",
|
||||
day: "روز",
|
||||
list: "برنامه"
|
||||
},
|
||||
weekLabel: "هف",
|
||||
allDayText: "تمام روز",
|
||||
eventLimitText: function (n) {
|
||||
return "بیش از " + n;
|
||||
},
|
||||
noEventsMessage: "هیچ رویدادی به نمایش"
|
||||
};
|
||||
|
||||
return fa;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.fi = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var fi = {
|
||||
code: "fi",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Edellinen",
|
||||
next: "Seuraava",
|
||||
today: "Tänään",
|
||||
month: "Kuukausi",
|
||||
week: "Viikko",
|
||||
day: "Päivä",
|
||||
list: "Tapahtumat"
|
||||
},
|
||||
weekLabel: "Vk",
|
||||
allDayText: "Koko päivä",
|
||||
eventLimitText: "lisää",
|
||||
noEventsMessage: "Ei näytettäviä tapahtumia"
|
||||
};
|
||||
|
||||
return fi;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['fr-ca'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var frCa = {
|
||||
code: "fr",
|
||||
buttonText: {
|
||||
prev: "Précédent",
|
||||
next: "Suivant",
|
||||
today: "Aujourd'hui",
|
||||
year: "Année",
|
||||
month: "Mois",
|
||||
week: "Semaine",
|
||||
day: "Jour",
|
||||
list: "Mon planning"
|
||||
},
|
||||
weekLabel: "Sem.",
|
||||
allDayHtml: "Toute la<br/>journée",
|
||||
eventLimitText: "en plus",
|
||||
noEventsMessage: "Aucun événement à afficher"
|
||||
};
|
||||
|
||||
return frCa;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['fr-ch'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var frCh = {
|
||||
code: "fr-ch",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Précédent",
|
||||
next: "Suivant",
|
||||
today: "Courant",
|
||||
year: "Année",
|
||||
month: "Mois",
|
||||
week: "Semaine",
|
||||
day: "Jour",
|
||||
list: "Mon planning"
|
||||
},
|
||||
weekLabel: "Sm",
|
||||
allDayHtml: "Toute la<br/>journée",
|
||||
eventLimitText: "en plus",
|
||||
noEventsMessage: "Aucun événement à afficher"
|
||||
};
|
||||
|
||||
return frCh;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.fr = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var fr = {
|
||||
code: "fr",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Précédent",
|
||||
next: "Suivant",
|
||||
today: "Aujourd'hui",
|
||||
year: "Année",
|
||||
month: "Mois",
|
||||
week: "Semaine",
|
||||
day: "Jour",
|
||||
list: "Mon planning"
|
||||
},
|
||||
weekLabel: "Sem.",
|
||||
allDayHtml: "Toute la<br/>journée",
|
||||
eventLimitText: "en plus",
|
||||
noEventsMessage: "Aucun événement à afficher"
|
||||
};
|
||||
|
||||
return fr;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.gl = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var gl = {
|
||||
code: "gl",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Ant",
|
||||
next: "Seg",
|
||||
today: "Hoxe",
|
||||
month: "Mes",
|
||||
week: "Semana",
|
||||
day: "Día",
|
||||
list: "Axenda"
|
||||
},
|
||||
weekLabel: "Sm",
|
||||
allDayHtml: "Todo<br/>o día",
|
||||
eventLimitText: "máis",
|
||||
noEventsMessage: "Non hai eventos para amosar"
|
||||
};
|
||||
|
||||
return gl;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.he = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var he = {
|
||||
code: "he",
|
||||
dir: 'rtl',
|
||||
buttonText: {
|
||||
prev: "הקודם",
|
||||
next: "הבא",
|
||||
today: "היום",
|
||||
month: "חודש",
|
||||
week: "שבוע",
|
||||
day: "יום",
|
||||
list: "סדר יום"
|
||||
},
|
||||
allDayText: "כל היום",
|
||||
eventLimitText: "אחר",
|
||||
noEventsMessage: "אין אירועים להצגה",
|
||||
weekLabel: "שבוע"
|
||||
};
|
||||
|
||||
return he;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.hi = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var hi = {
|
||||
code: "hi",
|
||||
week: {
|
||||
dow: 0,
|
||||
doy: 6 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "पिछला",
|
||||
next: "अगला",
|
||||
today: "आज",
|
||||
month: "महीना",
|
||||
week: "सप्ताह",
|
||||
day: "दिन",
|
||||
list: "कार्यसूची"
|
||||
},
|
||||
weekLabel: "हफ्ता",
|
||||
allDayText: "सभी दिन",
|
||||
eventLimitText: function (n) {
|
||||
return "+अधिक " + n;
|
||||
},
|
||||
noEventsMessage: "कोई घटनाओं को प्रदर्शित करने के लिए"
|
||||
};
|
||||
|
||||
return hi;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.hr = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var hr = {
|
||||
code: "hr",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Prijašnji",
|
||||
next: "Sljedeći",
|
||||
today: "Danas",
|
||||
month: "Mjesec",
|
||||
week: "Tjedan",
|
||||
day: "Dan",
|
||||
list: "Raspored"
|
||||
},
|
||||
weekLabel: "Tje",
|
||||
allDayText: "Cijeli dan",
|
||||
eventLimitText: function (n) {
|
||||
return "+ još " + n;
|
||||
},
|
||||
noEventsMessage: "Nema događaja za prikaz"
|
||||
};
|
||||
|
||||
return hr;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.hu = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var hu = {
|
||||
code: "hu",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "vissza",
|
||||
next: "előre",
|
||||
today: "ma",
|
||||
month: "Hónap",
|
||||
week: "Hét",
|
||||
day: "Nap",
|
||||
list: "Napló"
|
||||
},
|
||||
weekLabel: "Hét",
|
||||
allDayText: "Egész nap",
|
||||
eventLimitText: "további",
|
||||
noEventsMessage: "Nincs megjeleníthető esemény"
|
||||
};
|
||||
|
||||
return hu;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.id = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var id = {
|
||||
code: "id",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "mundur",
|
||||
next: "maju",
|
||||
today: "hari ini",
|
||||
month: "Bulan",
|
||||
week: "Minggu",
|
||||
day: "Hari",
|
||||
list: "Agenda"
|
||||
},
|
||||
weekLabel: "Mg",
|
||||
allDayHtml: "Sehari<br/>penuh",
|
||||
eventLimitText: "lebih",
|
||||
noEventsMessage: "Tidak ada acara untuk ditampilkan"
|
||||
};
|
||||
|
||||
return id;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.is = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var is = {
|
||||
code: "is",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Fyrri",
|
||||
next: "Næsti",
|
||||
today: "Í dag",
|
||||
month: "Mánuður",
|
||||
week: "Vika",
|
||||
day: "Dagur",
|
||||
list: "Dagskrá"
|
||||
},
|
||||
weekLabel: "Vika",
|
||||
allDayHtml: "Allan<br/>daginn",
|
||||
eventLimitText: "meira",
|
||||
noEventsMessage: "Engir viðburðir til að sýna"
|
||||
};
|
||||
|
||||
return is;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.it = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var it = {
|
||||
code: "it",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Prec",
|
||||
next: "Succ",
|
||||
today: "Oggi",
|
||||
month: "Mese",
|
||||
week: "Settimana",
|
||||
day: "Giorno",
|
||||
list: "Agenda"
|
||||
},
|
||||
weekLabel: "Sm",
|
||||
allDayHtml: "Tutto il<br/>giorno",
|
||||
eventLimitText: function (n) {
|
||||
return "+altri " + n;
|
||||
},
|
||||
noEventsMessage: "Non ci sono eventi da visualizzare"
|
||||
};
|
||||
|
||||
return it;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ja = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var ja = {
|
||||
code: "ja",
|
||||
buttonText: {
|
||||
prev: "前",
|
||||
next: "次",
|
||||
today: "今日",
|
||||
month: "月",
|
||||
week: "週",
|
||||
day: "日",
|
||||
list: "予定リスト"
|
||||
},
|
||||
weekLabel: "週",
|
||||
allDayText: "終日",
|
||||
eventLimitText: function (n) {
|
||||
return "他 " + n + " 件";
|
||||
},
|
||||
noEventsMessage: "表示する予定はありません"
|
||||
};
|
||||
|
||||
return ja;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ka = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var ka = {
|
||||
code: "ka",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7
|
||||
},
|
||||
buttonText: {
|
||||
prev: "წინა",
|
||||
next: "შემდეგი",
|
||||
today: "დღეს",
|
||||
month: "თვე",
|
||||
week: "კვირა",
|
||||
day: "დღე",
|
||||
list: "დღის წესრიგი"
|
||||
},
|
||||
weekLabel: "კვ",
|
||||
allDayText: "მთელი დღე",
|
||||
eventLimitText: function (n) {
|
||||
return "+ კიდევ " + n;
|
||||
},
|
||||
noEventsMessage: "ღონისძიებები არ არის"
|
||||
};
|
||||
|
||||
return ka;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.kk = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var kk = {
|
||||
code: "kk",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Алдыңғы",
|
||||
next: "Келесі",
|
||||
today: "Бүгін",
|
||||
month: "Ай",
|
||||
week: "Апта",
|
||||
day: "Күн",
|
||||
list: "Күн тәртібі"
|
||||
},
|
||||
weekLabel: "Не",
|
||||
allDayText: "Күні бойы",
|
||||
eventLimitText: function (n) {
|
||||
return "+ тағы " + n;
|
||||
},
|
||||
noEventsMessage: "Көрсету үшін оқиғалар жоқ"
|
||||
};
|
||||
|
||||
return kk;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ko = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var ko = {
|
||||
code: "ko",
|
||||
buttonText: {
|
||||
prev: "이전달",
|
||||
next: "다음달",
|
||||
today: "오늘",
|
||||
month: "월",
|
||||
week: "주",
|
||||
day: "일",
|
||||
list: "일정목록"
|
||||
},
|
||||
weekLabel: "주",
|
||||
allDayText: "종일",
|
||||
eventLimitText: "개",
|
||||
noEventsMessage: "일정이 없습니다"
|
||||
};
|
||||
|
||||
return ko;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.lb = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var lb = {
|
||||
code: "lb",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Zréck",
|
||||
next: "Weider",
|
||||
today: "Haut",
|
||||
month: "Mount",
|
||||
week: "Woch",
|
||||
day: "Dag",
|
||||
list: "Terminiwwersiicht"
|
||||
},
|
||||
weekLabel: "W",
|
||||
allDayText: "Ganzen Dag",
|
||||
eventLimitText: "méi",
|
||||
noEventsMessage: "Nee Evenementer ze affichéieren"
|
||||
};
|
||||
|
||||
return lb;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.lt = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var lt = {
|
||||
code: "lt",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Atgal",
|
||||
next: "Pirmyn",
|
||||
today: "Šiandien",
|
||||
month: "Mėnuo",
|
||||
week: "Savaitė",
|
||||
day: "Diena",
|
||||
list: "Darbotvarkė"
|
||||
},
|
||||
weekLabel: "SAV",
|
||||
allDayText: "Visą dieną",
|
||||
eventLimitText: "daugiau",
|
||||
noEventsMessage: "Nėra įvykių rodyti"
|
||||
};
|
||||
|
||||
return lt;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.lv = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var lv = {
|
||||
code: "lv",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Iepr.",
|
||||
next: "Nāk.",
|
||||
today: "Šodien",
|
||||
month: "Mēnesis",
|
||||
week: "Nedēļa",
|
||||
day: "Diena",
|
||||
list: "Dienas kārtība"
|
||||
},
|
||||
weekLabel: "Ned.",
|
||||
allDayText: "Visu dienu",
|
||||
eventLimitText: function (n) {
|
||||
return "+vēl " + n;
|
||||
},
|
||||
noEventsMessage: "Nav notikumu"
|
||||
};
|
||||
|
||||
return lv;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.mk = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var mk = {
|
||||
code: "mk",
|
||||
buttonText: {
|
||||
prev: "претходно",
|
||||
next: "следно",
|
||||
today: "Денес",
|
||||
month: "Месец",
|
||||
week: "Недела",
|
||||
day: "Ден",
|
||||
list: "График"
|
||||
},
|
||||
weekLabel: "Сед",
|
||||
allDayText: "Цел ден",
|
||||
eventLimitText: function (n) {
|
||||
return "+повеќе " + n;
|
||||
},
|
||||
noEventsMessage: "Нема настани за прикажување"
|
||||
};
|
||||
|
||||
return mk;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ms = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var ms = {
|
||||
code: "ms",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Sebelum",
|
||||
next: "Selepas",
|
||||
today: "hari ini",
|
||||
month: "Bulan",
|
||||
week: "Minggu",
|
||||
day: "Hari",
|
||||
list: "Agenda"
|
||||
},
|
||||
weekLabel: "Mg",
|
||||
allDayText: "Sepanjang hari",
|
||||
eventLimitText: function (n) {
|
||||
return "masih ada " + n + " acara";
|
||||
},
|
||||
noEventsMessage: "Tiada peristiwa untuk dipaparkan"
|
||||
};
|
||||
|
||||
return ms;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.nb = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var nb = {
|
||||
code: "nb",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Forrige",
|
||||
next: "Neste",
|
||||
today: "I dag",
|
||||
month: "Måned",
|
||||
week: "Uke",
|
||||
day: "Dag",
|
||||
list: "Agenda"
|
||||
},
|
||||
weekLabel: "Uke",
|
||||
allDayText: "Hele dagen",
|
||||
eventLimitText: "til",
|
||||
noEventsMessage: "Ingen hendelser å vise"
|
||||
};
|
||||
|
||||
return nb;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.nl = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var nl = {
|
||||
code: "nl",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Voorgaand",
|
||||
next: "Volgende",
|
||||
today: "Vandaag",
|
||||
year: "Jaar",
|
||||
month: "Maand",
|
||||
week: "Week",
|
||||
day: "Dag",
|
||||
list: "Agenda"
|
||||
},
|
||||
allDayText: "Hele dag",
|
||||
eventLimitText: "extra",
|
||||
noEventsMessage: "Geen evenementen om te laten zien"
|
||||
};
|
||||
|
||||
return nl;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.nn = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var nn = {
|
||||
code: "nn",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Førre",
|
||||
next: "Neste",
|
||||
today: "I dag",
|
||||
month: "Månad",
|
||||
week: "Veke",
|
||||
day: "Dag",
|
||||
list: "Agenda"
|
||||
},
|
||||
weekLabel: "Veke",
|
||||
allDayText: "Heile dagen",
|
||||
eventLimitText: "til",
|
||||
noEventsMessage: "Ingen hendelser å vise"
|
||||
};
|
||||
|
||||
return nn;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.pl = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var pl = {
|
||||
code: "pl",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Poprzedni",
|
||||
next: "Następny",
|
||||
today: "Dziś",
|
||||
month: "Miesiąc",
|
||||
week: "Tydzień",
|
||||
day: "Dzień",
|
||||
list: "Plan dnia"
|
||||
},
|
||||
weekLabel: "Tydz",
|
||||
allDayText: "Cały dzień",
|
||||
eventLimitText: "więcej",
|
||||
noEventsMessage: "Brak wydarzeń do wyświetlenia"
|
||||
};
|
||||
|
||||
return pl;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['pt-br'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var ptBr = {
|
||||
code: "pt-br",
|
||||
buttonText: {
|
||||
prev: "Anterior",
|
||||
next: "Próximo",
|
||||
today: "Hoje",
|
||||
month: "Mês",
|
||||
week: "Semana",
|
||||
day: "Dia",
|
||||
list: "Compromissos"
|
||||
},
|
||||
weekLabel: "Sm",
|
||||
allDayText: "dia inteiro",
|
||||
eventLimitText: function (n) {
|
||||
return "mais +" + n;
|
||||
},
|
||||
noEventsMessage: "Não há eventos para mostrar"
|
||||
};
|
||||
|
||||
return ptBr;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.pt = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var pt = {
|
||||
code: "pt",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Anterior",
|
||||
next: "Seguinte",
|
||||
today: "Hoje",
|
||||
month: "Mês",
|
||||
week: "Semana",
|
||||
day: "Dia",
|
||||
list: "Agenda"
|
||||
},
|
||||
weekLabel: "Sem",
|
||||
allDayText: "Todo o dia",
|
||||
eventLimitText: "mais",
|
||||
noEventsMessage: "Não há eventos para mostrar"
|
||||
};
|
||||
|
||||
return pt;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ro = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var ro = {
|
||||
code: "ro",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "precedentă",
|
||||
next: "următoare",
|
||||
today: "Azi",
|
||||
month: "Lună",
|
||||
week: "Săptămână",
|
||||
day: "Zi",
|
||||
list: "Agendă"
|
||||
},
|
||||
weekLabel: "Săpt",
|
||||
allDayText: "Toată ziua",
|
||||
eventLimitText: function (n) {
|
||||
return "+alte " + n;
|
||||
},
|
||||
noEventsMessage: "Nu există evenimente de afișat"
|
||||
};
|
||||
|
||||
return ro;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.ru = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var ru = {
|
||||
code: "ru",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Пред",
|
||||
next: "След",
|
||||
today: "Сегодня",
|
||||
month: "Месяц",
|
||||
week: "Неделя",
|
||||
day: "День",
|
||||
list: "Повестка дня"
|
||||
},
|
||||
weekLabel: "Нед",
|
||||
allDayText: "Весь день",
|
||||
eventLimitText: function (n) {
|
||||
return "+ ещё " + n;
|
||||
},
|
||||
noEventsMessage: "Нет событий для отображения"
|
||||
};
|
||||
|
||||
return ru;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.sk = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var sk = {
|
||||
code: "sk",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Predchádzajúci",
|
||||
next: "Nasledujúci",
|
||||
today: "Dnes",
|
||||
month: "Mesiac",
|
||||
week: "Týždeň",
|
||||
day: "Deň",
|
||||
list: "Rozvrh"
|
||||
},
|
||||
weekLabel: "Ty",
|
||||
allDayText: "Celý deň",
|
||||
eventLimitText: function (n) {
|
||||
return "+ďalšie: " + n;
|
||||
},
|
||||
noEventsMessage: "Žiadne akcie na zobrazenie"
|
||||
};
|
||||
|
||||
return sk;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.sl = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var sl = {
|
||||
code: "sl",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Prejšnji",
|
||||
next: "Naslednji",
|
||||
today: "Trenutni",
|
||||
month: "Mesec",
|
||||
week: "Teden",
|
||||
day: "Dan",
|
||||
list: "Dnevni red"
|
||||
},
|
||||
weekLabel: "Teden",
|
||||
allDayText: "Ves dan",
|
||||
eventLimitText: "več",
|
||||
noEventsMessage: "Ni dogodkov za prikaz"
|
||||
};
|
||||
|
||||
return sl;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.sq = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var sq = {
|
||||
code: "sq",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "mbrapa",
|
||||
next: "Përpara",
|
||||
today: "sot",
|
||||
month: "Muaj",
|
||||
week: "Javë",
|
||||
day: "Ditë",
|
||||
list: "Listë"
|
||||
},
|
||||
weekLabel: "Ja",
|
||||
allDayHtml: "Gjithë<br/>ditën",
|
||||
eventLimitText: function (n) {
|
||||
return "+më tepër " + n;
|
||||
},
|
||||
noEventsMessage: "Nuk ka evente për të shfaqur"
|
||||
};
|
||||
|
||||
return sq;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['sr-cyrl'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var srCyrl = {
|
||||
code: "sr-cyrl",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Претходна",
|
||||
next: "следећи",
|
||||
today: "Данас",
|
||||
month: "Месец",
|
||||
week: "Недеља",
|
||||
day: "Дан",
|
||||
list: "Планер"
|
||||
},
|
||||
weekLabel: "Сед",
|
||||
allDayText: "Цео дан",
|
||||
eventLimitText: function (n) {
|
||||
return "+ још " + n;
|
||||
},
|
||||
noEventsMessage: "Нема догађаја за приказ"
|
||||
};
|
||||
|
||||
return srCyrl;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.sr = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var sr = {
|
||||
code: "sr",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Prethodna",
|
||||
next: "Sledeći",
|
||||
today: "Danas",
|
||||
month: "Mеsеc",
|
||||
week: "Nеdеlja",
|
||||
day: "Dan",
|
||||
list: "Planеr"
|
||||
},
|
||||
weekLabel: "Sed",
|
||||
allDayText: "Cеo dan",
|
||||
eventLimitText: function (n) {
|
||||
return "+ još " + n;
|
||||
},
|
||||
noEventsMessage: "Nеma događaja za prikaz"
|
||||
};
|
||||
|
||||
return sr;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.sv = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var sv = {
|
||||
code: "sv",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Förra",
|
||||
next: "Nästa",
|
||||
today: "Idag",
|
||||
month: "Månad",
|
||||
week: "Vecka",
|
||||
day: "Dag",
|
||||
list: "Program"
|
||||
},
|
||||
weekLabel: "v.",
|
||||
allDayText: "Heldag",
|
||||
eventLimitText: "till",
|
||||
noEventsMessage: "Inga händelser att visa"
|
||||
};
|
||||
|
||||
return sv;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.th = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var th = {
|
||||
code: "th",
|
||||
buttonText: {
|
||||
prev: "ย้อน",
|
||||
next: "ถัดไป",
|
||||
today: "วันนี้",
|
||||
month: "เดือน",
|
||||
week: "สัปดาห์",
|
||||
day: "วัน",
|
||||
list: "แผนงาน"
|
||||
},
|
||||
allDayText: "ตลอดวัน",
|
||||
eventLimitText: "เพิ่มเติม",
|
||||
noEventsMessage: "ไม่มีกิจกรรมที่จะแสดง"
|
||||
};
|
||||
|
||||
return th;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.tr = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var tr = {
|
||||
code: "tr",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "geri",
|
||||
next: "ileri",
|
||||
today: "bugün",
|
||||
month: "Ay",
|
||||
week: "Hafta",
|
||||
day: "Gün",
|
||||
list: "Ajanda"
|
||||
},
|
||||
weekLabel: "Hf",
|
||||
allDayText: "Tüm gün",
|
||||
eventLimitText: "daha fazla",
|
||||
noEventsMessage: "Gösterilecek etkinlik yok"
|
||||
};
|
||||
|
||||
return tr;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.uk = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var uk = {
|
||||
code: "uk",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 7 // The week that contains Jan 1st is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Попередній",
|
||||
next: "далі",
|
||||
today: "Сьогодні",
|
||||
month: "Місяць",
|
||||
week: "Тиждень",
|
||||
day: "День",
|
||||
list: "Порядок денний"
|
||||
},
|
||||
weekLabel: "Тиж",
|
||||
allDayText: "Увесь день",
|
||||
eventLimitText: function (n) {
|
||||
return "+ще " + n + "...";
|
||||
},
|
||||
noEventsMessage: "Немає подій для відображення"
|
||||
};
|
||||
|
||||
return uk;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales.vi = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var vi = {
|
||||
code: "vi",
|
||||
week: {
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "Trước",
|
||||
next: "Tiếp",
|
||||
today: "Hôm nay",
|
||||
month: "Tháng",
|
||||
week: "Tuần",
|
||||
day: "Ngày",
|
||||
list: "Lịch biểu"
|
||||
},
|
||||
weekLabel: "Tu",
|
||||
allDayText: "Cả ngày",
|
||||
eventLimitText: function (n) {
|
||||
return "+ thêm " + n;
|
||||
},
|
||||
noEventsMessage: "Không có sự kiện để hiển thị"
|
||||
};
|
||||
|
||||
return vi;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['zh-cn'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var zhCn = {
|
||||
code: "zh-cn",
|
||||
week: {
|
||||
// GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
|
||||
dow: 1,
|
||||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
buttonText: {
|
||||
prev: "上月",
|
||||
next: "下月",
|
||||
today: "今天",
|
||||
month: "月",
|
||||
week: "周",
|
||||
day: "日",
|
||||
list: "日程"
|
||||
},
|
||||
weekLabel: "周",
|
||||
allDayText: "全天",
|
||||
eventLimitText: function (n) {
|
||||
return "另外 " + n + " 个";
|
||||
},
|
||||
noEventsMessage: "没有事件显示"
|
||||
};
|
||||
|
||||
return zhCn;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = global || self, (global.FullCalendarLocales = global.FullCalendarLocales || {}, global.FullCalendarLocales['zh-tw'] = factory()));
|
||||
}(this, function () { 'use strict';
|
||||
|
||||
var zhTw = {
|
||||
code: "zh-tw",
|
||||
buttonText: {
|
||||
prev: "上月",
|
||||
next: "下月",
|
||||
today: "今天",
|
||||
month: "月",
|
||||
week: "週",
|
||||
day: "天",
|
||||
list: "活動列表"
|
||||
},
|
||||
weekLabel: "周",
|
||||
allDayText: "整天",
|
||||
eventLimitText: '顯示更多',
|
||||
noEventsMessage: "没有任何活動"
|
||||
};
|
||||
|
||||
return zhTw;
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,900 @@
|
|||
/*!
|
||||
FullCalendar Core Package v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
.fc {
|
||||
direction: ltr;
|
||||
text-align: left; }
|
||||
|
||||
.fc-rtl {
|
||||
text-align: right; }
|
||||
|
||||
body .fc {
|
||||
/* extra precedence to overcome jqui */
|
||||
font-size: 1em; }
|
||||
|
||||
/* Colors
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-highlight {
|
||||
/* when user is selecting cells */
|
||||
background: #bce8f1;
|
||||
opacity: .3; }
|
||||
|
||||
.fc-bgevent {
|
||||
/* default look for background events */
|
||||
background: #8fdf82;
|
||||
opacity: .3; }
|
||||
|
||||
.fc-nonbusiness {
|
||||
/* default look for non-business-hours areas */
|
||||
/* will inherit .fc-bgevent's styles */
|
||||
background: #d7d7d7; }
|
||||
|
||||
/* Popover
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-popover {
|
||||
position: absolute;
|
||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); }
|
||||
|
||||
.fc-popover .fc-header {
|
||||
/* TODO: be more consistent with fc-head/fc-body */
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 2px 4px; }
|
||||
|
||||
.fc-rtl .fc-popover .fc-header {
|
||||
flex-direction: row-reverse; }
|
||||
|
||||
.fc-popover .fc-header .fc-title {
|
||||
margin: 0 2px; }
|
||||
|
||||
.fc-popover .fc-header .fc-close {
|
||||
cursor: pointer;
|
||||
opacity: 0.65;
|
||||
font-size: 1.1em; }
|
||||
|
||||
/* Misc Reusable Components
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-divider {
|
||||
border-style: solid;
|
||||
border-width: 1px; }
|
||||
|
||||
hr.fc-divider {
|
||||
height: 0;
|
||||
margin: 0;
|
||||
padding: 0 0 2px;
|
||||
/* height is unreliable across browsers, so use padding */
|
||||
border-width: 1px 0; }
|
||||
|
||||
.fc-bg,
|
||||
.fc-bgevent-skeleton,
|
||||
.fc-highlight-skeleton,
|
||||
.fc-mirror-skeleton {
|
||||
/* these element should always cling to top-left/right corners */
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0; }
|
||||
|
||||
.fc-bg {
|
||||
bottom: 0;
|
||||
/* strech bg to bottom edge */ }
|
||||
|
||||
.fc-bg table {
|
||||
height: 100%;
|
||||
/* strech bg to bottom edge */ }
|
||||
|
||||
/* Tables
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc table {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
/* fix scrollbar issue in firefox */
|
||||
table-layout: fixed;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
font-size: 1em;
|
||||
/* normalize cross-browser */ }
|
||||
|
||||
.fc th {
|
||||
text-align: center; }
|
||||
|
||||
.fc th,
|
||||
.fc td {
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
padding: 0;
|
||||
vertical-align: top; }
|
||||
|
||||
.fc td.fc-today {
|
||||
border-style: double;
|
||||
/* overcome neighboring borders */ }
|
||||
|
||||
/* Internal Nav Links
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
a[data-goto] {
|
||||
cursor: pointer; }
|
||||
|
||||
a[data-goto]:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
/* Fake Table Rows
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc .fc-row {
|
||||
/* extra precedence to overcome themes forcing a 1px border */
|
||||
/* no visible border by default. but make available if need be (scrollbar width compensation) */
|
||||
border-style: solid;
|
||||
border-width: 0; }
|
||||
|
||||
.fc-row table {
|
||||
/* don't put left/right border on anything within a fake row.
|
||||
the outer tbody will worry about this */
|
||||
border-left: 0 hidden transparent;
|
||||
border-right: 0 hidden transparent;
|
||||
/* no bottom borders on rows */
|
||||
border-bottom: 0 hidden transparent; }
|
||||
|
||||
.fc-row:first-child table {
|
||||
border-top: 0 hidden transparent;
|
||||
/* no top border on first row */ }
|
||||
|
||||
/* Day Row (used within the header and the DayGrid)
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-row {
|
||||
position: relative; }
|
||||
|
||||
.fc-row .fc-bg {
|
||||
z-index: 1; }
|
||||
|
||||
/* highlighting cells & background event skeleton */
|
||||
.fc-row .fc-bgevent-skeleton,
|
||||
.fc-row .fc-highlight-skeleton {
|
||||
bottom: 0;
|
||||
/* stretch skeleton to bottom of row */ }
|
||||
|
||||
.fc-row .fc-bgevent-skeleton table,
|
||||
.fc-row .fc-highlight-skeleton table {
|
||||
height: 100%;
|
||||
/* stretch skeleton to bottom of row */ }
|
||||
|
||||
.fc-row .fc-highlight-skeleton td,
|
||||
.fc-row .fc-bgevent-skeleton td {
|
||||
border-color: transparent; }
|
||||
|
||||
.fc-row .fc-bgevent-skeleton {
|
||||
z-index: 2; }
|
||||
|
||||
.fc-row .fc-highlight-skeleton {
|
||||
z-index: 3; }
|
||||
|
||||
/*
|
||||
row content (which contains day/week numbers and events) as well as "mirror" (which contains
|
||||
temporary rendered events).
|
||||
*/
|
||||
.fc-row .fc-content-skeleton {
|
||||
position: relative;
|
||||
z-index: 4;
|
||||
padding-bottom: 2px;
|
||||
/* matches the space above the events */ }
|
||||
|
||||
.fc-row .fc-mirror-skeleton {
|
||||
z-index: 5; }
|
||||
|
||||
.fc .fc-row .fc-content-skeleton table,
|
||||
.fc .fc-row .fc-content-skeleton td,
|
||||
.fc .fc-row .fc-mirror-skeleton td {
|
||||
/* see-through to the background below */
|
||||
/* extra precedence to prevent theme-provided backgrounds */
|
||||
background: none;
|
||||
/* in case <td>s are globally styled */
|
||||
border-color: transparent; }
|
||||
|
||||
.fc-row .fc-content-skeleton td,
|
||||
.fc-row .fc-mirror-skeleton td {
|
||||
/* don't put a border between events and/or the day number */
|
||||
border-bottom: 0; }
|
||||
|
||||
.fc-row .fc-content-skeleton tbody td,
|
||||
.fc-row .fc-mirror-skeleton tbody td {
|
||||
/* don't put a border between event cells */
|
||||
border-top: 0; }
|
||||
|
||||
/* Scrolling Container
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-scroller {
|
||||
-webkit-overflow-scrolling: touch; }
|
||||
|
||||
/* TODO: move to timegrid/daygrid */
|
||||
.fc-scroller > .fc-day-grid,
|
||||
.fc-scroller > .fc-time-grid {
|
||||
position: relative;
|
||||
/* re-scope all positions */
|
||||
width: 100%;
|
||||
/* hack to force re-sizing this inner element when scrollbars appear/disappear */ }
|
||||
|
||||
/* Global Event Styles
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-event {
|
||||
position: relative;
|
||||
/* for resize handle and other inner positioning */
|
||||
display: block;
|
||||
/* make the <a> tag block */
|
||||
font-size: .85em;
|
||||
line-height: 1.4;
|
||||
border-radius: 3px;
|
||||
border: 1px solid #3788d8; }
|
||||
|
||||
.fc-event,
|
||||
.fc-event-dot {
|
||||
background-color: #3788d8;
|
||||
/* default BACKGROUND color */ }
|
||||
|
||||
.fc-event,
|
||||
.fc-event:hover {
|
||||
color: #fff;
|
||||
/* default TEXT color */
|
||||
text-decoration: none;
|
||||
/* if <a> has an href */ }
|
||||
|
||||
.fc-event[href],
|
||||
.fc-event.fc-draggable {
|
||||
cursor: pointer;
|
||||
/* give events with links and draggable events a hand mouse pointer */ }
|
||||
|
||||
.fc-not-allowed,
|
||||
.fc-not-allowed .fc-event {
|
||||
/* to override an event's custom cursor */
|
||||
cursor: not-allowed; }
|
||||
|
||||
.fc-event .fc-content {
|
||||
position: relative;
|
||||
z-index: 2; }
|
||||
|
||||
/* resizer (cursor AND touch devices) */
|
||||
.fc-event .fc-resizer {
|
||||
position: absolute;
|
||||
z-index: 4; }
|
||||
|
||||
/* resizer (touch devices) */
|
||||
.fc-event .fc-resizer {
|
||||
display: none; }
|
||||
|
||||
.fc-event.fc-allow-mouse-resize .fc-resizer,
|
||||
.fc-event.fc-selected .fc-resizer {
|
||||
/* only show when hovering or selected (with touch) */
|
||||
display: block; }
|
||||
|
||||
/* hit area */
|
||||
.fc-event.fc-selected .fc-resizer:before {
|
||||
/* 40x40 touch area */
|
||||
content: "";
|
||||
position: absolute;
|
||||
z-index: 9999;
|
||||
/* user of this util can scope within a lower z-index */
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-left: -20px;
|
||||
margin-top: -20px; }
|
||||
|
||||
/* Event Selection (only for touch devices)
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-event.fc-selected {
|
||||
z-index: 9999 !important;
|
||||
/* overcomes inline z-index */
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); }
|
||||
|
||||
.fc-event.fc-selected:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
/* same z-index as fc-bg, behind text */
|
||||
/* overcome the borders */
|
||||
top: -1px;
|
||||
right: -1px;
|
||||
bottom: -1px;
|
||||
left: -1px;
|
||||
/* darkening effect */
|
||||
background: #000;
|
||||
opacity: .25; }
|
||||
|
||||
/* Event Dragging
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-event.fc-dragging.fc-selected {
|
||||
box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3); }
|
||||
|
||||
.fc-event.fc-dragging:not(.fc-selected) {
|
||||
opacity: .75; }
|
||||
|
||||
/* Horizontal Events
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
/* bigger touch area when selected */
|
||||
.fc-h-event.fc-selected:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
/* below resizers */
|
||||
top: -10px;
|
||||
bottom: -10px;
|
||||
left: 0;
|
||||
right: 0; }
|
||||
|
||||
/* events that are continuing to/from another week. kill rounded corners and butt up against edge */
|
||||
.fc-ltr .fc-h-event.fc-not-start,
|
||||
.fc-rtl .fc-h-event.fc-not-end {
|
||||
margin-left: 0;
|
||||
border-left-width: 0;
|
||||
padding-left: 1px;
|
||||
/* replace the border with padding */
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0; }
|
||||
|
||||
.fc-ltr .fc-h-event.fc-not-end,
|
||||
.fc-rtl .fc-h-event.fc-not-start {
|
||||
margin-right: 0;
|
||||
border-right-width: 0;
|
||||
padding-right: 1px;
|
||||
/* replace the border with padding */
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0; }
|
||||
|
||||
/* resizer (cursor AND touch devices) */
|
||||
/* left resizer */
|
||||
.fc-ltr .fc-h-event .fc-start-resizer,
|
||||
.fc-rtl .fc-h-event .fc-end-resizer {
|
||||
cursor: w-resize;
|
||||
left: -1px;
|
||||
/* overcome border */ }
|
||||
|
||||
/* right resizer */
|
||||
.fc-ltr .fc-h-event .fc-end-resizer,
|
||||
.fc-rtl .fc-h-event .fc-start-resizer {
|
||||
cursor: e-resize;
|
||||
right: -1px;
|
||||
/* overcome border */ }
|
||||
|
||||
/* resizer (mouse devices) */
|
||||
.fc-h-event.fc-allow-mouse-resize .fc-resizer {
|
||||
width: 7px;
|
||||
top: -1px;
|
||||
/* overcome top border */
|
||||
bottom: -1px;
|
||||
/* overcome bottom border */ }
|
||||
|
||||
/* resizer (touch devices) */
|
||||
.fc-h-event.fc-selected .fc-resizer {
|
||||
/* 8x8 little dot */
|
||||
border-radius: 4px;
|
||||
border-width: 1px;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-style: solid;
|
||||
border-color: inherit;
|
||||
background: #fff;
|
||||
/* vertically center */
|
||||
top: 50%;
|
||||
margin-top: -4px; }
|
||||
|
||||
/* left resizer */
|
||||
.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,
|
||||
.fc-rtl .fc-h-event.fc-selected .fc-end-resizer {
|
||||
margin-left: -4px;
|
||||
/* centers the 8x8 dot on the left edge */ }
|
||||
|
||||
/* right resizer */
|
||||
.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,
|
||||
.fc-rtl .fc-h-event.fc-selected .fc-start-resizer {
|
||||
margin-right: -4px;
|
||||
/* centers the 8x8 dot on the right edge */ }
|
||||
|
||||
/* DayGrid events
|
||||
----------------------------------------------------------------------------------------------------
|
||||
We use the full "fc-day-grid-event" class instead of using descendants because the event won't
|
||||
be a descendant of the grid when it is being dragged.
|
||||
*/
|
||||
.fc-day-grid-event {
|
||||
margin: 1px 2px 0;
|
||||
/* spacing between events and edges */
|
||||
padding: 0 1px; }
|
||||
|
||||
tr:first-child > td > .fc-day-grid-event {
|
||||
margin-top: 2px;
|
||||
/* a little bit more space before the first event */ }
|
||||
|
||||
.fc-mirror-skeleton tr:first-child > td > .fc-day-grid-event {
|
||||
margin-top: 0;
|
||||
/* except for mirror skeleton */ }
|
||||
|
||||
.fc-day-grid-event .fc-content {
|
||||
/* force events to be one-line tall */
|
||||
white-space: nowrap;
|
||||
overflow: hidden; }
|
||||
|
||||
.fc-day-grid-event .fc-time {
|
||||
font-weight: bold; }
|
||||
|
||||
/* resizer (cursor devices) */
|
||||
/* left resizer */
|
||||
.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,
|
||||
.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer {
|
||||
margin-left: -2px;
|
||||
/* to the day cell's edge */ }
|
||||
|
||||
/* right resizer */
|
||||
.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,
|
||||
.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer {
|
||||
margin-right: -2px;
|
||||
/* to the day cell's edge */ }
|
||||
|
||||
/* Event Limiting
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
/* "more" link that represents hidden events */
|
||||
a.fc-more {
|
||||
margin: 1px 3px;
|
||||
font-size: .85em;
|
||||
cursor: pointer;
|
||||
text-decoration: none; }
|
||||
|
||||
a.fc-more:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.fc-limited {
|
||||
/* rows and cells that are hidden because of a "more" link */
|
||||
display: none; }
|
||||
|
||||
/* popover that appears when "more" link is clicked */
|
||||
.fc-day-grid .fc-row {
|
||||
z-index: 1;
|
||||
/* make the "more" popover one higher than this */ }
|
||||
|
||||
.fc-more-popover {
|
||||
z-index: 2;
|
||||
width: 220px; }
|
||||
|
||||
.fc-more-popover .fc-event-container {
|
||||
padding: 10px; }
|
||||
|
||||
/* Now Indicator
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-now-indicator {
|
||||
position: absolute;
|
||||
border: 0 solid red; }
|
||||
|
||||
/* Utilities
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-unselectable {
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
|
||||
|
||||
/*
|
||||
TODO: more distinction between this file and common.css
|
||||
*/
|
||||
/* Colors
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-unthemed th,
|
||||
.fc-unthemed td,
|
||||
.fc-unthemed thead,
|
||||
.fc-unthemed tbody,
|
||||
.fc-unthemed .fc-divider,
|
||||
.fc-unthemed .fc-row,
|
||||
.fc-unthemed .fc-content,
|
||||
.fc-unthemed .fc-popover,
|
||||
.fc-unthemed .fc-list-view,
|
||||
.fc-unthemed .fc-list-heading td {
|
||||
border-color: #ddd; }
|
||||
|
||||
.fc-unthemed .fc-popover {
|
||||
background-color: #fff; }
|
||||
|
||||
.fc-unthemed .fc-divider,
|
||||
.fc-unthemed .fc-popover .fc-header,
|
||||
.fc-unthemed .fc-list-heading td {
|
||||
background: #eee; }
|
||||
|
||||
.fc-unthemed td.fc-today {
|
||||
background: #fcf8e3; }
|
||||
|
||||
.fc-unthemed .fc-disabled-day {
|
||||
background: #d7d7d7;
|
||||
opacity: .3; }
|
||||
|
||||
/* Icons
|
||||
--------------------------------------------------------------------------------------------------
|
||||
from https://feathericons.com/ and built with IcoMoon
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'fcicons';
|
||||
src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format("truetype");
|
||||
font-weight: normal;
|
||||
font-style: normal; }
|
||||
.fc-icon {
|
||||
/* use !important to prevent issues with browser extensions that change fonts */
|
||||
font-family: 'fcicons' !important;
|
||||
speak: none;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
/* Better Font Rendering =========== */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale; }
|
||||
|
||||
.fc-icon-chevron-left:before {
|
||||
content: "\e900"; }
|
||||
|
||||
.fc-icon-chevron-right:before {
|
||||
content: "\e901"; }
|
||||
|
||||
.fc-icon-chevrons-left:before {
|
||||
content: "\e902"; }
|
||||
|
||||
.fc-icon-chevrons-right:before {
|
||||
content: "\e903"; }
|
||||
|
||||
.fc-icon-minus-square:before {
|
||||
content: "\e904"; }
|
||||
|
||||
.fc-icon-plus-square:before {
|
||||
content: "\e905"; }
|
||||
|
||||
.fc-icon-x:before {
|
||||
content: "\e906"; }
|
||||
|
||||
.fc-icon {
|
||||
display: inline-block;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
text-align: center; }
|
||||
|
||||
/* Buttons
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Lots taken from Flatly (MIT): https://bootswatch.com/4/flatly/bootstrap.css
|
||||
*/
|
||||
/* reset */
|
||||
.fc-button {
|
||||
border-radius: 0;
|
||||
overflow: visible;
|
||||
text-transform: none;
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit; }
|
||||
|
||||
.fc-button:focus {
|
||||
outline: 1px dotted;
|
||||
outline: 5px auto -webkit-focus-ring-color; }
|
||||
|
||||
.fc-button {
|
||||
-webkit-appearance: button; }
|
||||
|
||||
.fc-button:not(:disabled) {
|
||||
cursor: pointer; }
|
||||
|
||||
.fc-button::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none; }
|
||||
|
||||
/* theme */
|
||||
.fc-button {
|
||||
display: inline-block;
|
||||
font-weight: 400;
|
||||
color: #212529;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
background-color: transparent;
|
||||
border: 1px solid transparent;
|
||||
padding: 0.4em 0.65em;
|
||||
font-size: 1em;
|
||||
line-height: 1.5;
|
||||
border-radius: 0.25em; }
|
||||
|
||||
.fc-button:hover {
|
||||
color: #212529;
|
||||
text-decoration: none; }
|
||||
|
||||
.fc-button:focus {
|
||||
outline: 0;
|
||||
-webkit-box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25);
|
||||
box-shadow: 0 0 0 0.2rem rgba(44, 62, 80, 0.25); }
|
||||
|
||||
.fc-button:disabled {
|
||||
opacity: 0.65; }
|
||||
|
||||
/* "primary" coloring */
|
||||
.fc-button-primary {
|
||||
color: #fff;
|
||||
background-color: #2C3E50;
|
||||
border-color: #2C3E50; }
|
||||
|
||||
.fc-button-primary:hover {
|
||||
color: #fff;
|
||||
background-color: #1e2b37;
|
||||
border-color: #1a252f; }
|
||||
|
||||
.fc-button-primary:focus {
|
||||
-webkit-box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);
|
||||
box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5); }
|
||||
|
||||
.fc-button-primary:disabled {
|
||||
color: #fff;
|
||||
background-color: #2C3E50;
|
||||
border-color: #2C3E50; }
|
||||
|
||||
.fc-button-primary:not(:disabled):active,
|
||||
.fc-button-primary:not(:disabled).fc-button-active {
|
||||
color: #fff;
|
||||
background-color: #1a252f;
|
||||
border-color: #151e27; }
|
||||
|
||||
.fc-button-primary:not(:disabled):active:focus,
|
||||
.fc-button-primary:not(:disabled).fc-button-active:focus {
|
||||
-webkit-box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5);
|
||||
box-shadow: 0 0 0 0.2rem rgba(76, 91, 106, 0.5); }
|
||||
|
||||
/* icons within buttons */
|
||||
.fc-button .fc-icon {
|
||||
vertical-align: middle;
|
||||
font-size: 1.5em; }
|
||||
|
||||
/* Buttons Groups
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-button-group {
|
||||
position: relative;
|
||||
display: -webkit-inline-box;
|
||||
display: -ms-inline-flexbox;
|
||||
display: inline-flex;
|
||||
vertical-align: middle; }
|
||||
|
||||
.fc-button-group > .fc-button {
|
||||
position: relative;
|
||||
-webkit-box-flex: 1;
|
||||
-ms-flex: 1 1 auto;
|
||||
flex: 1 1 auto; }
|
||||
|
||||
.fc-button-group > .fc-button:hover {
|
||||
z-index: 1; }
|
||||
|
||||
.fc-button-group > .fc-button:focus,
|
||||
.fc-button-group > .fc-button:active,
|
||||
.fc-button-group > .fc-button.fc-button-active {
|
||||
z-index: 1; }
|
||||
|
||||
.fc-button-group > .fc-button:not(:first-child) {
|
||||
margin-left: -1px; }
|
||||
|
||||
.fc-button-group > .fc-button:not(:last-child) {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0; }
|
||||
|
||||
.fc-button-group > .fc-button:not(:first-child) {
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0; }
|
||||
|
||||
/* Popover
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-unthemed .fc-popover {
|
||||
border-width: 1px;
|
||||
border-style: solid; }
|
||||
|
||||
/* List View
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-unthemed .fc-list-item:hover td {
|
||||
background-color: #f5f5f5; }
|
||||
|
||||
/* Toolbar
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-toolbar {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center; }
|
||||
|
||||
.fc-toolbar.fc-header-toolbar {
|
||||
margin-bottom: 1.5em; }
|
||||
|
||||
.fc-toolbar.fc-footer-toolbar {
|
||||
margin-top: 1.5em; }
|
||||
|
||||
/* inner content */
|
||||
.fc-toolbar > * > :not(:first-child) {
|
||||
margin-left: .75em; }
|
||||
|
||||
.fc-toolbar h2 {
|
||||
font-size: 1.75em;
|
||||
margin: 0; }
|
||||
|
||||
/* View Structure
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-view-container {
|
||||
position: relative; }
|
||||
|
||||
/* undo twitter bootstrap's box-sizing rules. normalizes positioning techniques */
|
||||
/* don't do this for the toolbar because we'll want bootstrap to style those buttons as some pt */
|
||||
.fc-view-container *,
|
||||
.fc-view-container *:before,
|
||||
.fc-view-container *:after {
|
||||
-webkit-box-sizing: content-box;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box; }
|
||||
|
||||
.fc-view,
|
||||
.fc-view > table {
|
||||
/* so dragged elements can be above the view's main element */
|
||||
position: relative;
|
||||
z-index: 1; }
|
||||
|
||||
@media print {
|
||||
.fc {
|
||||
max-width: 100% !important; }
|
||||
|
||||
/* Global Event Restyling
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-event {
|
||||
background: #fff !important;
|
||||
color: #000 !important;
|
||||
page-break-inside: avoid; }
|
||||
|
||||
.fc-event .fc-resizer {
|
||||
display: none; }
|
||||
|
||||
/* Table & Day-Row Restyling
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc th,
|
||||
.fc td,
|
||||
.fc hr,
|
||||
.fc thead,
|
||||
.fc tbody,
|
||||
.fc-row {
|
||||
border-color: #ccc !important;
|
||||
background: #fff !important; }
|
||||
|
||||
/* kill the overlaid, absolutely-positioned components */
|
||||
/* common... */
|
||||
.fc-bg,
|
||||
.fc-bgevent-skeleton,
|
||||
.fc-highlight-skeleton,
|
||||
.fc-mirror-skeleton,
|
||||
.fc-bgevent-container,
|
||||
.fc-business-container,
|
||||
.fc-highlight-container,
|
||||
.fc-mirror-container {
|
||||
display: none; }
|
||||
|
||||
/* don't force a min-height on rows (for DayGrid) */
|
||||
.fc tbody .fc-row {
|
||||
height: auto !important;
|
||||
/* undo height that JS set in distributeHeight */
|
||||
min-height: 0 !important;
|
||||
/* undo the min-height from each view's specific stylesheet */ }
|
||||
|
||||
.fc tbody .fc-row .fc-content-skeleton {
|
||||
position: static;
|
||||
/* undo .fc-rigid */
|
||||
padding-bottom: 0 !important;
|
||||
/* use a more border-friendly method for this... */ }
|
||||
|
||||
.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td {
|
||||
/* only works in newer browsers */
|
||||
padding-bottom: 1em;
|
||||
/* ...gives space within the skeleton. also ensures min height in a way */ }
|
||||
|
||||
.fc tbody .fc-row .fc-content-skeleton table {
|
||||
/* provides a min-height for the row, but only effective for IE, which exaggerates this value,
|
||||
making it look more like 3em. for other browers, it will already be this tall */
|
||||
height: 1em; }
|
||||
|
||||
/* Undo month-view event limiting. Display all events and hide the "more" links
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-more-cell,
|
||||
.fc-more {
|
||||
display: none !important; }
|
||||
|
||||
.fc tr.fc-limited {
|
||||
display: table-row !important; }
|
||||
|
||||
.fc td.fc-limited {
|
||||
display: table-cell !important; }
|
||||
|
||||
.fc-popover {
|
||||
display: none;
|
||||
/* never display the "more.." popover in print mode */ }
|
||||
|
||||
/* TimeGrid Restyling
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
/* undo the min-height 100% trick used to fill the container's height */
|
||||
.fc-time-grid {
|
||||
min-height: 0 !important; }
|
||||
|
||||
/* don't display the side axis at all ("all-day" and time cells) */
|
||||
.fc-timeGrid-view .fc-axis {
|
||||
display: none; }
|
||||
|
||||
/* don't display the horizontal lines */
|
||||
.fc-slats,
|
||||
.fc-time-grid hr {
|
||||
/* this hr is used when height is underused and needs to be filled */
|
||||
display: none !important;
|
||||
/* important overrides inline declaration */ }
|
||||
|
||||
/* let the container that holds the events be naturally positioned and create real height */
|
||||
.fc-time-grid .fc-content-skeleton {
|
||||
position: static; }
|
||||
|
||||
/* in case there are no events, we still want some height */
|
||||
.fc-time-grid .fc-content-skeleton table {
|
||||
height: 4em; }
|
||||
|
||||
/* kill the horizontal spacing made by the event container. event margins will be done below */
|
||||
.fc-time-grid .fc-event-container {
|
||||
margin: 0 !important; }
|
||||
|
||||
/* TimeGrid *Event* Restyling
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
/* naturally position events, vertically stacking them */
|
||||
.fc-time-grid .fc-event {
|
||||
position: static !important;
|
||||
margin: 3px 2px !important; }
|
||||
|
||||
/* for events that continue to a future day, give the bottom border back */
|
||||
.fc-time-grid .fc-event.fc-not-end {
|
||||
border-bottom-width: 1px !important; }
|
||||
|
||||
/* indicate the event continues via "..." text */
|
||||
.fc-time-grid .fc-event.fc-not-end:after {
|
||||
content: "..."; }
|
||||
|
||||
/* for events that are continuations from previous days, give the top border back */
|
||||
.fc-time-grid .fc-event.fc-not-start {
|
||||
border-top-width: 1px !important; }
|
||||
|
||||
/* indicate the event is a continuation via "..." text */
|
||||
.fc-time-grid .fc-event.fc-not-start:before {
|
||||
content: "..."; }
|
||||
|
||||
/* time */
|
||||
/* undo a previous declaration and let the time text span to a second line */
|
||||
.fc-time-grid .fc-event .fc-time {
|
||||
white-space: normal !important; }
|
||||
|
||||
/* hide the the time that is normally displayed... */
|
||||
.fc-time-grid .fc-event .fc-time span {
|
||||
display: none; }
|
||||
|
||||
/* ...replace it with a more verbose version (includes AM/PM) stored in an html attribute */
|
||||
.fc-time-grid .fc-event .fc-time:after {
|
||||
content: attr(data-full); }
|
||||
|
||||
/* Vertical Scroller & Containers
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
/* kill the scrollbars and allow natural height */
|
||||
.fc-scroller,
|
||||
.fc-day-grid-container,
|
||||
.fc-time-grid-container {
|
||||
/* */
|
||||
overflow: visible !important;
|
||||
height: auto !important; }
|
||||
|
||||
/* kill the horizontal border/padding used to compensate for scrollbars */
|
||||
.fc-row {
|
||||
border: 0 !important;
|
||||
margin: 0 !important; }
|
||||
|
||||
/* Button Controls
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-button-group,
|
||||
.fc button {
|
||||
display: none;
|
||||
/* don't display any button-related controls */ } }
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,69 @@
|
|||
/*!
|
||||
FullCalendar Day Grid Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
/* DayGridView
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
/* day row structure */
|
||||
.fc-dayGridWeek-view .fc-content-skeleton,
|
||||
.fc-dayGridDay-view .fc-content-skeleton {
|
||||
/* there may be week numbers in these views, so no padding-top */
|
||||
padding-bottom: 1em;
|
||||
/* ensure a space at bottom of cell for user selecting/clicking */ }
|
||||
|
||||
.fc-dayGrid-view .fc-body .fc-row {
|
||||
min-height: 4em;
|
||||
/* ensure that all rows are at least this tall */ }
|
||||
|
||||
/* a "rigid" row will take up a constant amount of height because content-skeleton is absolute */
|
||||
.fc-row.fc-rigid {
|
||||
overflow: hidden; }
|
||||
|
||||
.fc-row.fc-rigid .fc-content-skeleton {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0; }
|
||||
|
||||
/* week and day number styling */
|
||||
.fc-day-top.fc-other-month {
|
||||
opacity: 0.3; }
|
||||
|
||||
.fc-dayGrid-view .fc-week-number,
|
||||
.fc-dayGrid-view .fc-day-number {
|
||||
padding: 2px; }
|
||||
|
||||
.fc-dayGrid-view th.fc-week-number,
|
||||
.fc-dayGrid-view th.fc-day-number {
|
||||
padding: 0 2px;
|
||||
/* column headers can't have as much v space */ }
|
||||
|
||||
.fc-ltr .fc-dayGrid-view .fc-day-top .fc-day-number {
|
||||
float: right; }
|
||||
|
||||
.fc-rtl .fc-dayGrid-view .fc-day-top .fc-day-number {
|
||||
float: left; }
|
||||
|
||||
.fc-ltr .fc-dayGrid-view .fc-day-top .fc-week-number {
|
||||
float: left;
|
||||
border-radius: 0 0 3px 0; }
|
||||
|
||||
.fc-rtl .fc-dayGrid-view .fc-day-top .fc-week-number {
|
||||
float: right;
|
||||
border-radius: 0 0 0 3px; }
|
||||
|
||||
.fc-dayGrid-view .fc-day-top .fc-week-number {
|
||||
min-width: 1.5em;
|
||||
text-align: center;
|
||||
background-color: #f2f2f2;
|
||||
color: #808080; }
|
||||
|
||||
/* when week/day number have own column */
|
||||
.fc-dayGrid-view td.fc-week-number {
|
||||
text-align: center; }
|
||||
|
||||
.fc-dayGrid-view td.fc-week-number > * {
|
||||
/* work around the way we do column resizing and ensure a minimum width */
|
||||
display: inline-block;
|
||||
min-width: 1.25em; }
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,5 @@
|
|||
/*!
|
||||
FullCalendar Day Grid Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/.fc-dayGridDay-view .fc-content-skeleton,.fc-dayGridWeek-view .fc-content-skeleton{padding-bottom:1em}.fc-dayGrid-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid{overflow:hidden}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-day-top.fc-other-month{opacity:.3}.fc-dayGrid-view .fc-day-number,.fc-dayGrid-view .fc-week-number{padding:2px}.fc-dayGrid-view th.fc-day-number,.fc-dayGrid-view th.fc-week-number{padding:0 2px}.fc-ltr .fc-dayGrid-view .fc-day-top .fc-day-number{float:right}.fc-rtl .fc-dayGrid-view .fc-day-top .fc-day-number{float:left}.fc-ltr .fc-dayGrid-view .fc-day-top .fc-week-number{float:left;border-radius:0 0 3px}.fc-rtl .fc-dayGrid-view .fc-day-top .fc-week-number{float:right;border-radius:0 0 0 3px}.fc-dayGrid-view .fc-day-top .fc-week-number{min-width:1.5em;text-align:center;background-color:#f2f2f2;color:grey}.fc-dayGrid-view td.fc-week-number{text-align:center}.fc-dayGrid-view td.fc-week-number>*{display:inline-block;min-width:1.25em}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,169 @@
|
|||
/*!
|
||||
FullCalendar Google Calendar Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) :
|
||||
typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) :
|
||||
(global = global || self, factory(global.FullCalendarGoogleCalendar = {}, global.FullCalendar));
|
||||
}(this, function (exports, core) { 'use strict';
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
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
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
|
||||
var __assign = function() {
|
||||
__assign = Object.assign || function __assign(t) {
|
||||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||
s = arguments[i];
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
return __assign.apply(this, arguments);
|
||||
};
|
||||
|
||||
// TODO: expose somehow
|
||||
var API_BASE = 'https://www.googleapis.com/calendar/v3/calendars';
|
||||
var STANDARD_PROPS = {
|
||||
url: String,
|
||||
googleCalendarApiKey: String,
|
||||
googleCalendarId: String,
|
||||
data: null
|
||||
};
|
||||
var eventSourceDef = {
|
||||
parseMeta: function (raw) {
|
||||
if (typeof raw === 'string') {
|
||||
raw = { url: raw };
|
||||
}
|
||||
if (typeof raw === 'object') {
|
||||
var standardProps = core.refineProps(raw, STANDARD_PROPS);
|
||||
if (!standardProps.googleCalendarId && standardProps.url) {
|
||||
standardProps.googleCalendarId = parseGoogleCalendarId(standardProps.url);
|
||||
}
|
||||
delete standardProps.url;
|
||||
if (standardProps.googleCalendarId) {
|
||||
return standardProps;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
fetch: function (arg, onSuccess, onFailure) {
|
||||
var calendar = arg.calendar;
|
||||
var meta = arg.eventSource.meta;
|
||||
var apiKey = meta.googleCalendarApiKey || calendar.opt('googleCalendarApiKey');
|
||||
if (!apiKey) {
|
||||
onFailure({
|
||||
message: 'Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/'
|
||||
});
|
||||
}
|
||||
else {
|
||||
var url = buildUrl(meta);
|
||||
var requestParams_1 = buildRequestParams(arg.range, apiKey, meta.data, calendar.dateEnv);
|
||||
core.requestJson('GET', url, requestParams_1, function (body, xhr) {
|
||||
if (body.error) {
|
||||
onFailure({
|
||||
message: 'Google Calendar API: ' + body.error.message,
|
||||
errors: body.error.errors,
|
||||
xhr: xhr
|
||||
});
|
||||
}
|
||||
else {
|
||||
onSuccess({
|
||||
rawEvents: gcalItemsToRawEventDefs(body.items, requestParams_1.timeZone),
|
||||
xhr: xhr
|
||||
});
|
||||
}
|
||||
}, function (message, xhr) {
|
||||
onFailure({ message: message, xhr: xhr });
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
function parseGoogleCalendarId(url) {
|
||||
var match;
|
||||
// detect if the ID was specified as a single string.
|
||||
// will match calendars like "asdf1234@calendar.google.com" in addition to person email calendars.
|
||||
if (/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(url)) {
|
||||
return url;
|
||||
}
|
||||
else if ((match = /^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(url)) ||
|
||||
(match = /^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(url))) {
|
||||
return decodeURIComponent(match[1]);
|
||||
}
|
||||
}
|
||||
function buildUrl(meta) {
|
||||
return API_BASE + '/' + encodeURIComponent(meta.googleCalendarId) + '/events';
|
||||
}
|
||||
function buildRequestParams(range, apiKey, extraParams, dateEnv) {
|
||||
var params;
|
||||
var startStr;
|
||||
var endStr;
|
||||
if (dateEnv.canComputeOffset) {
|
||||
// strings will naturally have offsets, which GCal needs
|
||||
startStr = dateEnv.formatIso(range.start);
|
||||
endStr = dateEnv.formatIso(range.end);
|
||||
}
|
||||
else {
|
||||
// when timezone isn't known, we don't know what the UTC offset should be, so ask for +/- 1 day
|
||||
// from the UTC day-start to guarantee we're getting all the events
|
||||
// (start/end will be UTC-coerced dates, so toISOString is okay)
|
||||
startStr = core.addDays(range.start, -1).toISOString();
|
||||
endStr = core.addDays(range.end, 1).toISOString();
|
||||
}
|
||||
params = __assign({}, (extraParams || {}), { key: apiKey, timeMin: startStr, timeMax: endStr, singleEvents: true, maxResults: 9999 });
|
||||
if (dateEnv.timeZone !== 'local') {
|
||||
params.timeZone = dateEnv.timeZone;
|
||||
}
|
||||
return params;
|
||||
}
|
||||
function gcalItemsToRawEventDefs(items, gcalTimezone) {
|
||||
return items.map(function (item) {
|
||||
return gcalItemToRawEventDef(item, gcalTimezone);
|
||||
});
|
||||
}
|
||||
function gcalItemToRawEventDef(item, gcalTimezone) {
|
||||
var url = item.htmlLink || null;
|
||||
// make the URLs for each event show times in the correct timezone
|
||||
if (url && gcalTimezone) {
|
||||
url = injectQsComponent(url, 'ctz=' + gcalTimezone);
|
||||
}
|
||||
return {
|
||||
id: item.id,
|
||||
title: item.summary,
|
||||
start: item.start.dateTime || item.start.date,
|
||||
end: item.end.dateTime || item.end.date,
|
||||
url: url,
|
||||
location: item.location,
|
||||
description: item.description
|
||||
};
|
||||
}
|
||||
// Injects a string like "arg=value" into the querystring of a URL
|
||||
// TODO: move to a general util file?
|
||||
function injectQsComponent(url, component) {
|
||||
// inject it after the querystring but before the fragment
|
||||
return url.replace(/(\?.*?)?(#|$)/, function (whole, qs, hash) {
|
||||
return (qs ? qs + '&' : '?') + component + hash;
|
||||
});
|
||||
}
|
||||
var main = core.createPlugin({
|
||||
eventSourceDefs: [eventSourceDef]
|
||||
});
|
||||
|
||||
exports.default = main;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
/*!
|
||||
FullCalendar Google Calendar Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@fullcalendar/core")):"function"==typeof define&&define.amd?define(["exports","@fullcalendar/core"],r):(e=e||self,r(e.FullCalendarGoogleCalendar={},e.FullCalendar))}(this,function(e,r){"use strict";function t(e){var r;return/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(e)?e:(r=/^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(e))||(r=/^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(e))?decodeURIComponent(r[1]):void 0}function n(e){return s+"/"+encodeURIComponent(e.googleCalendarId)+"/events"}function o(e,t,n,o){var a,l,i;return o.canComputeOffset?(l=o.formatIso(e.start),i=o.formatIso(e.end)):(l=r.addDays(e.start,-1).toISOString(),i=r.addDays(e.end,1).toISOString()),a=d({},n||{},{key:t,timeMin:l,timeMax:i,singleEvents:!0,maxResults:9999}),"local"!==o.timeZone&&(a.timeZone=o.timeZone),a}function a(e,r){return e.map(function(e){return l(e,r)})}function l(e,r){var t=e.htmlLink||null;return t&&r&&(t=i(t,"ctz="+r)),{id:e.id,title:e.summary,start:e.start.dateTime||e.start.date,end:e.end.dateTime||e.end.date,url:t,location:e.location,description:e.description}}function i(e,r){return e.replace(/(\?.*?)?(#|$)/,function(e,t,n){return(t?t+"&":"?")+r+n})}/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
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
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
var d=function(){return d=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++){r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},d.apply(this,arguments)},s="https://www.googleapis.com/calendar/v3/calendars",c={url:String,googleCalendarApiKey:String,googleCalendarId:String,data:null},u={parseMeta:function(e){if("string"==typeof e&&(e={url:e}),"object"==typeof e){var n=r.refineProps(e,c);if(!n.googleCalendarId&&n.url&&(n.googleCalendarId=t(n.url)),delete n.url,n.googleCalendarId)return n}return null},fetch:function(e,t,l){var i=e.calendar,d=e.eventSource.meta,s=d.googleCalendarApiKey||i.opt("googleCalendarApiKey");if(s){var c=n(d),u=o(e.range,s,d.data,i.dateEnv);r.requestJson("GET",c,u,function(e,r){e.error?l({message:"Google Calendar API: "+e.error.message,errors:e.error.errors,xhr:r}):t({rawEvents:a(e.items,u.timeZone),xhr:r})},function(e,r){l({message:e,xhr:r})})}else l({message:"Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"})}},g=r.createPlugin({eventSourceDefs:[u]});e.default=g,Object.defineProperty(e,"__esModule",{value:!0})});
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,101 @@
|
|||
/*!
|
||||
FullCalendar List View Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
/* List View
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
/* possibly reusable */
|
||||
.fc-event-dot {
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 5px; }
|
||||
|
||||
/* view wrapper */
|
||||
.fc-rtl .fc-list-view {
|
||||
direction: rtl;
|
||||
/* unlike core views, leverage browser RTL */ }
|
||||
|
||||
.fc-list-view {
|
||||
border-width: 1px;
|
||||
border-style: solid; }
|
||||
|
||||
/* table resets */
|
||||
.fc .fc-list-table {
|
||||
table-layout: auto;
|
||||
/* for shrinkwrapping cell content */ }
|
||||
|
||||
.fc-list-table td {
|
||||
border-width: 1px 0 0;
|
||||
padding: 8px 14px; }
|
||||
|
||||
.fc-list-table tr:first-child td {
|
||||
border-top-width: 0; }
|
||||
|
||||
/* day headings with the list */
|
||||
.fc-list-heading {
|
||||
border-bottom-width: 1px; }
|
||||
|
||||
.fc-list-heading td {
|
||||
font-weight: bold; }
|
||||
|
||||
.fc-ltr .fc-list-heading-main {
|
||||
float: left; }
|
||||
|
||||
.fc-ltr .fc-list-heading-alt {
|
||||
float: right; }
|
||||
|
||||
.fc-rtl .fc-list-heading-main {
|
||||
float: right; }
|
||||
|
||||
.fc-rtl .fc-list-heading-alt {
|
||||
float: left; }
|
||||
|
||||
/* event list items */
|
||||
.fc-list-item.fc-has-url {
|
||||
cursor: pointer;
|
||||
/* whole row will be clickable */ }
|
||||
|
||||
.fc-list-item-marker,
|
||||
.fc-list-item-time {
|
||||
white-space: nowrap;
|
||||
width: 1px; }
|
||||
|
||||
/* make the dot closer to the event title */
|
||||
.fc-ltr .fc-list-item-marker {
|
||||
padding-right: 0; }
|
||||
|
||||
.fc-rtl .fc-list-item-marker {
|
||||
padding-left: 0; }
|
||||
|
||||
.fc-list-item-title a {
|
||||
/* every event title cell has an <a> tag */
|
||||
text-decoration: none;
|
||||
color: inherit; }
|
||||
|
||||
.fc-list-item-title a[href]:hover {
|
||||
/* hover effect only on titles with hrefs */
|
||||
text-decoration: underline; }
|
||||
|
||||
/* message when no events */
|
||||
.fc-list-empty-wrap2 {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0; }
|
||||
|
||||
.fc-list-empty-wrap1 {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: table; }
|
||||
|
||||
.fc-list-empty {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
text-align: center; }
|
||||
|
||||
.fc-unthemed .fc-list-empty {
|
||||
/* theme will provide own background */
|
||||
background-color: #eee; }
|
||||
|
|
@ -0,0 +1,341 @@
|
|||
/*!
|
||||
FullCalendar List View Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) :
|
||||
typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) :
|
||||
(global = global || self, factory(global.FullCalendarList = {}, global.FullCalendar));
|
||||
}(this, function (exports, core) { 'use strict';
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
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
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
/* global Reflect, Promise */
|
||||
|
||||
var extendStatics = function(d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
|
||||
function __extends(d, b) {
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
}
|
||||
|
||||
var ListEventRenderer = /** @class */ (function (_super) {
|
||||
__extends(ListEventRenderer, _super);
|
||||
function ListEventRenderer(listView) {
|
||||
var _this = _super.call(this, listView.context) || this;
|
||||
_this.listView = listView;
|
||||
return _this;
|
||||
}
|
||||
ListEventRenderer.prototype.attachSegs = function (segs) {
|
||||
if (!segs.length) {
|
||||
this.listView.renderEmptyMessage();
|
||||
}
|
||||
else {
|
||||
this.listView.renderSegList(segs);
|
||||
}
|
||||
};
|
||||
ListEventRenderer.prototype.detachSegs = function () {
|
||||
};
|
||||
// generates the HTML for a single event row
|
||||
ListEventRenderer.prototype.renderSegHtml = function (seg) {
|
||||
var _a = this.context, view = _a.view, theme = _a.theme;
|
||||
var eventRange = seg.eventRange;
|
||||
var eventDef = eventRange.def;
|
||||
var eventInstance = eventRange.instance;
|
||||
var eventUi = eventRange.ui;
|
||||
var url = eventDef.url;
|
||||
var classes = ['fc-list-item'].concat(eventUi.classNames);
|
||||
var bgColor = eventUi.backgroundColor;
|
||||
var timeHtml;
|
||||
if (eventDef.allDay) {
|
||||
timeHtml = core.getAllDayHtml(view);
|
||||
}
|
||||
else if (core.isMultiDayRange(eventRange.range)) {
|
||||
if (seg.isStart) {
|
||||
timeHtml = core.htmlEscape(this._getTimeText(eventInstance.range.start, seg.end, false // allDay
|
||||
));
|
||||
}
|
||||
else if (seg.isEnd) {
|
||||
timeHtml = core.htmlEscape(this._getTimeText(seg.start, eventInstance.range.end, false // allDay
|
||||
));
|
||||
}
|
||||
else { // inner segment that lasts the whole day
|
||||
timeHtml = core.getAllDayHtml(view);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Display the normal time text for the *event's* times
|
||||
timeHtml = core.htmlEscape(this.getTimeText(eventRange));
|
||||
}
|
||||
if (url) {
|
||||
classes.push('fc-has-url');
|
||||
}
|
||||
return '<tr class="' + classes.join(' ') + '">' +
|
||||
(this.displayEventTime ?
|
||||
'<td class="fc-list-item-time ' + theme.getClass('widgetContent') + '">' +
|
||||
(timeHtml || '') +
|
||||
'</td>' :
|
||||
'') +
|
||||
'<td class="fc-list-item-marker ' + theme.getClass('widgetContent') + '">' +
|
||||
'<span class="fc-event-dot"' +
|
||||
(bgColor ?
|
||||
' style="background-color:' + bgColor + '"' :
|
||||
'') +
|
||||
'></span>' +
|
||||
'</td>' +
|
||||
'<td class="fc-list-item-title ' + theme.getClass('widgetContent') + '">' +
|
||||
'<a' + (url ? ' href="' + core.htmlEscape(url) + '"' : '') + '>' +
|
||||
core.htmlEscape(eventDef.title || '') +
|
||||
'</a>' +
|
||||
'</td>' +
|
||||
'</tr>';
|
||||
};
|
||||
// like "4:00am"
|
||||
ListEventRenderer.prototype.computeEventTimeFormat = function () {
|
||||
return {
|
||||
hour: 'numeric',
|
||||
minute: '2-digit',
|
||||
meridiem: 'short'
|
||||
};
|
||||
};
|
||||
return ListEventRenderer;
|
||||
}(core.FgEventRenderer));
|
||||
|
||||
/*
|
||||
Responsible for the scroller, and forwarding event-related actions into the "grid".
|
||||
*/
|
||||
var ListView = /** @class */ (function (_super) {
|
||||
__extends(ListView, _super);
|
||||
function ListView(context, viewSpec, dateProfileGenerator, parentEl) {
|
||||
var _this = _super.call(this, context, viewSpec, dateProfileGenerator, parentEl) || this;
|
||||
_this.computeDateVars = core.memoize(computeDateVars);
|
||||
_this.eventStoreToSegs = core.memoize(_this._eventStoreToSegs);
|
||||
var eventRenderer = _this.eventRenderer = new ListEventRenderer(_this);
|
||||
_this.renderContent = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer));
|
||||
_this.el.classList.add('fc-list-view');
|
||||
var listViewClassNames = (_this.theme.getClass('listView') || '').split(' '); // wish we didn't have to do this
|
||||
for (var _i = 0, listViewClassNames_1 = listViewClassNames; _i < listViewClassNames_1.length; _i++) {
|
||||
var listViewClassName = listViewClassNames_1[_i];
|
||||
if (listViewClassName) { // in case input was empty string
|
||||
_this.el.classList.add(listViewClassName);
|
||||
}
|
||||
}
|
||||
_this.scroller = new core.ScrollComponent('hidden', // overflow x
|
||||
'auto' // overflow y
|
||||
);
|
||||
_this.el.appendChild(_this.scroller.el);
|
||||
_this.contentEl = _this.scroller.el; // shortcut
|
||||
context.calendar.registerInteractiveComponent(_this, {
|
||||
el: _this.el
|
||||
// TODO: make aware that it doesn't do Hits
|
||||
});
|
||||
return _this;
|
||||
}
|
||||
ListView.prototype.render = function (props) {
|
||||
var _a = this.computeDateVars(props.dateProfile), dayDates = _a.dayDates, dayRanges = _a.dayRanges;
|
||||
this.dayDates = dayDates;
|
||||
this.renderContent(this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges));
|
||||
};
|
||||
ListView.prototype.destroy = function () {
|
||||
_super.prototype.destroy.call(this);
|
||||
this.scroller.destroy(); // will remove the Grid too
|
||||
this.calendar.unregisterInteractiveComponent(this);
|
||||
};
|
||||
ListView.prototype.updateSize = function (isResize, viewHeight, isAuto) {
|
||||
_super.prototype.updateSize.call(this, isResize, viewHeight, isAuto);
|
||||
this.eventRenderer.computeSizes(isResize);
|
||||
this.eventRenderer.assignSizes(isResize);
|
||||
this.scroller.clear(); // sets height to 'auto' and clears overflow
|
||||
if (!isAuto) {
|
||||
this.scroller.setHeight(this.computeScrollerHeight(viewHeight));
|
||||
}
|
||||
};
|
||||
ListView.prototype.computeScrollerHeight = function (viewHeight) {
|
||||
return viewHeight -
|
||||
core.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller
|
||||
};
|
||||
ListView.prototype._eventStoreToSegs = function (eventStore, eventUiBases, dayRanges) {
|
||||
return this.eventRangesToSegs(core.sliceEventStore(eventStore, eventUiBases, this.props.dateProfile.activeRange, this.nextDayThreshold).fg, dayRanges);
|
||||
};
|
||||
ListView.prototype.eventRangesToSegs = function (eventRanges, dayRanges) {
|
||||
var segs = [];
|
||||
for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) {
|
||||
var eventRange = eventRanges_1[_i];
|
||||
segs.push.apply(segs, this.eventRangeToSegs(eventRange, dayRanges));
|
||||
}
|
||||
return segs;
|
||||
};
|
||||
ListView.prototype.eventRangeToSegs = function (eventRange, dayRanges) {
|
||||
var _a = this, dateEnv = _a.dateEnv, nextDayThreshold = _a.nextDayThreshold;
|
||||
var range = eventRange.range;
|
||||
var allDay = eventRange.def.allDay;
|
||||
var dayIndex;
|
||||
var segRange;
|
||||
var seg;
|
||||
var segs = [];
|
||||
for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex++) {
|
||||
segRange = core.intersectRanges(range, dayRanges[dayIndex]);
|
||||
if (segRange) {
|
||||
seg = {
|
||||
component: this,
|
||||
eventRange: eventRange,
|
||||
start: segRange.start,
|
||||
end: segRange.end,
|
||||
isStart: eventRange.isStart && segRange.start.valueOf() === range.start.valueOf(),
|
||||
isEnd: eventRange.isEnd && segRange.end.valueOf() === range.end.valueOf(),
|
||||
dayIndex: dayIndex
|
||||
};
|
||||
segs.push(seg);
|
||||
// detect when range won't go fully into the next day,
|
||||
// and mutate the latest seg to the be the end.
|
||||
if (!seg.isEnd && !allDay &&
|
||||
dayIndex + 1 < dayRanges.length &&
|
||||
range.end <
|
||||
dateEnv.add(dayRanges[dayIndex + 1].start, nextDayThreshold)) {
|
||||
seg.end = range.end;
|
||||
seg.isEnd = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return segs;
|
||||
};
|
||||
ListView.prototype.renderEmptyMessage = function () {
|
||||
this.contentEl.innerHTML =
|
||||
'<div class="fc-list-empty-wrap2">' + // TODO: try less wraps
|
||||
'<div class="fc-list-empty-wrap1">' +
|
||||
'<div class="fc-list-empty">' +
|
||||
core.htmlEscape(this.opt('noEventsMessage')) +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</div>';
|
||||
};
|
||||
// called by ListEventRenderer
|
||||
ListView.prototype.renderSegList = function (allSegs) {
|
||||
var segsByDay = this.groupSegsByDay(allSegs); // sparse array
|
||||
var dayIndex;
|
||||
var daySegs;
|
||||
var i;
|
||||
var tableEl = core.htmlToElement('<table class="fc-list-table ' + this.calendar.theme.getClass('tableList') + '"><tbody></tbody></table>');
|
||||
var tbodyEl = tableEl.querySelector('tbody');
|
||||
for (dayIndex = 0; dayIndex < segsByDay.length; dayIndex++) {
|
||||
daySegs = segsByDay[dayIndex];
|
||||
if (daySegs) { // sparse array, so might be undefined
|
||||
// append a day header
|
||||
tbodyEl.appendChild(this.buildDayHeaderRow(this.dayDates[dayIndex]));
|
||||
daySegs = this.eventRenderer.sortEventSegs(daySegs);
|
||||
for (i = 0; i < daySegs.length; i++) {
|
||||
tbodyEl.appendChild(daySegs[i].el); // append event row
|
||||
}
|
||||
}
|
||||
}
|
||||
this.contentEl.innerHTML = '';
|
||||
this.contentEl.appendChild(tableEl);
|
||||
};
|
||||
// Returns a sparse array of arrays, segs grouped by their dayIndex
|
||||
ListView.prototype.groupSegsByDay = function (segs) {
|
||||
var segsByDay = []; // sparse array
|
||||
var i;
|
||||
var seg;
|
||||
for (i = 0; i < segs.length; i++) {
|
||||
seg = segs[i];
|
||||
(segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = []))
|
||||
.push(seg);
|
||||
}
|
||||
return segsByDay;
|
||||
};
|
||||
// generates the HTML for the day headers that live amongst the event rows
|
||||
ListView.prototype.buildDayHeaderRow = function (dayDate) {
|
||||
var dateEnv = this.dateEnv;
|
||||
var mainFormat = core.createFormatter(this.opt('listDayFormat')); // TODO: cache
|
||||
var altFormat = core.createFormatter(this.opt('listDayAltFormat')); // TODO: cache
|
||||
return core.createElement('tr', {
|
||||
className: 'fc-list-heading',
|
||||
'data-date': dateEnv.formatIso(dayDate, { omitTime: true })
|
||||
}, '<td class="' + (this.calendar.theme.getClass('tableListHeading') ||
|
||||
this.calendar.theme.getClass('widgetHeader')) + '" colspan="3">' +
|
||||
(mainFormat ?
|
||||
core.buildGotoAnchorHtml(this, dayDate, { 'class': 'fc-list-heading-main' }, core.htmlEscape(dateEnv.format(dayDate, mainFormat)) // inner HTML
|
||||
) :
|
||||
'') +
|
||||
(altFormat ?
|
||||
core.buildGotoAnchorHtml(this, dayDate, { 'class': 'fc-list-heading-alt' }, core.htmlEscape(dateEnv.format(dayDate, altFormat)) // inner HTML
|
||||
) :
|
||||
'') +
|
||||
'</td>');
|
||||
};
|
||||
return ListView;
|
||||
}(core.View));
|
||||
ListView.prototype.fgSegSelector = '.fc-list-item'; // which elements accept event actions
|
||||
function computeDateVars(dateProfile) {
|
||||
var dayStart = core.startOfDay(dateProfile.renderRange.start);
|
||||
var viewEnd = dateProfile.renderRange.end;
|
||||
var dayDates = [];
|
||||
var dayRanges = [];
|
||||
while (dayStart < viewEnd) {
|
||||
dayDates.push(dayStart);
|
||||
dayRanges.push({
|
||||
start: dayStart,
|
||||
end: core.addDays(dayStart, 1)
|
||||
});
|
||||
dayStart = core.addDays(dayStart, 1);
|
||||
}
|
||||
return { dayDates: dayDates, dayRanges: dayRanges };
|
||||
}
|
||||
|
||||
var main = core.createPlugin({
|
||||
views: {
|
||||
list: {
|
||||
class: ListView,
|
||||
buttonTextKey: 'list',
|
||||
listDayFormat: { month: 'long', day: 'numeric', year: 'numeric' } // like "January 1, 2016"
|
||||
},
|
||||
listDay: {
|
||||
type: 'list',
|
||||
duration: { days: 1 },
|
||||
listDayFormat: { weekday: 'long' } // day-of-week is all we need. full date is probably in header
|
||||
},
|
||||
listWeek: {
|
||||
type: 'list',
|
||||
duration: { weeks: 1 },
|
||||
listDayFormat: { weekday: 'long' },
|
||||
listDayAltFormat: { month: 'long', day: 'numeric', year: 'numeric' }
|
||||
},
|
||||
listMonth: {
|
||||
type: 'list',
|
||||
duration: { month: 1 },
|
||||
listDayAltFormat: { weekday: 'long' } // day-of-week is nice-to-have
|
||||
},
|
||||
listYear: {
|
||||
type: 'list',
|
||||
duration: { year: 1 },
|
||||
listDayAltFormat: { weekday: 'long' } // day-of-week is nice-to-have
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
exports.ListView = ListView;
|
||||
exports.default = main;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
/*!
|
||||
FullCalendar List View Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/.fc-event-dot{display:inline-block;width:10px;height:10px;border-radius:5px}.fc-rtl .fc-list-view{direction:rtl}.fc-list-view{border-width:1px;border-style:solid}.fc .fc-list-table{table-layout:auto}.fc-list-table td{border-width:1px 0 0;padding:8px 14px}.fc-list-table tr:first-child td{border-top-width:0}.fc-list-heading{border-bottom-width:1px}.fc-list-heading td{font-weight:700}.fc-ltr .fc-list-heading-main{float:left}.fc-ltr .fc-list-heading-alt,.fc-rtl .fc-list-heading-main{float:right}.fc-rtl .fc-list-heading-alt{float:left}.fc-list-item.fc-has-url{cursor:pointer}.fc-list-item-marker,.fc-list-item-time{white-space:nowrap;width:1px}.fc-ltr .fc-list-item-marker{padding-right:0}.fc-rtl .fc-list-item-marker{padding-left:0}.fc-list-item-title a{text-decoration:none;color:inherit}.fc-list-item-title a[href]:hover{text-decoration:underline}.fc-list-empty-wrap2{position:absolute;top:0;left:0;right:0;bottom:0}.fc-list-empty-wrap1{width:100%;height:100%;display:table}.fc-list-empty{display:table-cell;vertical-align:middle;text-align:center}.fc-unthemed .fc-list-empty{background-color:#eee}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,162 @@
|
|||
/*!
|
||||
FullCalendar Luxon Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('luxon'), require('@fullcalendar/core')) :
|
||||
typeof define === 'function' && define.amd ? define(['exports', 'luxon', '@fullcalendar/core'], factory) :
|
||||
(global = global || self, factory(global.FullCalendarLuxon = {}, global.luxon, global.FullCalendar));
|
||||
}(this, function (exports, luxon, core) { 'use strict';
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
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
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
/* global Reflect, Promise */
|
||||
|
||||
var extendStatics = function(d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
|
||||
function __extends(d, b) {
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
}
|
||||
|
||||
var __assign = function() {
|
||||
__assign = Object.assign || function __assign(t) {
|
||||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||
s = arguments[i];
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
return __assign.apply(this, arguments);
|
||||
};
|
||||
|
||||
function toDateTime(date, calendar) {
|
||||
if (!(calendar instanceof core.Calendar)) {
|
||||
throw new Error('must supply a Calendar instance');
|
||||
}
|
||||
return luxon.DateTime.fromJSDate(date, {
|
||||
zone: calendar.dateEnv.timeZone,
|
||||
locale: calendar.dateEnv.locale.codes[0]
|
||||
});
|
||||
}
|
||||
function toDuration(duration, calendar) {
|
||||
if (!(calendar instanceof core.Calendar)) {
|
||||
throw new Error('must supply a Calendar instance');
|
||||
}
|
||||
return luxon.Duration.fromObject(__assign({}, duration, { locale: calendar.dateEnv.locale.codes[0] }));
|
||||
}
|
||||
var LuxonNamedTimeZone = /** @class */ (function (_super) {
|
||||
__extends(LuxonNamedTimeZone, _super);
|
||||
function LuxonNamedTimeZone() {
|
||||
return _super !== null && _super.apply(this, arguments) || this;
|
||||
}
|
||||
LuxonNamedTimeZone.prototype.offsetForArray = function (a) {
|
||||
return arrayToLuxon(a, this.timeZoneName).offset;
|
||||
};
|
||||
LuxonNamedTimeZone.prototype.timestampToArray = function (ms) {
|
||||
return luxonToArray(luxon.DateTime.fromMillis(ms, {
|
||||
zone: this.timeZoneName
|
||||
}));
|
||||
};
|
||||
return LuxonNamedTimeZone;
|
||||
}(core.NamedTimeZoneImpl));
|
||||
function formatWithCmdStr(cmdStr, arg) {
|
||||
var cmd = parseCmdStr(cmdStr);
|
||||
if (arg.end) {
|
||||
var start = arrayToLuxon(arg.start.array, arg.timeZone, arg.localeCodes[0]);
|
||||
var end = arrayToLuxon(arg.end.array, arg.timeZone, arg.localeCodes[0]);
|
||||
return formatRange(cmd, start.toFormat.bind(start), end.toFormat.bind(end), arg.separator);
|
||||
}
|
||||
return arrayToLuxon(arg.date.array, arg.timeZone, arg.localeCodes[0]).toFormat(cmd.whole);
|
||||
}
|
||||
var main = core.createPlugin({
|
||||
cmdFormatter: formatWithCmdStr,
|
||||
namedTimeZonedImpl: LuxonNamedTimeZone
|
||||
});
|
||||
function luxonToArray(datetime) {
|
||||
return [
|
||||
datetime.year,
|
||||
datetime.month - 1,
|
||||
datetime.day,
|
||||
datetime.hour,
|
||||
datetime.minute,
|
||||
datetime.second,
|
||||
datetime.millisecond
|
||||
];
|
||||
}
|
||||
function arrayToLuxon(arr, timeZone, locale) {
|
||||
return luxon.DateTime.fromObject({
|
||||
zone: timeZone,
|
||||
locale: locale,
|
||||
year: arr[0],
|
||||
month: arr[1] + 1,
|
||||
day: arr[2],
|
||||
hour: arr[3],
|
||||
minute: arr[4],
|
||||
second: arr[5],
|
||||
millisecond: arr[6]
|
||||
});
|
||||
}
|
||||
function parseCmdStr(cmdStr) {
|
||||
var parts = cmdStr.match(/^(.*?)\{(.*)\}(.*)$/); // TODO: lookbehinds for escape characters
|
||||
if (parts) {
|
||||
var middle = parseCmdStr(parts[2]);
|
||||
return {
|
||||
head: parts[1],
|
||||
middle: middle,
|
||||
tail: parts[3],
|
||||
whole: parts[1] + middle.whole + parts[3]
|
||||
};
|
||||
}
|
||||
else {
|
||||
return {
|
||||
head: null,
|
||||
middle: null,
|
||||
tail: null,
|
||||
whole: cmdStr
|
||||
};
|
||||
}
|
||||
}
|
||||
function formatRange(cmd, formatStart, formatEnd, separator) {
|
||||
if (cmd.middle) {
|
||||
var startHead = formatStart(cmd.head);
|
||||
var startMiddle = formatRange(cmd.middle, formatStart, formatEnd, separator);
|
||||
var startTail = formatStart(cmd.tail);
|
||||
var endHead = formatEnd(cmd.head);
|
||||
var endMiddle = formatRange(cmd.middle, formatStart, formatEnd, separator);
|
||||
var endTail = formatEnd(cmd.tail);
|
||||
if (startHead === endHead && startTail === endTail) {
|
||||
return startHead +
|
||||
(startMiddle === endMiddle ? startMiddle : startMiddle + separator + endMiddle) +
|
||||
startTail;
|
||||
}
|
||||
}
|
||||
return formatStart(cmd.whole) + separator + formatEnd(cmd.whole);
|
||||
}
|
||||
|
||||
exports.default = main;
|
||||
exports.toDateTime = toDateTime;
|
||||
exports.toDuration = toDuration;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
/*!
|
||||
FullCalendar Luxon Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("luxon"),require("@fullcalendar/core")):"function"==typeof define&&define.amd?define(["exports","luxon","@fullcalendar/core"],t):(e=e||self,t(e.FullCalendarLuxon={},e.luxon,e.FullCalendar))}(this,function(e,t,n){"use strict";function o(e,t){function n(){this.constructor=e}f(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function r(e,o){if(!(o instanceof n.Calendar))throw new Error("must supply a Calendar instance");return t.DateTime.fromJSDate(e,{zone:o.dateEnv.timeZone,locale:o.dateEnv.locale.codes[0]})}function a(e,o){if(!(o instanceof n.Calendar))throw new Error("must supply a Calendar instance");return t.Duration.fromObject(m({},e,{locale:o.dateEnv.locale.codes[0]}))}function i(e,t){var n=c(e);if(t.end){var o=u(t.start.array,t.timeZone,t.localeCodes[0]),r=u(t.end.array,t.timeZone,t.localeCodes[0]);return d(n,o.toFormat.bind(o),r.toFormat.bind(r),t.separator)}return u(t.date.array,t.timeZone,t.localeCodes[0]).toFormat(n.whole)}function l(e){return[e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond]}function u(e,n,o){return t.DateTime.fromObject({zone:n,locale:o,year:e[0],month:e[1]+1,day:e[2],hour:e[3],minute:e[4],second:e[5],millisecond:e[6]})}function c(e){var t=e.match(/^(.*?)\{(.*)\}(.*)$/);if(t){var n=c(t[2]);return{head:t[1],middle:n,tail:t[3],whole:t[1]+n.whole+t[3]}}return{head:null,middle:null,tail:null,whole:e}}function d(e,t,n,o){if(e.middle){var r=t(e.head),a=d(e.middle,t,n,o),i=t(e.tail),l=n(e.head),u=d(e.middle,t,n,o),c=n(e.tail);if(r===l&&i===c)return r+(a===u?a:a+o+u)+i}return t(e.whole)+o+n(e.whole)}/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
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
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
var f=function(e,t){return(f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},m=function(){return m=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++){t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},m.apply(this,arguments)},s=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return o(n,e),n.prototype.offsetForArray=function(e){return u(e,this.timeZoneName).offset},n.prototype.timestampToArray=function(e){return l(t.DateTime.fromMillis(e,{zone:this.timeZoneName}))},n}(n.NamedTimeZoneImpl),p=n.createPlugin({cmdFormatter:i,namedTimeZonedImpl:s});e.default=p,e.toDateTime=r,e.toDuration=a,Object.defineProperty(e,"__esModule",{value:!0})});
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
/*!
|
||||
FullCalendar Moment Timezone Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('moment'), require('moment-timezone/builds/moment-timezone-with-data'), require('@fullcalendar/core')) :
|
||||
typeof define === 'function' && define.amd ? define(['exports', 'moment', 'moment-timezone/builds/moment-timezone-with-data', '@fullcalendar/core'], factory) :
|
||||
(global = global || self, factory(global.FullCalendarMomentTimezone = {}, global.moment, global.moment, global.FullCalendar));
|
||||
}(this, function (exports, moment, momentTimezoneWithData, core) { 'use strict';
|
||||
|
||||
moment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
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
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
/* global Reflect, Promise */
|
||||
|
||||
var extendStatics = function(d, b) {
|
||||
extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
||||
return extendStatics(d, b);
|
||||
};
|
||||
|
||||
function __extends(d, b) {
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
}
|
||||
|
||||
var MomentNamedTimeZone = /** @class */ (function (_super) {
|
||||
__extends(MomentNamedTimeZone, _super);
|
||||
function MomentNamedTimeZone() {
|
||||
return _super !== null && _super.apply(this, arguments) || this;
|
||||
}
|
||||
MomentNamedTimeZone.prototype.offsetForArray = function (a) {
|
||||
return moment.tz(a, this.timeZoneName).utcOffset();
|
||||
};
|
||||
MomentNamedTimeZone.prototype.timestampToArray = function (ms) {
|
||||
return moment.tz(ms, this.timeZoneName).toArray();
|
||||
};
|
||||
return MomentNamedTimeZone;
|
||||
}(core.NamedTimeZoneImpl));
|
||||
var main = core.createPlugin({
|
||||
namedTimeZonedImpl: MomentNamedTimeZone
|
||||
});
|
||||
|
||||
exports.default = main;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
/*!
|
||||
FullCalendar Moment Timezone Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("moment"),require("moment-timezone/builds/moment-timezone-with-data"),require("@fullcalendar/core")):"function"==typeof define&&define.amd?define(["exports","moment","moment-timezone/builds/moment-timezone-with-data","@fullcalendar/core"],t):(e=e||self,t(e.FullCalendarMomentTimezone={},e.moment,e.moment,e.FullCalendar))}(this,function(e,t,n,o){"use strict";function r(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}t=t&&t.hasOwnProperty("default")?t.default:t;/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
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
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
var i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},u=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return r(n,e),n.prototype.offsetForArray=function(e){return t.tz(e,this.timeZoneName).utcOffset()},n.prototype.timestampToArray=function(e){return t.tz(e,this.timeZoneName).toArray()},n}(o.NamedTimeZoneImpl),m=o.createPlugin({namedTimeZonedImpl:u});e.default=m,Object.defineProperty(e,"__esModule",{value:!0})});
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
/*!
|
||||
FullCalendar Moment Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('moment'), require('@fullcalendar/core')) :
|
||||
typeof define === 'function' && define.amd ? define(['exports', 'moment', '@fullcalendar/core'], factory) :
|
||||
(global = global || self, factory(global.FullCalendarMoment = {}, global.moment, global.FullCalendar));
|
||||
}(this, function (exports, moment, core) { 'use strict';
|
||||
|
||||
moment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;
|
||||
|
||||
function toMoment(date, calendar) {
|
||||
if (!(calendar instanceof core.Calendar)) {
|
||||
throw new Error('must supply a Calendar instance');
|
||||
}
|
||||
return convertToMoment(date, calendar.dateEnv.timeZone, null, calendar.dateEnv.locale.codes[0]);
|
||||
}
|
||||
function toDuration(fcDuration) {
|
||||
return moment.duration(fcDuration); // momment accepts all the props that fc.Duration already has!
|
||||
}
|
||||
function formatWithCmdStr(cmdStr, arg) {
|
||||
var cmd = parseCmdStr(cmdStr);
|
||||
if (arg.end) {
|
||||
var startMom = convertToMoment(arg.start.array, arg.timeZone, arg.start.timeZoneOffset, arg.localeCodes[0]);
|
||||
var endMom = convertToMoment(arg.end.array, arg.timeZone, arg.end.timeZoneOffset, arg.localeCodes[0]);
|
||||
return formatRange(cmd, createMomentFormatFunc(startMom), createMomentFormatFunc(endMom), arg.separator);
|
||||
}
|
||||
return convertToMoment(arg.date.array, arg.timeZone, arg.date.timeZoneOffset, arg.localeCodes[0]).format(cmd.whole); // TODO: test for this
|
||||
}
|
||||
var main = core.createPlugin({
|
||||
cmdFormatter: formatWithCmdStr
|
||||
});
|
||||
function createMomentFormatFunc(mom) {
|
||||
return function (cmdStr) {
|
||||
return cmdStr ? mom.format(cmdStr) : ''; // because calling with blank string results in ISO8601 :(
|
||||
};
|
||||
}
|
||||
function convertToMoment(input, timeZone, timeZoneOffset, locale) {
|
||||
var mom;
|
||||
if (timeZone === 'local') {
|
||||
mom = moment(input);
|
||||
}
|
||||
else if (timeZone === 'UTC') {
|
||||
mom = moment.utc(input);
|
||||
}
|
||||
else if (moment.tz) {
|
||||
mom = moment.tz(input, timeZone);
|
||||
}
|
||||
else {
|
||||
mom = moment.utc(input);
|
||||
if (timeZoneOffset != null) {
|
||||
mom.utcOffset(timeZoneOffset);
|
||||
}
|
||||
}
|
||||
mom.locale(locale);
|
||||
return mom;
|
||||
}
|
||||
function parseCmdStr(cmdStr) {
|
||||
var parts = cmdStr.match(/^(.*?)\{(.*)\}(.*)$/); // TODO: lookbehinds for escape characters
|
||||
if (parts) {
|
||||
var middle = parseCmdStr(parts[2]);
|
||||
return {
|
||||
head: parts[1],
|
||||
middle: middle,
|
||||
tail: parts[3],
|
||||
whole: parts[1] + middle.whole + parts[3]
|
||||
};
|
||||
}
|
||||
else {
|
||||
return {
|
||||
head: null,
|
||||
middle: null,
|
||||
tail: null,
|
||||
whole: cmdStr
|
||||
};
|
||||
}
|
||||
}
|
||||
function formatRange(cmd, formatStart, formatEnd, separator) {
|
||||
if (cmd.middle) {
|
||||
var startHead = formatStart(cmd.head);
|
||||
var startMiddle = formatRange(cmd.middle, formatStart, formatEnd, separator);
|
||||
var startTail = formatStart(cmd.tail);
|
||||
var endHead = formatEnd(cmd.head);
|
||||
var endMiddle = formatRange(cmd.middle, formatStart, formatEnd, separator);
|
||||
var endTail = formatEnd(cmd.tail);
|
||||
if (startHead === endHead && startTail === endTail) {
|
||||
return startHead +
|
||||
(startMiddle === endMiddle ? startMiddle : startMiddle + separator + endMiddle) +
|
||||
startTail;
|
||||
}
|
||||
}
|
||||
return formatStart(cmd.whole) + separator + formatEnd(cmd.whole);
|
||||
}
|
||||
|
||||
exports.default = main;
|
||||
exports.toDuration = toDuration;
|
||||
exports.toMoment = toMoment;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
/*!
|
||||
FullCalendar Moment Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("moment"),require("@fullcalendar/core")):"function"==typeof define&&define.amd?define(["exports","moment","@fullcalendar/core"],t):(e=e||self,t(e.FullCalendarMoment={},e.moment,e.FullCalendar))}(this,function(e,t,n){"use strict";function r(e,t){if(!(t instanceof n.Calendar))throw new Error("must supply a Calendar instance");return u(e,t.dateEnv.timeZone,null,t.dateEnv.locale.codes[0])}function a(e){return t.duration(e)}function o(e,t){var n=i(e);if(t.end){var r=u(t.start.array,t.timeZone,t.start.timeZoneOffset,t.localeCodes[0]),a=u(t.end.array,t.timeZone,t.end.timeZoneOffset,t.localeCodes[0]);return d(n,l(r),l(a),t.separator)}return u(t.date.array,t.timeZone,t.date.timeZoneOffset,t.localeCodes[0]).format(n.whole)}function l(e){return function(t){return t?e.format(t):""}}function u(e,n,r,a){var o;return"local"===n?o=t(e):"UTC"===n?o=t.utc(e):t.tz?o=t.tz(e,n):(o=t.utc(e),null!=r&&o.utcOffset(r)),o.locale(a),o}function i(e){var t=e.match(/^(.*?)\{(.*)\}(.*)$/);if(t){var n=i(t[2]);return{head:t[1],middle:n,tail:t[3],whole:t[1]+n.whole+t[3]}}return{head:null,middle:null,tail:null,whole:e}}function d(e,t,n,r){if(e.middle){var a=t(e.head),o=d(e.middle,t,n,r),l=t(e.tail),u=n(e.head),i=d(e.middle,t,n,r),f=n(e.tail);if(a===u&&l===f)return a+(o===i?o:o+r+i)+l}return t(e.whole)+r+n(e.whole)}t=t&&t.hasOwnProperty("default")?t.default:t;var f=n.createPlugin({cmdFormatter:o});e.default=f,e.toDuration=a,e.toMoment=r,Object.defineProperty(e,"__esModule",{value:!0})});
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
/*!
|
||||
FullCalendar RRule Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('rrule'), require('@fullcalendar/core')) :
|
||||
typeof define === 'function' && define.amd ? define(['exports', 'rrule', '@fullcalendar/core'], factory) :
|
||||
(global = global || self, factory(global.FullCalendarRrule = {}, global.rrule, global.FullCalendar));
|
||||
}(this, function (exports, rrule, core) { 'use strict';
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
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
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
|
||||
var __assign = function() {
|
||||
__assign = Object.assign || function __assign(t) {
|
||||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||
s = arguments[i];
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
return __assign.apply(this, arguments);
|
||||
};
|
||||
|
||||
var EVENT_DEF_PROPS = {
|
||||
rrule: null,
|
||||
duration: core.createDuration
|
||||
};
|
||||
var recurring = {
|
||||
parse: function (rawEvent, leftoverProps, dateEnv) {
|
||||
if (rawEvent.rrule != null) {
|
||||
var props = core.refineProps(rawEvent, EVENT_DEF_PROPS, {}, leftoverProps);
|
||||
var parsed = parseRRule(props.rrule, dateEnv);
|
||||
if (parsed) {
|
||||
return {
|
||||
typeData: parsed.rrule,
|
||||
allDayGuess: parsed.allDayGuess,
|
||||
duration: props.duration
|
||||
};
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
expand: function (rrule, framingRange) {
|
||||
// we WANT an inclusive start and in exclusive end, but the js rrule lib will only do either BOTH
|
||||
// inclusive or BOTH exclusive, which is stupid: https://github.com/jakubroztocil/rrule/issues/84
|
||||
// Workaround: make inclusive, which will generate extra occurences, and then trim.
|
||||
return rrule.between(framingRange.start, framingRange.end, true)
|
||||
.filter(function (date) {
|
||||
return date.valueOf() < framingRange.end.valueOf();
|
||||
});
|
||||
}
|
||||
};
|
||||
var main = core.createPlugin({
|
||||
recurringTypes: [recurring]
|
||||
});
|
||||
function parseRRule(input, dateEnv) {
|
||||
var allDayGuess = null;
|
||||
var rrule$1;
|
||||
if (typeof input === 'string') {
|
||||
rrule$1 = rrule.rrulestr(input);
|
||||
}
|
||||
else if (typeof input === 'object' && input) { // non-null object
|
||||
var refined = __assign({}, input); // copy
|
||||
if (typeof refined.dtstart === 'string') {
|
||||
var dtstartMeta = dateEnv.createMarkerMeta(refined.dtstart);
|
||||
if (dtstartMeta) {
|
||||
refined.dtstart = dtstartMeta.marker;
|
||||
allDayGuess = dtstartMeta.isTimeUnspecified;
|
||||
}
|
||||
else {
|
||||
delete refined.dtstart;
|
||||
}
|
||||
}
|
||||
if (typeof refined.until === 'string') {
|
||||
refined.until = dateEnv.createMarker(refined.until);
|
||||
}
|
||||
if (refined.freq != null) {
|
||||
refined.freq = convertConstant(refined.freq);
|
||||
}
|
||||
if (refined.wkst != null) {
|
||||
refined.wkst = convertConstant(refined.wkst);
|
||||
}
|
||||
else {
|
||||
refined.wkst = (dateEnv.weekDow - 1 + 7) % 7; // convert Sunday-first to Monday-first
|
||||
}
|
||||
if (refined.byweekday != null) {
|
||||
refined.byweekday = convertConstants(refined.byweekday); // the plural version
|
||||
}
|
||||
rrule$1 = new rrule.RRule(refined);
|
||||
}
|
||||
if (rrule$1) {
|
||||
return { rrule: rrule$1, allDayGuess: allDayGuess };
|
||||
}
|
||||
return null;
|
||||
}
|
||||
function convertConstants(input) {
|
||||
if (Array.isArray(input)) {
|
||||
return input.map(convertConstant);
|
||||
}
|
||||
return convertConstant(input);
|
||||
}
|
||||
function convertConstant(input) {
|
||||
if (typeof input === 'string') {
|
||||
return rrule.RRule[input.toUpperCase()];
|
||||
}
|
||||
return input;
|
||||
}
|
||||
|
||||
exports.default = main;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
}));
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
/*!
|
||||
FullCalendar RRule Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("rrule"),require("@fullcalendar/core")):"function"==typeof define&&define.amd?define(["exports","rrule","@fullcalendar/core"],r):(e=e||self,r(e.FullCalendarRrule={},e.rrule,e.FullCalendar))}(this,function(e,r,t){"use strict";function n(e,t){var n,i=null;if("string"==typeof e)n=r.rrulestr(e);else if("object"==typeof e&&e){var f=a({},e);if("string"==typeof f.dtstart){var o=t.createMarkerMeta(f.dtstart);o?(f.dtstart=o.marker,i=o.isTimeUnspecified):delete f.dtstart}"string"==typeof f.until&&(f.until=t.createMarker(f.until)),null!=f.freq&&(f.freq=l(f.freq)),null!=f.wkst?f.wkst=l(f.wkst):f.wkst=(t.weekDow-1+7)%7,null!=f.byweekday&&(f.byweekday=u(f.byweekday)),n=new r.RRule(f)}return n?{rrule:n,allDayGuess:i}:null}function u(e){return Array.isArray(e)?e.map(l):l(e)}function l(e){return"string"==typeof e?r.RRule[e.toUpperCase()]:e}/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
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
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
var a=function(){return a=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++){r=arguments[t];for(var u in r)Object.prototype.hasOwnProperty.call(r,u)&&(e[u]=r[u])}return e},a.apply(this,arguments)},i={rrule:null,duration:t.createDuration},f={parse:function(e,r,u){if(null!=e.rrule){var l=t.refineProps(e,i,{},r),a=n(l.rrule,u);if(a)return{typeData:a.rrule,allDayGuess:a.allDayGuess,duration:l.duration}}return null},expand:function(e,r){return e.between(r.start,r.end,!0).filter(function(e){return e.valueOf()<r.end.valueOf()})}},o=t.createPlugin({recurringTypes:[f]});e.default=o,Object.defineProperty(e,"__esModule",{value:!0})});
|
||||
|
|
@ -0,0 +1,266 @@
|
|||
/*!
|
||||
FullCalendar Time Grid Plugin v4.1.0
|
||||
Docs & License: https://fullcalendar.io/
|
||||
(c) 2019 Adam Shaw
|
||||
*/
|
||||
/* TimeGridView all-day area
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-timeGrid-view .fc-day-grid {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
/* so the "more.." popover will be over the time grid */ }
|
||||
|
||||
.fc-timeGrid-view .fc-day-grid .fc-row {
|
||||
min-height: 3em;
|
||||
/* all-day section will never get shorter than this */ }
|
||||
|
||||
.fc-timeGrid-view .fc-day-grid .fc-row .fc-content-skeleton {
|
||||
padding-bottom: 1em;
|
||||
/* give space underneath events for clicking/selecting days */ }
|
||||
|
||||
/* TimeGrid axis running down the side (for both the all-day area and the slot area)
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc .fc-axis {
|
||||
/* .fc to overcome default cell styles */
|
||||
vertical-align: middle;
|
||||
padding: 0 4px;
|
||||
white-space: nowrap; }
|
||||
|
||||
.fc-ltr .fc-axis {
|
||||
text-align: right; }
|
||||
|
||||
.fc-rtl .fc-axis {
|
||||
text-align: left; }
|
||||
|
||||
/* TimeGrid Structure
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-time-grid-container,
|
||||
.fc-time-grid {
|
||||
/* so slats/bg/content/etc positions get scoped within here */
|
||||
position: relative;
|
||||
z-index: 1; }
|
||||
|
||||
.fc-time-grid {
|
||||
min-height: 100%;
|
||||
/* so if height setting is 'auto', .fc-bg stretches to fill height */ }
|
||||
|
||||
.fc-time-grid table {
|
||||
/* don't put outer borders on slats/bg/content/etc */
|
||||
border: 0 hidden transparent; }
|
||||
|
||||
.fc-time-grid > .fc-bg {
|
||||
z-index: 1; }
|
||||
|
||||
.fc-time-grid .fc-slats,
|
||||
.fc-time-grid > hr {
|
||||
/* the <hr> TimeGridView injects when grid is shorter than scroller */
|
||||
position: relative;
|
||||
z-index: 2; }
|
||||
|
||||
.fc-time-grid .fc-content-col {
|
||||
position: relative;
|
||||
/* because now-indicator lives directly inside */ }
|
||||
|
||||
.fc-time-grid .fc-content-skeleton {
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0; }
|
||||
|
||||
/* divs within a cell within the fc-content-skeleton */
|
||||
.fc-time-grid .fc-business-container {
|
||||
position: relative;
|
||||
z-index: 1; }
|
||||
|
||||
.fc-time-grid .fc-bgevent-container {
|
||||
position: relative;
|
||||
z-index: 2; }
|
||||
|
||||
.fc-time-grid .fc-highlight-container {
|
||||
position: relative;
|
||||
z-index: 3; }
|
||||
|
||||
.fc-time-grid .fc-event-container {
|
||||
position: relative;
|
||||
z-index: 4; }
|
||||
|
||||
.fc-time-grid .fc-now-indicator-line {
|
||||
z-index: 5; }
|
||||
|
||||
.fc-time-grid .fc-mirror-container {
|
||||
/* also is fc-event-container */
|
||||
position: relative;
|
||||
z-index: 6; }
|
||||
|
||||
/* TimeGrid Slats (lines that run horizontally)
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-time-grid .fc-slats td {
|
||||
height: 1.5em;
|
||||
border-bottom: 0;
|
||||
/* each cell is responsible for its top border */ }
|
||||
|
||||
.fc-time-grid .fc-slats .fc-minor td {
|
||||
border-top-style: dotted; }
|
||||
|
||||
/* TimeGrid Highlighting Slots
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-time-grid .fc-highlight-container {
|
||||
/* a div within a cell within the fc-highlight-skeleton */
|
||||
position: relative;
|
||||
/* scopes the left/right of the fc-highlight to be in the column */ }
|
||||
|
||||
.fc-time-grid .fc-highlight {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
/* top and bottom will be in by JS */ }
|
||||
|
||||
/* TimeGrid Event Containment
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-ltr .fc-time-grid .fc-event-container {
|
||||
/* space on the sides of events for LTR (default) */
|
||||
margin: 0 2.5% 0 2px; }
|
||||
|
||||
.fc-rtl .fc-time-grid .fc-event-container {
|
||||
/* space on the sides of events for RTL */
|
||||
margin: 0 2px 0 2.5%; }
|
||||
|
||||
.fc-time-grid .fc-event,
|
||||
.fc-time-grid .fc-bgevent {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
/* scope inner z-index's */ }
|
||||
|
||||
.fc-time-grid .fc-bgevent {
|
||||
/* background events always span full width */
|
||||
left: 0;
|
||||
right: 0; }
|
||||
|
||||
/* TimeGrid Event Styling
|
||||
----------------------------------------------------------------------------------------------------
|
||||
We use the full "fc-time-grid-event" class instead of using descendants because the event won't
|
||||
be a descendant of the grid when it is being dragged.
|
||||
*/
|
||||
.fc-time-grid-event {
|
||||
margin-bottom: 1px; }
|
||||
|
||||
.fc-time-grid-event-inset {
|
||||
-webkit-box-shadow: 0px 0px 0px 1px #fff;
|
||||
box-shadow: 0px 0px 0px 1px #fff; }
|
||||
|
||||
.fc-time-grid-event.fc-not-start {
|
||||
/* events that are continuing from another day */
|
||||
/* replace space made by the top border with padding */
|
||||
border-top-width: 0;
|
||||
padding-top: 1px;
|
||||
/* remove top rounded corners */
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0; }
|
||||
|
||||
.fc-time-grid-event.fc-not-end {
|
||||
/* replace space made by the top border with padding */
|
||||
border-bottom-width: 0;
|
||||
padding-bottom: 1px;
|
||||
/* remove bottom rounded corners */
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0; }
|
||||
|
||||
.fc-time-grid-event .fc-content {
|
||||
overflow: hidden;
|
||||
max-height: 100%; }
|
||||
|
||||
.fc-time-grid-event .fc-time,
|
||||
.fc-time-grid-event .fc-title {
|
||||
padding: 0 1px; }
|
||||
|
||||
.fc-time-grid-event .fc-time {
|
||||
font-size: .85em;
|
||||
white-space: nowrap; }
|
||||
|
||||
/* short mode, where time and title are on the same line */
|
||||
.fc-time-grid-event.fc-short .fc-content {
|
||||
/* don't wrap to second line (now that contents will be inline) */
|
||||
white-space: nowrap; }
|
||||
|
||||
.fc-time-grid-event.fc-short .fc-time,
|
||||
.fc-time-grid-event.fc-short .fc-title {
|
||||
/* put the time and title on the same line */
|
||||
display: inline-block;
|
||||
vertical-align: top; }
|
||||
|
||||
.fc-time-grid-event.fc-short .fc-time span {
|
||||
display: none;
|
||||
/* don't display the full time text... */ }
|
||||
|
||||
.fc-time-grid-event.fc-short .fc-time:before {
|
||||
content: attr(data-start);
|
||||
/* ...instead, display only the start time */ }
|
||||
|
||||
.fc-time-grid-event.fc-short .fc-time:after {
|
||||
content: "\000A0-\000A0";
|
||||
/* seperate with a dash, wrapped in nbsp's */ }
|
||||
|
||||
.fc-time-grid-event.fc-short .fc-title {
|
||||
font-size: .85em;
|
||||
/* make the title text the same size as the time */
|
||||
padding: 0;
|
||||
/* undo padding from above */ }
|
||||
|
||||
/* resizer (cursor device) */
|
||||
.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer {
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
line-height: 8px;
|
||||
font-size: 11px;
|
||||
font-family: monospace;
|
||||
text-align: center;
|
||||
cursor: s-resize; }
|
||||
|
||||
.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after {
|
||||
content: "="; }
|
||||
|
||||
/* resizer (touch device) */
|
||||
.fc-time-grid-event.fc-selected .fc-resizer {
|
||||
/* 10x10 dot */
|
||||
border-radius: 5px;
|
||||
border-width: 1px;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-style: solid;
|
||||
border-color: inherit;
|
||||
background: #fff;
|
||||
/* horizontally center */
|
||||
left: 50%;
|
||||
margin-left: -5px;
|
||||
/* center on the bottom edge */
|
||||
bottom: -5px; }
|
||||
|
||||
/* Now Indicator
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
.fc-time-grid .fc-now-indicator-line {
|
||||
border-top-width: 1px;
|
||||
left: 0;
|
||||
right: 0; }
|
||||
|
||||
/* arrow on axis */
|
||||
.fc-time-grid .fc-now-indicator-arrow {
|
||||
margin-top: -5px;
|
||||
/* vertically center on top coordinate */ }
|
||||
|
||||
.fc-ltr .fc-time-grid .fc-now-indicator-arrow {
|
||||
left: 0;
|
||||
/* triangle pointing right... */
|
||||
border-width: 5px 0 5px 6px;
|
||||
border-top-color: transparent;
|
||||
border-bottom-color: transparent; }
|
||||
|
||||
.fc-rtl .fc-time-grid .fc-now-indicator-arrow {
|
||||
right: 0;
|
||||
/* triangle pointing left... */
|
||||
border-width: 5px 6px 5px 0;
|
||||
border-top-color: transparent;
|
||||
border-bottom-color: transparent; }
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue