Compare commits
6 Commits
6020b304a6
...
V1.0
| Author | SHA1 | Date | |
|---|---|---|---|
| c481817e33 | |||
|
|
79b1f37bc7 | ||
| 28e0707076 | |||
|
|
13d0ae62c1 | ||
|
|
bcef80338c | ||
|
|
5db1c28fd8 |
6
.env.example
Normal file
6
.env.example
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
DB_HOST=localhost
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_NAME=DB
|
||||||
|
DB_USER=USER
|
||||||
|
DB_PASS=PASS
|
||||||
|
DB_CHARSET=utf8
|
||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,14 +1,13 @@
|
|||||||
# ----------------------
|
# ----------------------
|
||||||
# Personnalisé / PHP MVC
|
# Personnalisé / PHP MVC
|
||||||
# ----------------------
|
# ----------------------
|
||||||
**/module/
|
# **/module/
|
||||||
**/.env
|
**/.env
|
||||||
**/*.local
|
**/*.local
|
||||||
**/*.config
|
**/*.config
|
||||||
**/config/database.php
|
**/config/database.php
|
||||||
**/documents
|
**/documents
|
||||||
**/Libs
|
**/Libs
|
||||||
config/connexion_sql.php
|
|
||||||
|
|
||||||
# ----------------------
|
# ----------------------
|
||||||
# Node.js
|
# Node.js
|
||||||
@@ -107,6 +106,6 @@ $RECYCLE.BIN/
|
|||||||
# ----------------------
|
# ----------------------
|
||||||
# Output / build directories
|
# Output / build directories
|
||||||
# ----------------------
|
# ----------------------
|
||||||
dist/
|
# dist/
|
||||||
build/
|
build/
|
||||||
out/
|
out/
|
||||||
|
|||||||
1293
module/fullcalendar-3.9.0/fullcalendar.css
Normal file
1293
module/fullcalendar-3.9.0/fullcalendar.css
Normal file
File diff suppressed because it is too large
Load Diff
15010
module/fullcalendar-3.9.0/fullcalendar.js
Normal file
15010
module/fullcalendar-3.9.0/fullcalendar.js
Normal file
File diff suppressed because it is too large
Load Diff
5
module/fullcalendar-3.9.0/fullcalendar.min.css
vendored
Normal file
5
module/fullcalendar-3.9.0/fullcalendar.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
12
module/fullcalendar-3.9.0/fullcalendar.min.js
vendored
Normal file
12
module/fullcalendar-3.9.0/fullcalendar.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
176
module/fullcalendar-3.9.0/fullcalendar.print.css
Normal file
176
module/fullcalendar-3.9.0/fullcalendar.print.css
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
/*!
|
||||||
|
* FullCalendar v3.9.0
|
||||||
|
* Docs & License: https://fullcalendar.io/
|
||||||
|
* (c) 2018 Adam Shaw
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
* FullCalendar v3.9.0 Print Stylesheet
|
||||||
|
* Docs & License: https://fullcalendar.io/
|
||||||
|
* (c) 2018 Adam Shaw
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Include this stylesheet on your page to get a more printer-friendly calendar.
|
||||||
|
* When including this stylesheet, use the media='print' attribute of the <link> tag.
|
||||||
|
* Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css.
|
||||||
|
*/
|
||||||
|
.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-helper-skeleton,
|
||||||
|
.fc-bgevent-container,
|
||||||
|
.fc-business-container,
|
||||||
|
.fc-highlight-container,
|
||||||
|
.fc-helper-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-agenda-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 */ }
|
||||||
9
module/fullcalendar-3.9.0/fullcalendar.print.min.css
vendored
Normal file
9
module/fullcalendar-3.9.0/fullcalendar.print.min.css
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/*!
|
||||||
|
* FullCalendar v3.9.0
|
||||||
|
* Docs & License: https://fullcalendar.io/
|
||||||
|
* (c) 2018 Adam Shaw
|
||||||
|
*//*!
|
||||||
|
* FullCalendar v3.9.0 Print Stylesheet
|
||||||
|
* Docs & License: https://fullcalendar.io/
|
||||||
|
* (c) 2018 Adam Shaw
|
||||||
|
*/.fc-bg,.fc-bgevent-container,.fc-bgevent-skeleton,.fc-business-container,.fc-event .fc-resizer,.fc-helper-container,.fc-helper-skeleton,.fc-highlight-container,.fc-highlight-skeleton{display:none}.fc tbody .fc-row,.fc-time-grid{min-height:0!important}.fc-time-grid .fc-event.fc-not-end:after,.fc-time-grid .fc-event.fc-not-start:before{content:"..."}.fc{max-width:100%!important}.fc-event{background:#fff!important;color:#000!important;page-break-inside:avoid}.fc hr,.fc tbody,.fc td,.fc th,.fc thead,.fc-row{border-color:#ccc!important;background:#fff!important}.fc tbody .fc-row{height:auto!important}.fc tbody .fc-row .fc-content-skeleton{position:static;padding-bottom:0!important}.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td{padding-bottom:1em}.fc tbody .fc-row .fc-content-skeleton table{height:1em}.fc-more,.fc-more-cell{display:none!important}.fc tr.fc-limited{display:table-row!important}.fc td.fc-limited{display:table-cell!important}.fc-agenda-view .fc-axis,.fc-popover{display:none}.fc-slats,.fc-time-grid hr{display:none!important}.fc button,.fc-button-group,.fc-time-grid .fc-event .fc-time span{display:none}.fc-time-grid .fc-content-skeleton{position:static}.fc-time-grid .fc-content-skeleton table{height:4em}.fc-time-grid .fc-event-container{margin:0!important}.fc-time-grid .fc-event{position:static!important;margin:3px 2px!important}.fc-time-grid .fc-event.fc-not-end{border-bottom-width:1px!important}.fc-time-grid .fc-event.fc-not-start{border-top-width:1px!important}.fc-time-grid .fc-event .fc-time{white-space:normal!important}.fc-time-grid .fc-event .fc-time:after{content:attr(data-full)}.fc-day-grid-container,.fc-scroller,.fc-time-grid-container{overflow:visible!important;height:auto!important}.fc-row{border:0!important;margin:0!important}
|
||||||
324
module/fullcalendar-3.9.0/gcal.js
Normal file
324
module/fullcalendar-3.9.0/gcal.js
Normal file
@@ -0,0 +1,324 @@
|
|||||||
|
/*!
|
||||||
|
* FullCalendar v3.9.0
|
||||||
|
* Docs & License: https://fullcalendar.io/
|
||||||
|
* (c) 2018 Adam Shaw
|
||||||
|
*/
|
||||||
|
(function webpackUniversalModuleDefinition(root, factory) {
|
||||||
|
if(typeof exports === 'object' && typeof module === 'object')
|
||||||
|
module.exports = factory(require("fullcalendar"), require("jquery"));
|
||||||
|
else if(typeof define === 'function' && define.amd)
|
||||||
|
define(["fullcalendar", "jquery"], factory);
|
||||||
|
else if(typeof exports === 'object')
|
||||||
|
factory(require("fullcalendar"), require("jquery"));
|
||||||
|
else
|
||||||
|
factory(root["FullCalendar"], root["jQuery"]);
|
||||||
|
})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_3__) {
|
||||||
|
return /******/ (function(modules) { // webpackBootstrap
|
||||||
|
/******/ // The module cache
|
||||||
|
/******/ var installedModules = {};
|
||||||
|
/******/
|
||||||
|
/******/ // The require function
|
||||||
|
/******/ function __webpack_require__(moduleId) {
|
||||||
|
/******/
|
||||||
|
/******/ // Check if module is in cache
|
||||||
|
/******/ if(installedModules[moduleId]) {
|
||||||
|
/******/ return installedModules[moduleId].exports;
|
||||||
|
/******/ }
|
||||||
|
/******/ // Create a new module (and put it into the cache)
|
||||||
|
/******/ var module = installedModules[moduleId] = {
|
||||||
|
/******/ i: moduleId,
|
||||||
|
/******/ l: false,
|
||||||
|
/******/ exports: {}
|
||||||
|
/******/ };
|
||||||
|
/******/
|
||||||
|
/******/ // Execute the module function
|
||||||
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||||||
|
/******/
|
||||||
|
/******/ // Flag the module as loaded
|
||||||
|
/******/ module.l = true;
|
||||||
|
/******/
|
||||||
|
/******/ // Return the exports of the module
|
||||||
|
/******/ return module.exports;
|
||||||
|
/******/ }
|
||||||
|
/******/
|
||||||
|
/******/
|
||||||
|
/******/ // expose the modules object (__webpack_modules__)
|
||||||
|
/******/ __webpack_require__.m = modules;
|
||||||
|
/******/
|
||||||
|
/******/ // expose the module cache
|
||||||
|
/******/ __webpack_require__.c = installedModules;
|
||||||
|
/******/
|
||||||
|
/******/ // define getter function for harmony exports
|
||||||
|
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||||||
|
/******/ if(!__webpack_require__.o(exports, name)) {
|
||||||
|
/******/ Object.defineProperty(exports, name, {
|
||||||
|
/******/ configurable: false,
|
||||||
|
/******/ enumerable: true,
|
||||||
|
/******/ get: getter
|
||||||
|
/******/ });
|
||||||
|
/******/ }
|
||||||
|
/******/ };
|
||||||
|
/******/
|
||||||
|
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||||||
|
/******/ __webpack_require__.n = function(module) {
|
||||||
|
/******/ var getter = module && module.__esModule ?
|
||||||
|
/******/ function getDefault() { return module['default']; } :
|
||||||
|
/******/ function getModuleExports() { return module; };
|
||||||
|
/******/ __webpack_require__.d(getter, 'a', getter);
|
||||||
|
/******/ return getter;
|
||||||
|
/******/ };
|
||||||
|
/******/
|
||||||
|
/******/ // Object.prototype.hasOwnProperty.call
|
||||||
|
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||||||
|
/******/
|
||||||
|
/******/ // __webpack_public_path__
|
||||||
|
/******/ __webpack_require__.p = "";
|
||||||
|
/******/
|
||||||
|
/******/ // Load entry module and return exports
|
||||||
|
/******/ return __webpack_require__(__webpack_require__.s = 266);
|
||||||
|
/******/ })
|
||||||
|
/************************************************************************/
|
||||||
|
/******/ ({
|
||||||
|
|
||||||
|
/***/ 1:
|
||||||
|
/***/ (function(module, exports) {
|
||||||
|
|
||||||
|
module.exports = __WEBPACK_EXTERNAL_MODULE_1__;
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 2:
|
||||||
|
/***/ (function(module, exports) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
derived from:
|
||||||
|
https://github.com/Microsoft/tslib/blob/v1.6.0/tslib.js
|
||||||
|
|
||||||
|
only include the helpers we need, to keep down filesize
|
||||||
|
*/
|
||||||
|
var 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]; };
|
||||||
|
exports.__extends = function (d, b) {
|
||||||
|
extendStatics(d, b);
|
||||||
|
function __() { this.constructor = d; }
|
||||||
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 266:
|
||||||
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var exportHooks = __webpack_require__(1);
|
||||||
|
var GcalEventSource_1 = __webpack_require__(267);
|
||||||
|
exportHooks.EventSourceParser.registerClass(GcalEventSource_1.default);
|
||||||
|
exportHooks.GcalEventSource = GcalEventSource_1.default;
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 267:
|
||||||
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var tslib_1 = __webpack_require__(2);
|
||||||
|
var $ = __webpack_require__(3);
|
||||||
|
var fullcalendar_1 = __webpack_require__(1);
|
||||||
|
var GcalEventSource = /** @class */ (function (_super) {
|
||||||
|
tslib_1.__extends(GcalEventSource, _super);
|
||||||
|
function GcalEventSource() {
|
||||||
|
return _super !== null && _super.apply(this, arguments) || this;
|
||||||
|
}
|
||||||
|
GcalEventSource.parse = function (rawInput, calendar) {
|
||||||
|
var rawProps;
|
||||||
|
if (typeof rawInput === 'object') {
|
||||||
|
rawProps = rawInput;
|
||||||
|
}
|
||||||
|
else if (typeof rawInput === 'string') {
|
||||||
|
rawProps = { url: rawInput }; // url will be parsed with parseGoogleCalendarId
|
||||||
|
}
|
||||||
|
if (rawProps) {
|
||||||
|
return fullcalendar_1.EventSource.parse.call(this, rawProps, calendar);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
GcalEventSource.prototype.fetch = function (start, end, timezone) {
|
||||||
|
var _this = this;
|
||||||
|
var url = this.buildUrl();
|
||||||
|
var requestParams = this.buildRequestParams(start, end, timezone);
|
||||||
|
var ajaxSettings = this.ajaxSettings || {};
|
||||||
|
var onSuccess = ajaxSettings.success;
|
||||||
|
if (!requestParams) {
|
||||||
|
return fullcalendar_1.Promise.reject();
|
||||||
|
}
|
||||||
|
this.calendar.pushLoading();
|
||||||
|
return fullcalendar_1.Promise.construct(function (onResolve, onReject) {
|
||||||
|
$.ajax($.extend({}, // destination
|
||||||
|
fullcalendar_1.JsonFeedEventSource.AJAX_DEFAULTS, ajaxSettings, {
|
||||||
|
url: url,
|
||||||
|
data: requestParams,
|
||||||
|
success: function (responseData, status, xhr) {
|
||||||
|
var rawEventDefs;
|
||||||
|
var successRes;
|
||||||
|
_this.calendar.popLoading();
|
||||||
|
if (responseData.error) {
|
||||||
|
_this.reportError('Google Calendar API: ' + responseData.error.message, responseData.error.errors);
|
||||||
|
onReject();
|
||||||
|
}
|
||||||
|
else if (responseData.items) {
|
||||||
|
rawEventDefs = _this.gcalItemsToRawEventDefs(responseData.items, requestParams.timeZone);
|
||||||
|
successRes = fullcalendar_1.applyAll(onSuccess, _this, [responseData, status, xhr]); // passthru
|
||||||
|
if ($.isArray(successRes)) {
|
||||||
|
rawEventDefs = successRes;
|
||||||
|
}
|
||||||
|
onResolve(_this.parseEventDefs(rawEventDefs));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function (xhr, statusText, errorThrown) {
|
||||||
|
_this.reportError('Google Calendar network failure: ' + statusText, [xhr, errorThrown]);
|
||||||
|
_this.calendar.popLoading();
|
||||||
|
onReject();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
GcalEventSource.prototype.gcalItemsToRawEventDefs = function (items, gcalTimezone) {
|
||||||
|
var _this = this;
|
||||||
|
return items.map(function (item) {
|
||||||
|
return _this.gcalItemToRawEventDef(item, gcalTimezone);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
GcalEventSource.prototype.gcalItemToRawEventDef = function (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
|
||||||
|
};
|
||||||
|
};
|
||||||
|
GcalEventSource.prototype.buildUrl = function () {
|
||||||
|
return GcalEventSource.API_BASE + '/' +
|
||||||
|
encodeURIComponent(this.googleCalendarId) +
|
||||||
|
'/events?callback=?'; // jsonp
|
||||||
|
};
|
||||||
|
GcalEventSource.prototype.buildRequestParams = function (start, end, timezone) {
|
||||||
|
var apiKey = this.googleCalendarApiKey || this.calendar.opt('googleCalendarApiKey');
|
||||||
|
var params;
|
||||||
|
if (!apiKey) {
|
||||||
|
this.reportError('Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// The API expects an ISO8601 datetime with a time and timezone part.
|
||||||
|
// Since the calendar's timezone offset isn't always known, request the date in UTC and pad it by a day on each
|
||||||
|
// side, guaranteeing we will receive all events in the desired range, albeit a superset.
|
||||||
|
// .utc() will set a zone and give it a 00:00:00 time.
|
||||||
|
if (!start.hasZone()) {
|
||||||
|
start = start.clone().utc().add(-1, 'day');
|
||||||
|
}
|
||||||
|
if (!end.hasZone()) {
|
||||||
|
end = end.clone().utc().add(1, 'day');
|
||||||
|
}
|
||||||
|
params = $.extend(this.ajaxSettings.data || {}, {
|
||||||
|
key: apiKey,
|
||||||
|
timeMin: start.format(),
|
||||||
|
timeMax: end.format(),
|
||||||
|
singleEvents: true,
|
||||||
|
maxResults: 9999
|
||||||
|
});
|
||||||
|
if (timezone && timezone !== 'local') {
|
||||||
|
// when sending timezone names to Google, only accepts underscores, not spaces
|
||||||
|
params.timeZone = timezone.replace(' ', '_');
|
||||||
|
}
|
||||||
|
return params;
|
||||||
|
};
|
||||||
|
GcalEventSource.prototype.reportError = function (message, apiErrorObjs) {
|
||||||
|
var calendar = this.calendar;
|
||||||
|
var calendarOnError = calendar.opt('googleCalendarError');
|
||||||
|
var errorObjs = apiErrorObjs || [{ message: message }]; // to be passed into error handlers
|
||||||
|
if (this.googleCalendarError) {
|
||||||
|
this.googleCalendarError.apply(calendar, errorObjs);
|
||||||
|
}
|
||||||
|
if (calendarOnError) {
|
||||||
|
calendarOnError.apply(calendar, errorObjs);
|
||||||
|
}
|
||||||
|
// print error to debug console
|
||||||
|
fullcalendar_1.warn.apply(null, [message].concat(apiErrorObjs || []));
|
||||||
|
};
|
||||||
|
GcalEventSource.prototype.getPrimitive = function () {
|
||||||
|
return this.googleCalendarId;
|
||||||
|
};
|
||||||
|
GcalEventSource.prototype.applyManualStandardProps = function (rawProps) {
|
||||||
|
var superSuccess = fullcalendar_1.EventSource.prototype.applyManualStandardProps.apply(this, arguments);
|
||||||
|
var googleCalendarId = rawProps.googleCalendarId;
|
||||||
|
if (googleCalendarId == null && rawProps.url) {
|
||||||
|
googleCalendarId = parseGoogleCalendarId(rawProps.url);
|
||||||
|
}
|
||||||
|
if (googleCalendarId != null) {
|
||||||
|
this.googleCalendarId = googleCalendarId;
|
||||||
|
return superSuccess;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
GcalEventSource.prototype.applyMiscProps = function (rawProps) {
|
||||||
|
if (!this.ajaxSettings) {
|
||||||
|
this.ajaxSettings = {};
|
||||||
|
}
|
||||||
|
$.extend(this.ajaxSettings, rawProps);
|
||||||
|
};
|
||||||
|
GcalEventSource.API_BASE = 'https://www.googleapis.com/calendar/v3/calendars';
|
||||||
|
return GcalEventSource;
|
||||||
|
}(fullcalendar_1.EventSource));
|
||||||
|
exports.default = GcalEventSource;
|
||||||
|
GcalEventSource.defineStandardProps({
|
||||||
|
// manually process...
|
||||||
|
url: false,
|
||||||
|
googleCalendarId: false,
|
||||||
|
// automatically transfer...
|
||||||
|
googleCalendarApiKey: true,
|
||||||
|
googleCalendarError: true
|
||||||
|
});
|
||||||
|
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]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Injects a string like "arg=value" into the querystring of a URL
|
||||||
|
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;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 3:
|
||||||
|
/***/ (function(module, exports) {
|
||||||
|
|
||||||
|
module.exports = __WEBPACK_EXTERNAL_MODULE_3__;
|
||||||
|
|
||||||
|
/***/ })
|
||||||
|
|
||||||
|
/******/ });
|
||||||
|
});
|
||||||
6
module/fullcalendar-3.9.0/gcal.min.js
vendored
Normal file
6
module/fullcalendar-3.9.0/gcal.min.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
/*!
|
||||||
|
* FullCalendar v3.9.0
|
||||||
|
* Docs & License: https://fullcalendar.io/
|
||||||
|
* (c) 2018 Adam Shaw
|
||||||
|
*/
|
||||||
|
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("fullcalendar"),require("jquery")):"function"==typeof define&&define.amd?define(["fullcalendar","jquery"],t):"object"==typeof exports?t(require("fullcalendar"),require("jquery")):t(e.FullCalendar,e.jQuery)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(o){if(r[o])return r[o].exports;var n=r[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,o){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=266)}({1:function(t,r){t.exports=e},2:function(e,t){var r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};t.__extends=function(e,t){function o(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}},266:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0});var o=r(1),n=r(267);o.EventSourceParser.registerClass(n.default),o.GcalEventSource=n.default},267:function(e,t,r){function o(e){var t;return/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(e)?e:(t=/^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(e))||(t=/^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(e))?decodeURIComponent(t[1]):void 0}function n(e,t){return e.replace(/(\?.*?)?(#|$)/,function(e,r,o){return(r?r+"&":"?")+t+o})}Object.defineProperty(t,"__esModule",{value:!0});var a=r(2),l=r(3),i=r(1),u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a.__extends(t,e),t.parse=function(e,t){var r;return"object"==typeof e?r=e:"string"==typeof e&&(r={url:e}),!!r&&i.EventSource.parse.call(this,r,t)},t.prototype.fetch=function(e,t,r){var o=this,n=this.buildUrl(),a=this.buildRequestParams(e,t,r),u=this.ajaxSettings||{},c=u.success;return a?(this.calendar.pushLoading(),i.Promise.construct(function(e,t){l.ajax(l.extend({},i.JsonFeedEventSource.AJAX_DEFAULTS,u,{url:n,data:a,success:function(r,n,u){var s,p;o.calendar.popLoading(),r.error?(o.reportError("Google Calendar API: "+r.error.message,r.error.errors),t()):r.items&&(s=o.gcalItemsToRawEventDefs(r.items,a.timeZone),p=i.applyAll(c,o,[r,n,u]),l.isArray(p)&&(s=p),e(o.parseEventDefs(s)))},error:function(e,r,n){o.reportError("Google Calendar network failure: "+r,[e,n]),o.calendar.popLoading(),t()}}))})):i.Promise.reject()},t.prototype.gcalItemsToRawEventDefs=function(e,t){var r=this;return e.map(function(e){return r.gcalItemToRawEventDef(e,t)})},t.prototype.gcalItemToRawEventDef=function(e,t){var r=e.htmlLink||null;return r&&t&&(r=n(r,"ctz="+t)),{id:e.id,title:e.summary,start:e.start.dateTime||e.start.date,end:e.end.dateTime||e.end.date,url:r,location:e.location,description:e.description}},t.prototype.buildUrl=function(){return t.API_BASE+"/"+encodeURIComponent(this.googleCalendarId)+"/events?callback=?"},t.prototype.buildRequestParams=function(e,t,r){var o,n=this.googleCalendarApiKey||this.calendar.opt("googleCalendarApiKey");return n?(e.hasZone()||(e=e.clone().utc().add(-1,"day")),t.hasZone()||(t=t.clone().utc().add(1,"day")),o=l.extend(this.ajaxSettings.data||{},{key:n,timeMin:e.format(),timeMax:t.format(),singleEvents:!0,maxResults:9999}),r&&"local"!==r&&(o.timeZone=r.replace(" ","_")),o):(this.reportError("Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"),null)},t.prototype.reportError=function(e,t){var r=this.calendar,o=r.opt("googleCalendarError"),n=t||[{message:e}];this.googleCalendarError&&this.googleCalendarError.apply(r,n),o&&o.apply(r,n),i.warn.apply(null,[e].concat(t||[]))},t.prototype.getPrimitive=function(){return this.googleCalendarId},t.prototype.applyManualStandardProps=function(e){var t=i.EventSource.prototype.applyManualStandardProps.apply(this,arguments),r=e.googleCalendarId;return null==r&&e.url&&(r=o(e.url)),null!=r&&(this.googleCalendarId=r,t)},t.prototype.applyMiscProps=function(e){this.ajaxSettings||(this.ajaxSettings={}),l.extend(this.ajaxSettings,e)},t.API_BASE="https://www.googleapis.com/calendar/v3/calendars",t}(i.EventSource);t.default=u,u.defineStandardProps({url:!1,googleCalendarId:!1,googleCalendarApiKey:!0,googleCalendarError:!0})},3:function(e,r){e.exports=t}})});
|
||||||
13
module/fullcalendar-3.9.0/lib/jquery-ui.min.js
vendored
Normal file
13
module/fullcalendar-3.9.0/lib/jquery-ui.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
module/fullcalendar-3.9.0/lib/jquery.min.js
vendored
Normal file
2
module/fullcalendar-3.9.0/lib/jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
module/fullcalendar-3.9.0/lib/moment.min.js
vendored
Normal file
1
module/fullcalendar-3.9.0/lib/moment.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
6
module/fullcalendar-3.9.0/locale-all.js
Normal file
6
module/fullcalendar-3.9.0/locale-all.js
Normal file
File diff suppressed because one or more lines are too long
1
module/fullcalendar-3.9.0/locale/fr.js
Normal file
1
module/fullcalendar-3.9.0/locale/fr.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=127)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},127:function(e,r,n){Object.defineProperty(r,"__esModule",{value:!0}),n(128);var t=n(1);t.datepickerLocale("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("fr",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},128:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){return e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,r){switch(r){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})}})});
|
||||||
60
module/leaflet-1.3.0/dist/MarkerCluster.Default.css
vendored
Normal file
60
module/leaflet-1.3.0/dist/MarkerCluster.Default.css
vendored
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
.marker-cluster-small {
|
||||||
|
background-color: rgba(181, 226, 140, 0.6);
|
||||||
|
}
|
||||||
|
.marker-cluster-small div {
|
||||||
|
background-color: rgba(110, 204, 57, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.marker-cluster-medium {
|
||||||
|
background-color: rgba(241, 211, 87, 0.6);
|
||||||
|
}
|
||||||
|
.marker-cluster-medium div {
|
||||||
|
background-color: rgba(240, 194, 12, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.marker-cluster-large {
|
||||||
|
background-color: rgba(253, 156, 115, 0.6);
|
||||||
|
}
|
||||||
|
.marker-cluster-large div {
|
||||||
|
background-color: rgba(241, 128, 23, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* IE 6-8 fallback colors */
|
||||||
|
.leaflet-oldie .marker-cluster-small {
|
||||||
|
background-color: rgb(181, 226, 140);
|
||||||
|
}
|
||||||
|
.leaflet-oldie .marker-cluster-small div {
|
||||||
|
background-color: rgb(110, 204, 57);
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-oldie .marker-cluster-medium {
|
||||||
|
background-color: rgb(241, 211, 87);
|
||||||
|
}
|
||||||
|
.leaflet-oldie .marker-cluster-medium div {
|
||||||
|
background-color: rgb(240, 194, 12);
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-oldie .marker-cluster-large {
|
||||||
|
background-color: rgb(253, 156, 115);
|
||||||
|
}
|
||||||
|
.leaflet-oldie .marker-cluster-large div {
|
||||||
|
background-color: rgb(241, 128, 23);
|
||||||
|
}
|
||||||
|
|
||||||
|
.marker-cluster {
|
||||||
|
background-clip: padding-box;
|
||||||
|
border-radius: 20px;
|
||||||
|
}
|
||||||
|
.marker-cluster div {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-top: 5px;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 15px;
|
||||||
|
font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
.marker-cluster span {
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
14
module/leaflet-1.3.0/dist/MarkerCluster.css
vendored
Normal file
14
module/leaflet-1.3.0/dist/MarkerCluster.css
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
.leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {
|
||||||
|
-webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;
|
||||||
|
-moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;
|
||||||
|
-o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;
|
||||||
|
transition: transform 0.3s ease-out, opacity 0.3s ease-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-cluster-spider-leg {
|
||||||
|
/* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */
|
||||||
|
-webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;
|
||||||
|
-moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;
|
||||||
|
-o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;
|
||||||
|
transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;
|
||||||
|
}
|
||||||
636
module/leaflet-1.3.0/dist/leaflet.css
vendored
Normal file
636
module/leaflet-1.3.0/dist/leaflet.css
vendored
Normal file
@@ -0,0 +1,636 @@
|
|||||||
|
/* required styles */
|
||||||
|
|
||||||
|
.leaflet-pane,
|
||||||
|
.leaflet-tile,
|
||||||
|
.leaflet-marker-icon,
|
||||||
|
.leaflet-marker-shadow,
|
||||||
|
.leaflet-tile-container,
|
||||||
|
.leaflet-pane > svg,
|
||||||
|
.leaflet-pane > canvas,
|
||||||
|
.leaflet-zoom-box,
|
||||||
|
.leaflet-image-layer,
|
||||||
|
.leaflet-layer {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.leaflet-container {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.leaflet-tile,
|
||||||
|
.leaflet-marker-icon,
|
||||||
|
.leaflet-marker-shadow {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-drag: none;
|
||||||
|
}
|
||||||
|
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
|
||||||
|
.leaflet-safari .leaflet-tile {
|
||||||
|
image-rendering: -webkit-optimize-contrast;
|
||||||
|
}
|
||||||
|
/* hack that prevents hw layers "stretching" when loading new tiles */
|
||||||
|
.leaflet-safari .leaflet-tile-container {
|
||||||
|
width: 1600px;
|
||||||
|
height: 1600px;
|
||||||
|
-webkit-transform-origin: 0 0;
|
||||||
|
}
|
||||||
|
.leaflet-marker-icon,
|
||||||
|
.leaflet-marker-shadow {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
|
||||||
|
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
|
||||||
|
.leaflet-container .leaflet-overlay-pane svg,
|
||||||
|
.leaflet-container .leaflet-marker-pane img,
|
||||||
|
.leaflet-container .leaflet-shadow-pane img,
|
||||||
|
.leaflet-container .leaflet-tile-pane img,
|
||||||
|
.leaflet-container img.leaflet-image-layer {
|
||||||
|
max-width: none !important;
|
||||||
|
max-height: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-container.leaflet-touch-zoom {
|
||||||
|
-ms-touch-action: pan-x pan-y;
|
||||||
|
touch-action: pan-x pan-y;
|
||||||
|
}
|
||||||
|
.leaflet-container.leaflet-touch-drag {
|
||||||
|
-ms-touch-action: pinch-zoom;
|
||||||
|
/* Fallback for FF which doesn't support pinch-zoom */
|
||||||
|
touch-action: none;
|
||||||
|
touch-action: pinch-zoom;
|
||||||
|
}
|
||||||
|
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
|
||||||
|
-ms-touch-action: none;
|
||||||
|
touch-action: none;
|
||||||
|
}
|
||||||
|
.leaflet-container {
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
}
|
||||||
|
.leaflet-container a {
|
||||||
|
-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
|
||||||
|
}
|
||||||
|
.leaflet-tile {
|
||||||
|
filter: inherit;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
.leaflet-tile-loaded {
|
||||||
|
visibility: inherit;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-box {
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
z-index: 800;
|
||||||
|
}
|
||||||
|
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
|
||||||
|
.leaflet-overlay-pane svg {
|
||||||
|
-moz-user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-pane { z-index: 400; }
|
||||||
|
|
||||||
|
.leaflet-tile-pane { z-index: 200; }
|
||||||
|
.leaflet-overlay-pane { z-index: 400; }
|
||||||
|
.leaflet-shadow-pane { z-index: 500; }
|
||||||
|
.leaflet-marker-pane { z-index: 600; }
|
||||||
|
.leaflet-tooltip-pane { z-index: 650; }
|
||||||
|
.leaflet-popup-pane { z-index: 700; }
|
||||||
|
|
||||||
|
.leaflet-map-pane canvas { z-index: 100; }
|
||||||
|
.leaflet-map-pane svg { z-index: 200; }
|
||||||
|
|
||||||
|
.leaflet-vml-shape {
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
.lvml {
|
||||||
|
behavior: url(#default#VML);
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* control positioning */
|
||||||
|
|
||||||
|
.leaflet-control {
|
||||||
|
position: relative;
|
||||||
|
z-index: 800;
|
||||||
|
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
.leaflet-top,
|
||||||
|
.leaflet-bottom {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1000;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.leaflet-top {
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.leaflet-right {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
.leaflet-bottom {
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
.leaflet-left {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.leaflet-control {
|
||||||
|
float: left;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.leaflet-right .leaflet-control {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.leaflet-top .leaflet-control {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
.leaflet-bottom .leaflet-control {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.leaflet-left .leaflet-control {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
.leaflet-right .leaflet-control {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* zoom and fade animations */
|
||||||
|
|
||||||
|
.leaflet-fade-anim .leaflet-tile {
|
||||||
|
will-change: opacity;
|
||||||
|
}
|
||||||
|
.leaflet-fade-anim .leaflet-popup {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transition: opacity 0.2s linear;
|
||||||
|
-moz-transition: opacity 0.2s linear;
|
||||||
|
-o-transition: opacity 0.2s linear;
|
||||||
|
transition: opacity 0.2s linear;
|
||||||
|
}
|
||||||
|
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-animated {
|
||||||
|
-webkit-transform-origin: 0 0;
|
||||||
|
-ms-transform-origin: 0 0;
|
||||||
|
transform-origin: 0 0;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||||
|
will-change: transform;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||||
|
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||||
|
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||||
|
-o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||||
|
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||||
|
}
|
||||||
|
.leaflet-zoom-anim .leaflet-tile,
|
||||||
|
.leaflet-pan-anim .leaflet-tile {
|
||||||
|
-webkit-transition: none;
|
||||||
|
-moz-transition: none;
|
||||||
|
-o-transition: none;
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-zoom-anim .leaflet-zoom-hide {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* cursors */
|
||||||
|
|
||||||
|
.leaflet-interactive {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.leaflet-grab {
|
||||||
|
cursor: -webkit-grab;
|
||||||
|
cursor: -moz-grab;
|
||||||
|
}
|
||||||
|
.leaflet-crosshair,
|
||||||
|
.leaflet-crosshair .leaflet-interactive {
|
||||||
|
cursor: crosshair;
|
||||||
|
}
|
||||||
|
.leaflet-popup-pane,
|
||||||
|
.leaflet-control {
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
.leaflet-dragging .leaflet-grab,
|
||||||
|
.leaflet-dragging .leaflet-grab .leaflet-interactive,
|
||||||
|
.leaflet-dragging .leaflet-marker-draggable {
|
||||||
|
cursor: move;
|
||||||
|
cursor: -webkit-grabbing;
|
||||||
|
cursor: -moz-grabbing;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* marker & overlays interactivity */
|
||||||
|
.leaflet-marker-icon,
|
||||||
|
.leaflet-marker-shadow,
|
||||||
|
.leaflet-image-layer,
|
||||||
|
.leaflet-pane > svg path,
|
||||||
|
.leaflet-tile-container {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-marker-icon.leaflet-interactive,
|
||||||
|
.leaflet-image-layer.leaflet-interactive,
|
||||||
|
.leaflet-pane > svg path.leaflet-interactive {
|
||||||
|
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* visual tweaks */
|
||||||
|
|
||||||
|
.leaflet-container {
|
||||||
|
background: #ddd;
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
.leaflet-container a {
|
||||||
|
color: #0078A8;
|
||||||
|
}
|
||||||
|
.leaflet-container a.leaflet-active {
|
||||||
|
outline: 2px solid orange;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-box {
|
||||||
|
border: 2px dotted #38f;
|
||||||
|
background: rgba(255,255,255,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* general typography */
|
||||||
|
.leaflet-container {
|
||||||
|
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* general toolbar styles */
|
||||||
|
|
||||||
|
.leaflet-bar {
|
||||||
|
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.leaflet-bar a,
|
||||||
|
.leaflet-bar a:hover {
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
line-height: 26px;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
.leaflet-bar a,
|
||||||
|
.leaflet-control-layers-toggle {
|
||||||
|
background-position: 50% 50%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.leaflet-bar a:hover {
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
}
|
||||||
|
.leaflet-bar a:first-child {
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
}
|
||||||
|
.leaflet-bar a:last-child {
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.leaflet-bar a.leaflet-disabled {
|
||||||
|
cursor: default;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
color: #bbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-touch .leaflet-bar a {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-bar a:first-child {
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-bar a:last-child {
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* zoom control */
|
||||||
|
|
||||||
|
.leaflet-control-zoom-in,
|
||||||
|
.leaflet-control-zoom-out {
|
||||||
|
font: bold 18px 'Lucida Console', Monaco, monospace;
|
||||||
|
text-indent: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* layers control */
|
||||||
|
|
||||||
|
.leaflet-control-layers {
|
||||||
|
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-toggle {
|
||||||
|
background-image: url(images/layers.png);
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
}
|
||||||
|
.leaflet-retina .leaflet-control-layers-toggle {
|
||||||
|
background-image: url(images/layers-2x.png);
|
||||||
|
background-size: 26px 26px;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-control-layers-toggle {
|
||||||
|
width: 44px;
|
||||||
|
height: 44px;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers .leaflet-control-layers-list,
|
||||||
|
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-expanded .leaflet-control-layers-list {
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-expanded {
|
||||||
|
padding: 6px 10px 6px 6px;
|
||||||
|
color: #333;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-scrollbar {
|
||||||
|
overflow-y: scroll;
|
||||||
|
overflow-x: hidden;
|
||||||
|
padding-right: 5px;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-selector {
|
||||||
|
margin-top: 2px;
|
||||||
|
position: relative;
|
||||||
|
top: 1px;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers label {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-separator {
|
||||||
|
height: 0;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
margin: 5px -10px 5px -6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Default icon URLs */
|
||||||
|
.leaflet-default-icon-path {
|
||||||
|
background-image: url(images/marker-icon.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* attribution and scale controls */
|
||||||
|
|
||||||
|
.leaflet-container .leaflet-control-attribution {
|
||||||
|
background: #fff;
|
||||||
|
background: rgba(255, 255, 255, 0.7);
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.leaflet-control-attribution,
|
||||||
|
.leaflet-control-scale-line {
|
||||||
|
padding: 0 5px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.leaflet-control-attribution a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.leaflet-control-attribution a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.leaflet-container .leaflet-control-attribution,
|
||||||
|
.leaflet-container .leaflet-control-scale {
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
.leaflet-left .leaflet-control-scale {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
.leaflet-bottom .leaflet-control-scale {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
.leaflet-control-scale-line {
|
||||||
|
border: 2px solid #777;
|
||||||
|
border-top: none;
|
||||||
|
line-height: 1.1;
|
||||||
|
padding: 2px 5px 1px;
|
||||||
|
font-size: 11px;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
background: #fff;
|
||||||
|
background: rgba(255, 255, 255, 0.5);
|
||||||
|
}
|
||||||
|
.leaflet-control-scale-line:not(:first-child) {
|
||||||
|
border-top: 2px solid #777;
|
||||||
|
border-bottom: none;
|
||||||
|
margin-top: -2px;
|
||||||
|
}
|
||||||
|
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
|
||||||
|
border-bottom: 2px solid #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-touch .leaflet-control-attribution,
|
||||||
|
.leaflet-touch .leaflet-control-layers,
|
||||||
|
.leaflet-touch .leaflet-bar {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-control-layers,
|
||||||
|
.leaflet-touch .leaflet-bar {
|
||||||
|
border: 2px solid rgba(0,0,0,0.2);
|
||||||
|
background-clip: padding-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* popup */
|
||||||
|
|
||||||
|
.leaflet-popup {
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.leaflet-popup-content-wrapper {
|
||||||
|
padding: 1px;
|
||||||
|
text-align: left;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
.leaflet-popup-content {
|
||||||
|
margin: 13px 19px;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
.leaflet-popup-content p {
|
||||||
|
margin: 18px 0;
|
||||||
|
}
|
||||||
|
.leaflet-popup-tip-container {
|
||||||
|
width: 40px;
|
||||||
|
height: 20px;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -20px;
|
||||||
|
overflow: hidden;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.leaflet-popup-tip {
|
||||||
|
width: 17px;
|
||||||
|
height: 17px;
|
||||||
|
padding: 1px;
|
||||||
|
|
||||||
|
margin: -10px auto 0;
|
||||||
|
|
||||||
|
-webkit-transform: rotate(45deg);
|
||||||
|
-moz-transform: rotate(45deg);
|
||||||
|
-ms-transform: rotate(45deg);
|
||||||
|
-o-transform: rotate(45deg);
|
||||||
|
transform: rotate(45deg);
|
||||||
|
}
|
||||||
|
.leaflet-popup-content-wrapper,
|
||||||
|
.leaflet-popup-tip {
|
||||||
|
background: white;
|
||||||
|
color: #333;
|
||||||
|
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
|
||||||
|
}
|
||||||
|
.leaflet-container a.leaflet-popup-close-button {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
padding: 4px 4px 0 0;
|
||||||
|
border: none;
|
||||||
|
text-align: center;
|
||||||
|
width: 18px;
|
||||||
|
height: 14px;
|
||||||
|
font: 16px/14px Tahoma, Verdana, sans-serif;
|
||||||
|
color: #c3c3c3;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.leaflet-container a.leaflet-popup-close-button:hover {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
.leaflet-popup-scrolled {
|
||||||
|
overflow: auto;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-oldie .leaflet-popup-content-wrapper {
|
||||||
|
zoom: 1;
|
||||||
|
}
|
||||||
|
.leaflet-oldie .leaflet-popup-tip {
|
||||||
|
width: 24px;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
|
||||||
|
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
|
||||||
|
}
|
||||||
|
.leaflet-oldie .leaflet-popup-tip-container {
|
||||||
|
margin-top: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-oldie .leaflet-control-zoom,
|
||||||
|
.leaflet-oldie .leaflet-control-layers,
|
||||||
|
.leaflet-oldie .leaflet-popup-content-wrapper,
|
||||||
|
.leaflet-oldie .leaflet-popup-tip {
|
||||||
|
border: 1px solid #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* div icon */
|
||||||
|
|
||||||
|
.leaflet-div-icon {
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Tooltip */
|
||||||
|
/* Base styles for the element that has a tooltip */
|
||||||
|
.leaflet-tooltip {
|
||||||
|
position: absolute;
|
||||||
|
padding: 6px;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #fff;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #222;
|
||||||
|
white-space: nowrap;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
pointer-events: none;
|
||||||
|
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
||||||
|
}
|
||||||
|
.leaflet-tooltip.leaflet-clickable {
|
||||||
|
cursor: pointer;
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-top:before,
|
||||||
|
.leaflet-tooltip-bottom:before,
|
||||||
|
.leaflet-tooltip-left:before,
|
||||||
|
.leaflet-tooltip-right:before {
|
||||||
|
position: absolute;
|
||||||
|
pointer-events: none;
|
||||||
|
border: 6px solid transparent;
|
||||||
|
background: transparent;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Directions */
|
||||||
|
|
||||||
|
.leaflet-tooltip-bottom {
|
||||||
|
margin-top: 6px;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-top {
|
||||||
|
margin-top: -6px;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-bottom:before,
|
||||||
|
.leaflet-tooltip-top:before {
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -6px;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-top:before {
|
||||||
|
bottom: 0;
|
||||||
|
margin-bottom: -12px;
|
||||||
|
border-top-color: #fff;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-bottom:before {
|
||||||
|
top: 0;
|
||||||
|
margin-top: -12px;
|
||||||
|
margin-left: -6px;
|
||||||
|
border-bottom-color: #fff;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-left {
|
||||||
|
margin-left: -6px;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-right {
|
||||||
|
margin-left: 6px;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-left:before,
|
||||||
|
.leaflet-tooltip-right:before {
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -6px;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-left:before {
|
||||||
|
right: 0;
|
||||||
|
margin-right: -12px;
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-right:before {
|
||||||
|
left: 0;
|
||||||
|
margin-left: -12px;
|
||||||
|
border-right-color: #fff;
|
||||||
|
}
|
||||||
5
module/leaflet-1.3.0/dist/leaflet.js
vendored
Normal file
5
module/leaflet-1.3.0/dist/leaflet.js
vendored
Normal file
File diff suppressed because one or more lines are too long
3
module/leaflet-1.3.0/dist/leaflet.markercluster.js
vendored
Normal file
3
module/leaflet-1.3.0/dist/leaflet.markercluster.js
vendored
Normal file
File diff suppressed because one or more lines are too long
153
sql/CARIA.sql
153
sql/CARIA.sql
@@ -1,153 +0,0 @@
|
|||||||
use CARIA;
|
|
||||||
DROP TABLE IF EXISTS tentatives_connexion,Reservations,Clients,Vehicules;
|
|
||||||
|
|
||||||
CREATE TABLE tentatives_connexion (
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
pseudo VARCHAR(25) NOT NULL,
|
|
||||||
timestamp INT NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
|
||||||
--
|
|
||||||
-- Structure de la table Clients
|
|
||||||
--
|
|
||||||
CREATE TABLE Clients (
|
|
||||||
id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
|
|
||||||
privilege int(11) DEFAULT 2,
|
|
||||||
dateenregistre timestamp NOT NULL DEFAULT current_timestamp(),
|
|
||||||
pseudo varchar(25),
|
|
||||||
prenom varchar(25) DEFAULT NULL,
|
|
||||||
nom varchar(25) DEFAULT NULL,
|
|
||||||
adresse varchar(70) DEFAULT NULL,
|
|
||||||
phone varchar(15) DEFAULT NULL,
|
|
||||||
email varchar(30) DEFAULT NULL,
|
|
||||||
mdp varchar(60) NOT NULL,
|
|
||||||
avatar varchar(250) DEFAULT '/images/avatars/img_user.jpg'
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Structure de la table Vehicules
|
|
||||||
--
|
|
||||||
CREATE TABLE Vehicules (
|
|
||||||
id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
|
|
||||||
plaque varchar(9) NOT NULL,
|
|
||||||
marque varchar(50) DEFAULT NULL,
|
|
||||||
modele varchar(50) DEFAULT NULL,
|
|
||||||
annee int(4) DEFAULT NULL,
|
|
||||||
image varchar(250) NOT NULL DEFAULT '/images/vehicules/img_vehicule.png',
|
|
||||||
disponible tinyint(1) NOT NULL DEFAULT 0,
|
|
||||||
latitude decimal(9,6) NOT NULL DEFAULT 48.000000,
|
|
||||||
longitude decimal(9,6) NOT NULL DEFAULT 2.000000,
|
|
||||||
ip varchar(40) NOT NULL DEFAULT '127.0.0.1'
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Structure de la table Reservations
|
|
||||||
--
|
|
||||||
CREATE TABLE Reservations (
|
|
||||||
id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
|
|
||||||
id_user int(11) DEFAULT NULL,
|
|
||||||
id_vehicule int(11) DEFAULT NULL,
|
|
||||||
title varchar(255) DEFAULT NULL,
|
|
||||||
start timestamp NULL DEFAULT NULL,
|
|
||||||
end timestamp NULL DEFAULT NULL,
|
|
||||||
CONSTRAINT uc_vehicule_reservation UNIQUE (id_vehicule, start, end),
|
|
||||||
CONSTRAINT uc_client_reservation UNIQUE (id_user, start, end),
|
|
||||||
CONSTRAINT Reservations_idfk_1 FOREIGN KEY (id_vehicule) REFERENCES Vehicules (id),
|
|
||||||
CONSTRAINT Reservations_idfk_2 FOREIGN KEY (id_user) REFERENCES Clients (id)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
|
||||||
|
|
||||||
-- Index pour accélérer les recherches
|
|
||||||
CREATE INDEX idx_id_user ON Reservations (id_user);
|
|
||||||
CREATE INDEX idx_id_vehicule ON Reservations (id_vehicule) USING BTREE;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
use CARIA;
|
|
||||||
--
|
|
||||||
-- Déchargement des données de la table Clients
|
|
||||||
--
|
|
||||||
INSERT INTO Clients (privilege, dateenregistre, pseudo, prenom, nom, adresse, mdp, email, avatar, phone) VALUES
|
|
||||||
(1, '2016-09-11 22:00:00', 'sa', 'sa', 'pc', 'sa', '$2y$10$SGOcYko1PzYekMHfLBvlPOFUL3V7r0zKSxrrfaNUMXv.Mm3mQizvC', 'sa@gmail.com', '/images/avatars/sa/img_user.jpg', "0658293476"),
|
|
||||||
(2, NOW(), 'utilisateur1', 'John', 'Doe', '123 Rue de Paris', '$2y$10$OkaujySOK.TWqiNOX4BSreuc7OFYuWji9EvruDlo71RRoXNR0HCbC', 'john.doe@example.com', '/images/avatars/utilisateur1/img_user.jpg', '0123456789'),
|
|
||||||
(2, NOW(), 'utilisateur2', 'Alice', 'Smith', '456 Avenue des Champs-Élysées', '$2y$10$rhZHTmq9QZA5uRyUr22sauEvHXKAZo.mjrLAsZ.SpImF.aqG5GSj6', 'alice.smith@example.com', '/images/avatars/utilisateur2/img_user.jpg', '9876543210'),
|
|
||||||
(2, NOW(), 'utilisateur3', 'Michael', 'Johnson', '789 Boulevard Saint-Michel', '$2y$10$/b9EglJ5RlO8vZK36PjjAuosbVkuB6T6xnr2uvq.sMtIg3hNjN0nG', 'michael.johnson@example.com', '/images/avatars/utilisateur3/img_user.jpg', '1234567890'),
|
|
||||||
(2, NOW(), 'utilisateur4', 'Emma', 'Brown', '1011 Rue de Rivoli', 'motdepasse4', 'emma.brown@example.com', '/images/avatars/utilisateur4/img_user.jpg', '0987654321'),
|
|
||||||
(2, NOW(), 'utilisateur5', 'David', 'Wilson', '1213 Rue du Faubourg Saint-Honoré', '$2y$10$9E1c4mmQqpgry7m/TuDU/eCsIb5HAWzPpK1BkP6Slg.4r.huK1gMS', 'david.wilson@example.com', '/images/avatars/utilisateur5/img_user.jpg', '1122334455'),
|
|
||||||
(2, NOW(), 'utilisateur6', 'Sophia', 'Martinez', '1415 Avenue Montaigne', '$2y$10$ghZ9/hsN4EdhaJ0JyUbbVO5KaYpRMx.ax9yz4ZCAzAQ5NXL9vzuIW', 'sophia.martinez@example.com', '/images/avatars/utilisateur6/img_user.jpg', '5544332211'),
|
|
||||||
(2, NOW(), 'utilisateur7', 'Matthew', 'Anderson', '1617 Avenue de la Grande Armée', '$2y$10$kpaoSFeugXSq8R461rQJ/uH6zM/k841Oi5tz8zjmUboiM7swsI9vC', 'matthew.anderson@example.com', '/images/avatars/utilisateur7/img_user.jpg', '6677889900'),
|
|
||||||
(2, NOW(), 'utilisateur8', 'Olivia', 'Taylor', '1819 Rue de la Paix', '$2y$10$5qpp5BCM1BcYMt2MdTld9.6MeCUo96yl0T1TqLtxlrojE1GD8H0z.', 'olivia.taylor@example.com', '/images/avatars/utilisateur8/img_user.jpg', '7788990011'),
|
|
||||||
(2, NOW(), 'utilisateur9', 'Daniel', 'Thomas', '2021 Boulevard Haussmann', '$2y$10$lxeSumVQvBQ2i4u9EH2a1OnmfvKnWtpSzbAQ6H/f8e/nSOvJJZ8NW', 'daniel.thomas@example.com', '/images/avatars/utilisateur9/img_user.jpg', '8899001122'),
|
|
||||||
(2, NOW(), 'utilisateur10', 'Emily', 'Jackson', '2223 Avenue Victor Hugo', '$2y$10$i2.MtLwCRowHpdxbPB//EeGHEOD0jlKH.7T5/5UIFiFy/0WZedspW', 'emily.jackson@example.com', '/images/avatars/utilisateur10/img_user.jpg', '9900112233'),
|
|
||||||
(2, NOW(), 'utilisateur11', 'Sophie', 'Martin', '2325 Rue Saint-Antoine', '$2y$10$b.rhvW.vknrfCgRNFIIp3Oha/Hq1.jSpn90DUnPxPW3/kJdqtbGCK', 'sophie.martin@example.com', '/images/avatars/utilisateur11/img_user.jpg', '1122334455'),
|
|
||||||
(2, NOW(), 'utilisateur12', 'William', 'Thompson', '2427 Avenue des Ternes', '$2y$10$HUqNXYpyo2uP1E.tgR/z8uU5O4n365JBiUH5p7qB2le5gO0.infHe', 'william.thompson@example.com', '/images/avatars/utilisateur12/img_user.jpg', '2244668899'),
|
|
||||||
(2, NOW(), 'utilisateur13', 'Charlotte', 'Clark', '2529 Rue de la Pompe', '$2y$10$SuYzFoQdjROkK6xOaBm1L.4higlSCJX5Z0QVItBjkx5/qUMsX9tTS', 'charlotte.clark@example.com', '/images/avatars/utilisateur13/img_user.jpg', '3366990022'),
|
|
||||||
(2, NOW(), 'utilisateur14', 'James', 'White', '2631 Boulevard Malesherbes', '$2y$10$21dxDMovRzObUfIO1Ykh9eiOnW0tjbZE7JbgnZMLWlA3kJ/BZEVuy', 'james.white@example.com', '/images/avatars/utilisateur14/img_user.jpg', '4488112233'),
|
|
||||||
(2, NOW(), 'utilisateur15', 'Ava', 'Hall', '2733 Avenue de la République', '$2y$10$E4NL1lLTNfptHjeozX2x9OYji2H5uldcvrEd7QaezvmAWnWc7XGFK', 'ava.hall@example.com', '/images/avatars/utilisateur15/img_user.jpg', '5511223344'),
|
|
||||||
(2, NOW(), 'utilisateur16', 'Noah', 'Lewis', '2835 Rue de Passy', '$2y$10$xjrpINALKuGkFLKTNlMcVOk9NoYBfoc6yA4Pvt66mMGHykPPLlKzW', 'noah.lewis@example.com', '/images/avatars/utilisateur16/img_user.jpg', '6633445566'),
|
|
||||||
(2, NOW(), 'utilisateur17', 'Mia', 'Adams', '2937 Boulevard Saint-Germain', '$2y$10$rQuvGd48.B6EmoYAl7d2PeEMvSMQsDduQPvcWzxbtLSGVL/066hpW', 'mia.adams@example.com', '/images/avatars/utilisateur17/img_user.jpg', '7755668899'),
|
|
||||||
(2, NOW(), 'utilisateur18', 'Benjamin', 'Young', '3039 Rue du Bac', '$2y$10$wMFNjwJJPkAXYF31Ot3Ko.L8acwtiCOx2waqQKzqQ8z/PJkLuDz1i', 'benjamin.young@example.com', '/images/avatars/utilisateur18/img_user.jpg', '8877665544'),
|
|
||||||
(2, NOW(), 'utilisateur19', 'Ella', 'Harris', '3141 Avenue Marceau', '$2y$10$q4G7cKwWSFvxcTf95L72s./aqtuN0h.3gcc3w4pfFX.EeUgDIZAea', 'ella.harris@example.com', '/images/avatars/utilisateur19/img_user.jpg', '9900887766'),
|
|
||||||
(2, NOW(), 'utilisateur20', 'Lucas', 'King', '3243 Rue de Sèvres', '$2y$10$U3B8F76RFmcsQdTP.QxApeLQHBkH1HSKzISz5ndXS9jNpF8uc4dQG', 'lucas.king@example.com', '/images/avatars/utilisateur20/img_user.jpg', '0011223344');
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Déchargement des données de la table Vehicules
|
|
||||||
--
|
|
||||||
INSERT INTO Vehicules (plaque, image, marque, modele, annee, disponible, latitude, longitude, ip) VALUES
|
|
||||||
("GH209RH", '/images/vehicules/GH209RH/img_vehicule.png', 'Tesla', 'Model S', 2023, 1, 48.358844, 3.294351, '192.168.74.194'),
|
|
||||||
("PH940OP", '/images/vehicules/PH940OP/img_vehicule.png', 'Nissan', 'Leaf', 2022, 1, 48.8566, 6.3522, '127.0.0.1'),
|
|
||||||
("XD738UJ", '/images/vehicules/XD738UJ/img_vehicule.png', 'BMW', 'i3 S', 2024, 0, 48.6566, 2.3522, '127.0.0.1'),
|
|
||||||
("WSD754YH", '/images/vehicules/WSD754YH/img_vehicule.png', 'Toyota', 'Prius', 2023, 1, 48.0566, 3.3522, '127.0.0.1'),
|
|
||||||
("IO334PO", '/images/vehicules/IO334PO/img_vehicule.png', 'Chevrolet', 'Bolt', 2023, 0, 48.7566, 7.3522, '127.0.0.1'),
|
|
||||||
('AA123AA', '/images/vehicules/AA123AA/img_vehicule.png', 'Renault', 'Clio', 2018, 1, 48.558844, 2.294351, '127.0.0.1'),
|
|
||||||
('BB456BB', '/images/vehicules/BB456BB/img_vehicule.png', 'Peugeot', '208', 2016, 1, 48.2566, 1.3522, '127.0.0.1'),
|
|
||||||
('CC789CC', '/images/vehicules/CC789CC/img_vehicule.png', 'Volkswagen', 'Golf', 2019, 1, 48.8566, 9.3522, '127.0.0.1'),
|
|
||||||
('DD012DD', '/images/vehicules/DD012DD/img_vehicule.png', 'Ford', 'Fiesta', 2015, 1, 49.8566, 6.3522, '127.0.0.1'),
|
|
||||||
('EE345EE', '/images/vehicules/EE345EE/img_vehicule.png', 'Toyota', 'Yaris', 2017, 1, 45.8566, 4.3522, '127.0.0.1'),
|
|
||||||
('FF678FF', '/images/vehicules/FF678FF/img_vehicule.png', 'Audi', 'A3', 2014, 1, 42.8566, 2.3522, '127.0.0.1'),
|
|
||||||
('GG901GG', '/images/vehicules/GG901GG/img_vehicule.png', 'BMW', 'Series 1', 2020, 1, 46.8566, 3.3522, '127.0.0.1'),
|
|
||||||
('HH234HH', '/images/vehicules/HH234HH/img_vehicule.png', 'Mercedes-Benz', 'A-Class', 2019, 1, 48.8566, 2.3522, '127.0.0.1'),
|
|
||||||
('II567II', '/images/vehicules/II567II/img_vehicule.png', 'Hyundai', 'i30', 2016, 1, 50.8566, 7.3522, '127.0.0.1'),
|
|
||||||
('JJ890JJ', '/images/vehicules/JJ890JJ/img_vehicule.png', 'Kia', 'Rio', 2017, 1, 49.8566, 4.3522, '127.0.0.1'),
|
|
||||||
('KK123KK', '/images/vehicules/KK123KK/img_vehicule.png', 'Nissan', 'Micra', 2018, 1, 44.8566, 2.3522, '127.0.0.1'),
|
|
||||||
('LL456LL', '/images/vehicules/LL456LL/img_vehicule.png', 'Fiat', '500', 2015, 1, 43.8566, 2.6522, '127.0.0.1'),
|
|
||||||
('MM789MM', '/images/vehicules/MM789MM/img_vehicule.png', 'Skoda', 'Fabia', 2019, 1, 47.8566, 2.8522, '127.0.0.1'),
|
|
||||||
('NN012NN', '/images/vehicules/NN012NN/img_vehicule.png', 'Volvo', 'V40', 2016, 1, 45.8566, 2.4522, '127.0.0.1'),
|
|
||||||
('OO345OO', '/images/vehicules/OO345OO/img_vehicule.png', 'Seat', 'Ibiza', 2017, 1, 48.8566, 2.3522, '127.0.0.1'),
|
|
||||||
('PP678PP', '/images/vehicules/PP678PP/img_vehicule.png', 'Mini', 'Cooper', 2020, 1, 43.8566, 2.7522, '127.0.0.1'),
|
|
||||||
('QQ901QQ', '/images/vehicules/QQ901QQ/img_vehicule.png', 'Citroen', 'C3', 2018, 1, 44.8566, 2.2522, '127.0.0.1'),
|
|
||||||
('RR234RR', '/images/vehicules/RR234RR/img_vehicule.png', 'Dacia', 'Sandero', 2015, 1, 45.8566, 4.3522, '127.0.0.1'),
|
|
||||||
('SS567SS', '/images/vehicules/SS567SS/img_vehicule.png', 'Land Rover', 'Evoque', 2021, 1, 46.8566, 8.3522, '127.0.0.1'),
|
|
||||||
('TT890TT', '/images/vehicules/TT890TT/img_vehicule.png', 'Jeep', 'Renegade', 2019, 1, 47.8566, 2.9522, '127.0.0.1');
|
|
||||||
--
|
|
||||||
-- Déchargement des données de la table Reservations
|
|
||||||
--
|
|
||||||
INSERT INTO Reservations (id_user, id_vehicule, title, start, end) VALUES
|
|
||||||
(1, 1, 'Reservation 1', '2024-06-01 08:00:00', '2024-06-01 10:00:00'),
|
|
||||||
(2, 2, 'Reservation 2', '2024-06-02 09:00:00', '2024-06-02 11:00:00'),
|
|
||||||
(3, 3, 'Reservation 3', '2024-06-03 10:00:00', '2024-06-03 12:00:00'),
|
|
||||||
(4, 4, 'Reservation 4', '2024-06-04 11:00:00', '2024-06-04 13:00:00'),
|
|
||||||
(5, 5, 'Reservation 5', '2024-06-05 12:00:00', '2024-06-05 14:00:00'),
|
|
||||||
(6, 6, 'Reservation 6', '2024-06-06 13:00:00', '2024-06-06 15:00:00'),
|
|
||||||
(7, 7, 'Reservation 7', '2024-06-07 14:00:00', '2024-06-07 16:00:00'),
|
|
||||||
(8, 8, 'Reservation 8', '2024-06-08 15:00:00', '2024-06-08 17:00:00'),
|
|
||||||
(9, 9, 'Reservation 9', '2024-06-09 16:00:00', '2024-06-09 18:00:00'),
|
|
||||||
(10, 10, 'Reservation 10', '2024-06-10 17:00:00', '2024-06-10 19:00:00'),
|
|
||||||
(1, 2, 'Reservation 11', '2024-07-01 08:00:00', '2024-07-01 10:00:00'),
|
|
||||||
(2, 3, 'Reservation 12', '2024-07-02 09:00:00', '2024-07-02 11:00:00'),
|
|
||||||
(3, 4, 'Reservation 13', '2024-07-03 10:00:00', '2024-07-03 12:00:00'),
|
|
||||||
(4, 5, 'Reservation 14', '2024-07-04 11:00:00', '2024-07-04 13:00:00'),
|
|
||||||
(5, 6, 'Reservation 15', '2024-07-05 12:00:00', '2024-07-05 14:00:00'),
|
|
||||||
(6, 7, 'Reservation 16', '2024-07-06 13:00:00', '2024-07-06 15:00:00'),
|
|
||||||
(7, 8, 'Reservation 17', '2024-07-07 14:00:00', '2024-07-07 16:00:00'),
|
|
||||||
(8, 9, 'Reservation 18', '2024-07-08 15:00:00', '2024-07-08 17:00:00'),
|
|
||||||
(9, 10, 'Reservation 19', '2024-07-09 16:00:00', '2024-07-09 18:00:00'),
|
|
||||||
(10, 1, 'Reservation 20', '2024-07-10 17:00:00', '2024-07-10 19:00:00'),
|
|
||||||
(1, 3, 'Reservation 21', '2024-08-01 08:00:00', '2024-08-01 10:00:00'),
|
|
||||||
(2, 4, 'Reservation 22', '2024-08-02 09:00:00', '2024-08-02 11:00:00'),
|
|
||||||
(3, 5, 'Reservation 23', '2024-08-03 10:00:00', '2024-08-03 12:00:00'),
|
|
||||||
(4, 6, 'Reservation 24', '2024-08-04 11:00:00', '2024-08-04 13:00:00'),
|
|
||||||
(5, 7, 'Reservation 25', '2024-08-05 12:00:00', '2024-08-05 14:00:00'),
|
|
||||||
(6, 8, 'Reservation 26', '2024-08-06 13:00:00', '2024-08-06 15:00:00'),
|
|
||||||
(7, 9, 'Reservation 27', '2024-08-07 14:00:00', '2024-08-07 16:00:00'),
|
|
||||||
(8, 10, 'Reservation 28', '2024-08-08 15:00:00', '2024-08-08 17:00:00'),
|
|
||||||
(9, 1, 'Reservation 29', '2024-08-09 16:00:00', '2024-08-09 18:00:00'),
|
|
||||||
(10, 2, 'Reservation 30', '2024-08-10 17:00:00', '2024-08-10 19:00:00');
|
|
||||||
@@ -8,9 +8,9 @@
|
|||||||
<script type='text/javascript' src="./module/fullcalendar-3.9.0/locale/fr.js"></script>
|
<script type='text/javascript' src="./module/fullcalendar-3.9.0/locale/fr.js"></script>
|
||||||
<script type='text/javascript' src="./js/script_calendar.js"></script>
|
<script type='text/javascript' src="./js/script_calendar.js"></script>
|
||||||
<!--Bootsrap-->
|
<!--Bootsrap-->
|
||||||
<script type='text/javascript' src="./module/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
<script type='text/javascript' src="./module/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script>
|
||||||
<script type='text/javascript' src="./module/bootstrap@5.3.3/dist/js/bootstrap.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.min.js"></script>
|
||||||
<!--MAP-->
|
<!--MAP-->
|
||||||
<script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet.js" integrity="sha512-/Nsx9X4HebavoBvEBuyp3I7od5tA0UzAxs+j83KgC8PU0kgB4XiK4Lfe4y4cgBtaRJQEIFCW+oC506aPT2L1zw==" crossorigin=""></script> <script type='text/javascript' src='./module/leaflet-1.3.0/dist/leaflet.markercluster.js'></script>
|
<script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet.js" integrity="sha512-/Nsx9X4HebavoBvEBuyp3I7od5tA0UzAxs+j83KgC8PU0kgB4XiK4Lfe4y4cgBtaRJQEIFCW+oC506aPT2L1zw==" crossorigin=""></script> <script type='text/javascript' src='./module/leaflet-1.3.0/dist/leaflet.markercluster.js'></script>
|
||||||
<script type='text/javascript' src="./js/script_map.js"></script>
|
<script type='text/javascript' src="./js/script_map.js"></script>
|
||||||
|
|||||||
@@ -6,9 +6,9 @@
|
|||||||
<title>CARIA Project</title>
|
<title>CARIA Project</title>
|
||||||
<link rel="shortcut icon" href="./config/images/favicon.webp" />
|
<link rel="shortcut icon" href="./config/images/favicon.webp" />
|
||||||
<link rel="stylesheet" type="text/css" media="screen" href="./css/style.css" />
|
<link rel="stylesheet" type="text/css" media="screen" href="./css/style.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="./module/bootstrap@5.3.3/dist/css/bootstrap.min.css" />
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css">
|
||||||
<!--MAP-->
|
<!--MAP-->
|
||||||
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.1/dist/leaflet.css" integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ==" crossorigin="" />
|
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.1/dist/leaflet.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./module/leaflet-1.3.0/dist/MarkerCluster.css" />
|
<link rel="stylesheet" type="text/css" href="./module/leaflet-1.3.0/dist/MarkerCluster.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="./module/leaflet-1.3.0/dist/MarkerCluster.Default.css" />
|
<link rel="stylesheet" type="text/css" href="./module/leaflet-1.3.0/dist/MarkerCluster.Default.css" />
|
||||||
<!--CALENDAR-->
|
<!--CALENDAR-->
|
||||||
|
|||||||
Reference in New Issue
Block a user