diff --git a/multiple_datepicker_widget/README.rst b/multiple_datepicker_widget/README.rst new file mode 100644 index 000000000..bc968a255 --- /dev/null +++ b/multiple_datepicker_widget/README.rst @@ -0,0 +1,57 @@ +MULTIPLE DATE PICKER WIDGET +=========================== +Multiple date picker widget for Odoo Odoo 16. + +Credits +------- +* Cybrosys Techno Solutions +* Credits for https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.1/js/bootstrap-datepicker.min.js + +Usage +===== +You need to declare a char field. + + multi_dates = fields.Char(string="Multiple Dates") + +In the view declaration, + ... + +
+ ... + + ... + +
+ ... + +Installation +============ + - https://www.odoo.com/documentation/15.0/setup/install.html + - Install our custom addon + +License +------- +General Public License, Version 3 (LGPL v3). +https://www.odoo.com/documentation/user/14.0/legal/licenses/licenses.html + +Company +------- +* Cybrosys Techno Solutions + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com + +Further information +=================== +HTML Description: ``__ \ No newline at end of file diff --git a/multiple_datepicker_widget/__manifest__.py b/multiple_datepicker_widget/__manifest__.py new file mode 100644 index 000000000..81122c3bd --- /dev/null +++ b/multiple_datepicker_widget/__manifest__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +{ + 'name': 'Multiple DatePicker Widget', + 'version': '16.0.1.0.0', + 'summary': 'Widget for picking multiple dates', + 'description': 'Widget for picking multiple dates', + 'category': 'Tools', + 'author': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['base'], + 'assets': { + 'web.assets_backend': { + '/multiple_datepicker_widget/static/src/css/datepicker_widget.css', + '/multiple_datepicker_widget/static/src/js/lib/bootstrap-datepicker.min.js', + '/multiple_datepicker_widget/static/src/js/multiple_date_picker_widget.js', + '/multiple_datepicker_widget/static/src/xml/datepicker_widget.xml', + }, + }, + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'application': False, + 'auto_install': False, +} diff --git a/multiple_datepicker_widget/doc/RELEASE_NOTES.md b/multiple_datepicker_widget/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..31ca540f1 --- /dev/null +++ b/multiple_datepicker_widget/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 30.11.2021 +#### Version 16.0.1.0.0 +##### ADD +- Initial commit for Multiple Date Picker Widget diff --git a/multiple_datepicker_widget/static/description/assets/icons/check.png b/multiple_datepicker_widget/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/check.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/chevron.png b/multiple_datepicker_widget/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/chevron.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/cogs.png b/multiple_datepicker_widget/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/cogs.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/consultation.png b/multiple_datepicker_widget/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/consultation.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/ecom-black.png b/multiple_datepicker_widget/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/ecom-black.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/education-black.png b/multiple_datepicker_widget/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/education-black.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/hotel-black.png b/multiple_datepicker_widget/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/hotel-black.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/license.png b/multiple_datepicker_widget/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/license.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/lifebuoy.png b/multiple_datepicker_widget/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/lifebuoy.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/manufacturing-black.png b/multiple_datepicker_widget/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/manufacturing-black.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/pos-black.png b/multiple_datepicker_widget/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/pos-black.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/puzzle.png b/multiple_datepicker_widget/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/puzzle.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/restaurant-black.png b/multiple_datepicker_widget/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/restaurant-black.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/service-black.png b/multiple_datepicker_widget/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/service-black.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/trading-black.png b/multiple_datepicker_widget/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/trading-black.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/training.png b/multiple_datepicker_widget/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/training.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/update.png b/multiple_datepicker_widget/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/update.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/user.png b/multiple_datepicker_widget/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/user.png differ diff --git a/multiple_datepicker_widget/static/description/assets/icons/wrench.png b/multiple_datepicker_widget/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/icons/wrench.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/categories.png b/multiple_datepicker_widget/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/categories.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/check-box.png b/multiple_datepicker_widget/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/check-box.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/compass.png b/multiple_datepicker_widget/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/compass.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/corporate.png b/multiple_datepicker_widget/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/corporate.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/customer-support.png b/multiple_datepicker_widget/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/customer-support.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/cybrosys-logo.png b/multiple_datepicker_widget/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/cybrosys-logo.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/features.png b/multiple_datepicker_widget/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/features.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/logo.png b/multiple_datepicker_widget/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/logo.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/pictures.png b/multiple_datepicker_widget/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/pictures.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/pie-chart.png b/multiple_datepicker_widget/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/pie-chart.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/right-arrow.png b/multiple_datepicker_widget/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/right-arrow.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/star.png b/multiple_datepicker_widget/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/star.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/support.png b/multiple_datepicker_widget/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/support.png differ diff --git a/multiple_datepicker_widget/static/description/assets/misc/whatsapp.png b/multiple_datepicker_widget/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/misc/whatsapp.png differ diff --git a/multiple_datepicker_widget/static/description/assets/modules/1.png b/multiple_datepicker_widget/static/description/assets/modules/1.png new file mode 100644 index 000000000..5238bdeab Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/modules/1.png differ diff --git a/multiple_datepicker_widget/static/description/assets/modules/2.png b/multiple_datepicker_widget/static/description/assets/modules/2.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/modules/2.png differ diff --git a/multiple_datepicker_widget/static/description/assets/modules/3.png b/multiple_datepicker_widget/static/description/assets/modules/3.png new file mode 100644 index 000000000..3c3ff1afb Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/modules/3.png differ diff --git a/multiple_datepicker_widget/static/description/assets/modules/4.png b/multiple_datepicker_widget/static/description/assets/modules/4.png new file mode 100644 index 000000000..3fae4631e Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/modules/4.png differ diff --git a/multiple_datepicker_widget/static/description/assets/modules/5.gif b/multiple_datepicker_widget/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/modules/5.gif differ diff --git a/multiple_datepicker_widget/static/description/assets/modules/6.png b/multiple_datepicker_widget/static/description/assets/modules/6.png new file mode 100644 index 000000000..7f2815273 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/modules/6.png differ diff --git a/multiple_datepicker_widget/static/description/assets/screenshots/hero.gif b/multiple_datepicker_widget/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..f067079f8 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/screenshots/hero.gif differ diff --git a/multiple_datepicker_widget/static/description/assets/screenshots/multiple_datepicker_widget-1.png b/multiple_datepicker_widget/static/description/assets/screenshots/multiple_datepicker_widget-1.png new file mode 100644 index 000000000..a02e8324b Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/screenshots/multiple_datepicker_widget-1.png differ diff --git a/multiple_datepicker_widget/static/description/assets/screenshots/multiple_datepicker_widget-2.png b/multiple_datepicker_widget/static/description/assets/screenshots/multiple_datepicker_widget-2.png new file mode 100644 index 000000000..817ad4a90 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/screenshots/multiple_datepicker_widget-2.png differ diff --git a/multiple_datepicker_widget/static/description/assets/screenshots/multiple_datepicker_widget-3.png b/multiple_datepicker_widget/static/description/assets/screenshots/multiple_datepicker_widget-3.png new file mode 100644 index 000000000..895444542 Binary files /dev/null and b/multiple_datepicker_widget/static/description/assets/screenshots/multiple_datepicker_widget-3.png differ diff --git a/multiple_datepicker_widget/static/description/banner.png b/multiple_datepicker_widget/static/description/banner.png new file mode 100644 index 000000000..cb87b10cf Binary files /dev/null and b/multiple_datepicker_widget/static/description/banner.png differ diff --git a/multiple_datepicker_widget/static/description/icon.png b/multiple_datepicker_widget/static/description/icon.png new file mode 100644 index 000000000..d1d09dc29 Binary files /dev/null and b/multiple_datepicker_widget/static/description/icon.png differ diff --git a/multiple_datepicker_widget/static/description/index.html b/multiple_datepicker_widget/static/description/index.html new file mode 100644 index 000000000..74b01948e --- /dev/null +++ b/multiple_datepicker_widget/static/description/index.html @@ -0,0 +1,562 @@ + +
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+ +
+
+
+
+ +
+
+
+

+ Multiple Date Picker Widget

+

+ Picking Multiple Dates into a Field +

+ +
+
+ + + + +
+
+

+ Overview +

+
+ +
+

+ This module creates a new widget for picking multiple dates in a field. + Users can use widget="multiple_datepicker" for applying this widget. + This field store dates as strings and it is separated by commas. +

+
+
+ + +
+
+

+ Features +

+
+ +
+
+ +
+
+

+ Widget for picking multiple dates.

+
+
+
+
+
+ +
+
+

+ Using widget="multiple_datepicker" for applying widget on a char field.

+
+
+ +
+ +
+
+

+ Screenshots +

+
+
+

+ Add widget="multiple_datepicker" code into a field.

+ +
+ +
+

+ Multiple date picker view

+ +
+ +
+

+ After saving, the field will be stored dates as follows.

+ +
+
+ + + +
+
+

Suggested Products

+
+ + +
+
+ + + +
+
+
+

Our Services

+
+
+ +
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+
+ + + +
+
+
+

Our Industries

+
+
+ +
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+ +
+
+ + + + + +
+
+
+

Need Help?

+
+
+
+ + +
+ +
+ +
+ +
+ WhatsApp +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ + +
\ No newline at end of file diff --git a/multiple_datepicker_widget/static/src/css/datepicker_widget.css b/multiple_datepicker_widget/static/src/css/datepicker_widget.css new file mode 100644 index 000000000..acca2e93d --- /dev/null +++ b/multiple_datepicker_widget/static/src/css/datepicker_widget.css @@ -0,0 +1,67 @@ +.datepicker-dropdown { + top: 0; + left: 0; + padding: 4px +} + +.datepicker table tr td, +.datepicker table tr th { + text-align: center; + width: 30px; + height: 30px; + border: none +} + +.datepicker table tr td.day:hover, +.datepicker table tr td.focused { + background: #eee; + cursor: pointer; + border-radius: 18px; +} + +.datepicker table tr td.active.active, +.datepicker table tr td.active.highlighted.active, +.datepicker table tr td.active.highlighted:active, +.datepicker table tr td.active:active { + color: #fff; + background-color: #7C7BAD; + border-radius:18px; + border-color: #7C7BAD; + background-radius:11px; +} + +.datepicker table tr td span { + display: block; + width: 23%; + height: 54px; + line-height: 54px; + float: left; + margin: 1%; + cursor: pointer; +} + +.datepicker table tr td span.active, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active:hover { + color: #fff; + background-color: #7C7BAD; + border-color: #2e6da4; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .25) +} + +.datepicker .datepicker-switch { + width: 145px; + background:#7C7BAD; + color:white; +} + +.datepicker .datepicker-switch, +.datepicker .next, +.datepicker .prev, +.datepicker tfoot tr th { + cursor: pointer; + background:#7C7BAD; + color:white; + +} \ No newline at end of file diff --git a/multiple_datepicker_widget/static/src/js/lib/bootstrap-datepicker.min.js b/multiple_datepicker_widget/static/src/js/lib/bootstrap-datepicker.min.js new file mode 100644 index 000000000..58206f586 --- /dev/null +++ b/multiple_datepicker_widget/static/src/js/lib/bootstrap-datepicker.min.js @@ -0,0 +1,809 @@ +/*! + * Datepicker for Bootstrap v1.7.1 (https://github.com/uxsolutions/bootstrap-datepicker) + * + * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) + */ + + !function(a) { + "function"==typeof define&&define.amd?define(["jquery"], a): a("object"==typeof exports?require("jquery"):jQuery) +} +(function(a, b) { + function c() { + return new Date(Date.UTC.apply(Date, arguments)) + } + function d() { + var a=new Date; return c(a.getFullYear(), a.getMonth(), a.getDate()) + } + function e(a, b) { + return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate() + } + function f(c, d) { + return function() { + return d !==b&&a.fn.datepicker.deprecated(d), this[c].apply(this, arguments) + } + } + function g(a) { + return a&& !isNaN(a.getTime()) + } + function h(b, c) { + function d(a, b) { + return b.toLowerCase() + } + + var e, f=a(b).data(), g= {} + + , h=new RegExp("^"+c.toLowerCase()+"([A-Z])"); c=new RegExp("^"+c.toLowerCase()); for(var i in f)c.test(i)&&(e=i.replace(h, d), g[e]=f[i]); return g + } + function i(b) { + var c= {} + + ; if(q[b]||(b=b.split("-")[0], q[b])) { + var d=q[b]; return a.each(p, function(a, b) { + b in d&&(c[b]=d[b]) + } + + ), c + } + } + var j=function() { + var b= { + get:function(a) { + return this.slice(a)[0] + } + + , contains:function(a) { + for(var b=a&&a.valueOf(), c=0, d=this.length; c]/g)||[]).length<=0)return !0; var d=a(c); return d.length>0 + } + + catch(a) { + return !1 + } + } + + , _process_options:function(b) { + this._o=a.extend( {} + + , this._o, b); var e=this.o=a.extend( {} + + , this._o), f=e.language; q[f]||(f=f.split("-")[0], q[f]||(f=o.language)), e.language=f, e.startView=this._resolveViewName(e.startView), e.minViewMode=this._resolveViewName(e.minViewMode), e.maxViewMode=this._resolveViewName(e.maxViewMode), e.startView=Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, e.startView)), e.multidate !== !0&&(e.multidate=Number(e.multidate)|| !1, e.multidate !== !1&&(e.multidate=Math.max(0, e.multidate))), e.multidateSeparator=String(e.multidateSeparator), e.weekStart%=7, e.weekEnd=(e.weekStart+6)%7; var g=r.parseFormat(e.format); e.startDate !==-(1/0)&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate, g, e.language, e.assumeNearbyYear):e.startDate=-(1/0)), e.endDate !==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate, g, e.language, e.assumeNearbyYear):e.endDate=1/0), e.daysOfWeekDisabled=this._resolveDaysOfWeek(e.daysOfWeekDisabled||[]), e.daysOfWeekHighlighted=this._resolveDaysOfWeek(e.daysOfWeekHighlighted||[]), e.datesDisabled=e.datesDisabled||[], a.isArray(e.datesDisabled)||(e.datesDisabled=e.datesDisabled.split(",")), e.datesDisabled=a.map(e.datesDisabled, function(a) { + return r.parseDate(a, g, e.language, e.assumeNearbyYear) + } + + ); var h=String(e.orientation).toLowerCase().split(/\s+/g), i=e.orientation.toLowerCase(); if(h=a.grep(h, function(a) { + return/^auto|left|right|top|bottom$/.test(a) + } + + ), e.orientation= { + x:"auto", y:"auto" + } + + , i&&"auto" !==i)if(1===h.length)switch(h[0]) { + case"top":case"bottom":e.orientation.y=h[0]; break; case"left":case"right":e.orientation.x=h[0] + } + + else i=a.grep(h, function(a) { + return/^left|right$/.test(a) + } + + ), e.orientation.x=i[0]||"auto", i=a.grep(h, function(a) { + return/^top|bottom$/.test(a) + } + + ), e.orientation.y=i[0]||"auto"; else; if(e.defaultViewDate instanceof Date||"string"==typeof e.defaultViewDate)e.defaultViewDate=r.parseDate(e.defaultViewDate, g, e.language, e.assumeNearbyYear); else if(e.defaultViewDate) { + var j=e.defaultViewDate.year||(new Date).getFullYear(), k=e.defaultViewDate.month||0, l=e.defaultViewDate.day||1; e.defaultViewDate=c(j, k, l) + } + + else e.defaultViewDate=d() + } + + , _events:[], _secondaryEvents:[], _applyEvents:function(a) { + for(var c, d, e, f=0; ff?(this.picker.addClass("datepicker-orient-right"), n+=m-b):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left"); var p, q=this.o.orientation.y; if("auto"===q&&(p=-g+o-c, q=p<0?"bottom":"top"), this.picker.addClass("datepicker-orient-"+q), "top"===q?o-=c+parseInt(this.picker.css("padding-top")):o+=l, this.o.rtl) { + var r=f-(n+m); this.picker.css( { + top:o, right:r, zIndex:j + } + + ) + } + + else this.picker.css( { + top:o, left:n, zIndex:j + } + + ); return this + } + + , _allow_update: !0, update:function() { + if( !this._allow_update)return this; var b=this.dates.copy(), c=[], d= !1; return arguments.length?(a.each(arguments, a.proxy(function(a, b) { + b instanceof Date&&(b=this._local_to_utc(b)), c.push(b) + } + + , this)), d= !0):(c=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(), c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c], delete this.element.data().date), c=a.map(c, a.proxy(function(a) { + return r.parseDate(a, this.o.format, this.o.language, this.o.assumeNearbyYear) + } + + , this)), c=a.grep(c, a.proxy(function(a) { + return !this.dateWithinRange(a)|| !a + } + + , this), !0), this.dates.replace(c), this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate), d?(this.setValue(), this.element.change()):this.dates.length&&String(b) !==String(this.dates)&&d&&(this._trigger("changeDate"), this.element.change()), !this.dates.length&&b.length&&(this._trigger("clearDate"), this.element.change()), this.fill(), this + } + + , fillDow:function() { + if(this.o.showWeekDays) { + var b=this.o.weekStart, c=""; for(this.o.calendarWeeks&&(c+=' '); b"; c+="", this.picker.find(".datepicker-days thead").append(c) + } + } + + , fillMonths:function() { + for(var a, b=this._utc_to_local(this.viewDate), c="", d=0; d<12; d++)a=b&&b.getMonth()===d?" focused":"", c+=''+q[this.o.language].monthsShort[d]+""; this.picker.find(".datepicker-months td").html(c) + } + + , setRange:function(b) { + b&&b.length?this.range=a.map(b, function(a) { + return a.valueOf() + } + + ):delete this.range, this.fill() + } + + , getClassNames:function(b) { + var c=[], f=this.viewDate.getUTCFullYear(), g=this.viewDate.getUTCMonth(), h=d(); return b.getUTCFullYear()f||b.getUTCFullYear()===f&&b.getUTCMonth()>g)&&c.push("new"), this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"), this.o.todayHighlight&&e(b, h)&&c.push("today"), this.dates.contains(b) !==-1&&c.push("active"), this.dateWithinRange(b)||c.push("disabled"), this.dateIsDisabled(b)&&c.push("disabled", "disabled-date"), a.inArray(b.getUTCDay(), this.o.daysOfWeekHighlighted) !==-1&&c.push("highlighted"), this.range&&(b>this.range[0]&&bh)&&j.push("disabled"), t===r&&j.push("focused"), i !==a.noop&&(l=i(new Date(t, 0, 1)), l===b?l= {} + + :"boolean"==typeof l?l= { + enabled:l + } + + :"string"==typeof l&&(l= { + classes:l + } + + ), l.enabled=== !1&&j.push("disabled"), l.classes&&(j=j.concat(l.classes.split(/\s+/))), l.tooltip&&(k=l.tooltip)), m+='"+t+""; o.find(".datepicker-switch").text(p+"-"+q), o.find("td").html(m) + } + + , fill:function() { + var d, e, f=new Date(this.viewDate), g=f.getUTCFullYear(), h=f.getUTCMonth(), i=this.o.startDate !==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0), j=this.o.startDate !==-(1/0)?this.o.startDate.getUTCMonth():-(1/0), k=this.o.endDate !==1/0?this.o.endDate.getUTCFullYear():1/0, l=this.o.endDate !==1/0?this.o.endDate.getUTCMonth():1/0, m=q[this.o.language].today||q.en.today||"", n=q[this.o.language].clear||q.en.clear||"", o=q[this.o.language].titleFormat||q.en.titleFormat; if( !isNaN(g)&& !isNaN(h)) { + this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(f, o, this.o.language)), this.picker.find("tfoot .today").text(m).css("display", this.o.todayBtn=== !0||"linked"===this.o.todayBtn?"table-cell":"none"), this.picker.find("tfoot .clear").text(n).css("display", this.o.clearBtn=== !0?"table-cell":"none"), this.picker.find("thead .datepicker-title").text(this.o.title).css("display", "string"==typeof this.o.title&&"" !==this.o.title?"table-cell":"none"), this.updateNavArrows(), this.fillMonths(); var p=c(g, h, 0), s=p.getUTCDate(); p.setUTCDate(s-(p.getUTCDay()-this.o.weekStart+7)%7); var t=new Date(p); p.getUTCFullYear()<100&&t.setUTCFullYear(p.getUTCFullYear()), t.setUTCDate(t.getUTCDate()+42), t=t.valueOf(); for(var u, v, w=[]; p.valueOf()"), this.o.calendarWeeks)) { + var x=new Date(+p+(this.o.weekStart-u-7)%7*864e5), y=new Date(Number(x)+(11-x.getUTCDay())%7*864e5), z=new Date(Number(z=c(y.getUTCFullYear(), 0, 1))+(11-z.getUTCDay())%7*864e5), A=(y-z)/864e5/7+1; w.push(''+A+"") + } + + v=this.getClassNames(p), v.push("day"); var B=p.getUTCDate(); this.o.beforeShowDay !==a.noop&&(e=this.o.beforeShowDay(this._utc_to_local(p)), e===b?e= {} + + :"boolean"==typeof e?e= { + enabled:e + } + + :"string"==typeof e&&(e= { + classes:e + } + + ), e.enabled=== !1&&v.push("disabled"), e.classes&&(v=v.concat(e.classes.split(/\s+/))), e.tooltip&&(d=e.tooltip), e.content&&(B=e.content)), v=a.isFunction(a.uniqueSort)?a.uniqueSort(v):a.unique(v), w.push(''+B+""), d=null, u===this.o.weekEnd&&w.push(""), p.setUTCDate(p.getUTCDate()+1) + } + + this.picker.find(".datepicker-days tbody").html(w.join("")); var C=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months", D=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?C:g).end().find("tbody span").removeClass("active"); if(a.each(this.dates, function(a, b) { + b.getUTCFullYear()===g&&D.eq(b.getUTCMonth()).addClass("active") + } + + ), (gk)&&D.addClass("disabled"), g===i&&D.slice(0, j).addClass("disabled"), g===k&&D.slice(l+1).addClass("disabled"), this.o.beforeShowMonth !==a.noop) { + var E=this; a.each(D, function(c, d) { + var e=new Date(g, c, 1), f=E.o.beforeShowMonth(e); f===b?f= {} + + :"boolean"==typeof f?f= { + enabled:f + } + + :"string"==typeof f&&(f= { + classes:f + } + + ), f.enabled !== !1||a(d).hasClass("disabled")||a(d).addClass("disabled"), f.classes&&a(d).addClass(f.classes), f.tooltip&&a(d).prop("title", f.tooltip) + } + + ) + } + + this._fill_yearsView(".datepicker-years", "year", 10, g, i, k, this.o.beforeShowYear), this._fill_yearsView(".datepicker-decades", "decade", 100, g, i, k, this.o.beforeShowDecade), this._fill_yearsView(".datepicker-centuries", "century", 1e3, g, i, k, this.o.beforeShowCentury) + } + } + + , updateNavArrows:function() { + if(this._allow_update) { + var a, b, c=new Date(this.viewDate), d=c.getUTCFullYear(), e=c.getUTCMonth(), f=this.o.startDate !==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0), g=this.o.startDate !==-(1/0)?this.o.startDate.getUTCMonth():-(1/0), h=this.o.endDate !==1/0?this.o.endDate.getUTCFullYear():1/0, i=this.o.endDate !==1/0?this.o.endDate.getUTCMonth():1/0, j=1; switch(this.viewMode) { + case 0:a=d<=f&&e<=g, b=d>=h&&e>=i; break; case 4:j*=10; case 3:j*=10; case 2:j*=10; case 1:a=Math.floor(d/j)*j<=f, b=Math.floor(d/j)*j+j>=h + } + + this.picker.find(".prev").toggleClass("disabled", a), this.picker.find(".next").toggleClass("disabled", b) + } + } + + , click:function(b) { + b.preventDefault(), b.stopPropagation(); var e, f, g, h; e=a(b.target), e.hasClass("datepicker-switch")&&this.viewMode !==this.o.maxViewMode&&this.setViewMode(this.viewMode+1), e.hasClass("today")&& !e.hasClass("day")&&(this.setViewMode(0), this._setDate(d(), "linked"===this.o.todayBtn?null:"view")), e.hasClass("clear")&&this.clearDates(), e.hasClass("disabled")||(e.hasClass("month")||e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1), f=1, 1===this.viewMode?(h=e.parent().find("span").index(e), g=this.viewDate.getUTCFullYear(), this.viewDate.setUTCMonth(h)):(h=0, g=Number(e.text()), this.viewDate.setUTCFullYear(g)), this._trigger(r.viewModes[this.viewMode-1].e, this.viewDate), this.viewMode===this.o.minViewMode?this._setDate(c(g, h, f)):(this.setViewMode(this.viewMode-1), this.fill())), this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(), delete this._focused_from + } + + , dayCellClick:function(b) { + var c=a(b.currentTarget), d=c.data("date"), e=new Date(d); this.o.updateViewDate&&(e.getUTCFullYear() !==this.viewDate.getUTCFullYear()&&this._trigger("changeYear", this.viewDate), e.getUTCMonth() !==this.viewDate.getUTCMonth()&&this._trigger("changeMonth", this.viewDate)), this._setDate(e) + } + + , navArrowsClick:function(b) { + var c=a(b.currentTarget), d=c.hasClass("prev")?-1:1; 0 !==this.viewMode&&(d*=12*r.viewModes[this.viewMode].navStep), this.viewDate=this.moveMonth(this.viewDate, d), this._trigger(r.viewModes[this.viewMode].e, this.viewDate), this.fill() + } + + , _toggle_multidate:function(a) { + var b=this.dates.contains(a); if(a||this.dates.clear(), b !==-1?(this.o.multidate=== !0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):this.o.multidate=== !1?(this.dates.clear(), this.dates.push(a)):this.dates.push(a), "number"==typeof this.o.multidate)for(; this.dates.length>this.o.multidate; )this.dates.remove(0) + } + + , _setDate:function(a, b) { + b&&"date" !==b||this._toggle_multidate(a&&new Date(a)), ( !b&&this.o.updateViewDate||"view"===b)&&(this.viewDate=a&&new Date(a)), this.fill(), this.setValue(), b&&"view"===b||this._trigger("changeDate"), this.inputField.trigger("change"), !this.o.autoclose||b&&"date" !==b||this.hide() + } + + , moveDay:function(a, b) { + var c=new Date(a); return c.setUTCDate(a.getUTCDate()+b), c + } + + , moveWeek:function(a, b) { + return this.moveDay(a, 7*b) + } + + , moveMonth:function(a, b) { + if( !g(a))return this.o.defaultViewDate; if( !b)return a; var c, d, e=new Date(a.valueOf()), f=e.getUTCDate(), h=e.getUTCMonth(), i=Math.abs(b); if(b=b>0?1:-1, 1===i)d=b===-1?function() { + return e.getUTCMonth()===h + } + + :function() { + return e.getUTCMonth() !==c + } + + , c=h+b, e.setUTCMonth(c), c=(c+12)%12; else { + for(var j=0; j0 + } + + , dateWithinRange:function(a) { + return a>=this.o.startDate&&a<=this.o.endDate + } + + , keydown:function(a) { + if( !this.picker.is(":visible"))return void(40 !==a.keyCode&&27 !==a.keyCode||(this.show(), a.stopPropagation())); var b, c, d= !1, e=this.focusDate||this.viewDate; switch(a.keyCode) { + case 27:this.focusDate?(this.focusDate=null, this.viewDate=this.dates.get(-1)||this.viewDate, this.fill()):this.hide(), a.preventDefault(), a.stopPropagation(); break; case 37:case 38:case 39:case 40:if( !this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break; b=37===a.keyCode||38===a.keyCode?-1:1, 0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e, b, "moveYear"), c&&this._trigger("changeYear", this.viewDate)):a.shiftKey?(c=this.moveAvailableDate(e, b, "moveMonth"), c&&this._trigger("changeMonth", this.viewDate)):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e, b, "moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e, b, "moveWeek")):1===this.viewMode?(38 !==a.keyCode&&40 !==a.keyCode||(b*=4), c=this.moveAvailableDate(e, b, "moveMonth")):2===this.viewMode&&(38 !==a.keyCode&&40 !==a.keyCode||(b*=4), c=this.moveAvailableDate(e, b, "moveYear")), c&&(this.focusDate=this.viewDate=c, this.setValue(), this.fill(), a.preventDefault()); break; case 13:if( !this.o.forceParse)break; e=this.focusDate||this.dates.get(-1)||this.viewDate, this.o.keyboardNavigation&&(this._toggle_multidate(e), d= !0), this.focusDate=null, this.viewDate=this.dates.get(-1)||this.viewDate, this.setValue(), this.fill(), this.picker.is(":visible")&&(a.preventDefault(), a.stopPropagation(), this.o.autoclose&&this.hide()); break; case 9:this.focusDate=null, this.viewDate=this.dates.get(-1)||this.viewDate, this.fill(), this.hide() + } + + d&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"), this.inputField.trigger("change")) + } + + , setViewMode:function(a) { + this.viewMode=a, this.picker.children("div").hide().filter(".datepicker-"+r.viewModes[this.viewMode].clsName).show(), this.updateNavArrows(), this._trigger("changeViewMode", new Date(this.viewDate)) + } + } + + ; var l=function(b, c) { + a.data(b, "datepicker", this), this.element=a(b), this.inputs=a.map(c.inputs, function(a) { + return a.jquery?a[0]:a + } + + ), delete c.inputs, this.keepEmptyValues=c.keepEmptyValues, delete c.keepEmptyValues, n.call(a(this.inputs), c).on("changeDate", a.proxy(this.dateUpdated, this)), this.pickers=a.map(this.inputs, function(b) { + return a.data(b, "datepicker") + } + + ), this.updateDates() + } + + ; l.prototype= { + updateDates:function() { + this.dates=a.map(this.pickers, function(a) { + return a.getUTCDate() + } + + ), this.updateRanges() + } + + , updateRanges:function() { + var b=a.map(this.dates, function(a) { + return a.valueOf() + } + + ); a.each(this.pickers, function(a, c) { + c.setRange(b) + } + + ) + } + + , dateUpdated:function(c) { + if( !this.updating) { + this.updating= !0; var d=a.data(c.target, "datepicker"); if(d !==b) { + var e=d.getUTCDate(), f=this.keepEmptyValues, g=a.inArray(c.target, this.inputs), h=g-1, i=g+1, j=this.inputs.length; if(g !==-1) { + if(a.each(this.pickers, function(a, b) { + b.getUTCDate()||b !==d&&f||b.setUTCDate(e) + } + + ), e=0&&ethis.dates[i])for(; ithis.dates[i]; )this.pickers[i++].setUTCDate(e); this.updateDates(), delete this.updating + } + } + } + } + + , destroy:function() { + a.map(this.pickers, function(a) { + a.destroy() + } + + ), a(this.inputs).off("changeDate", this.dateUpdated), delete this.element.data().datepicker + } + + , remove:f("destroy", "Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead") + } + + ; var m=a.fn.datepicker, n=function(c) { + var d=Array.apply(null, arguments); d.shift(); var e; if(this.each(function() { + var b=a(this), f=b.data("datepicker"), g="object"==typeof c&&c; if( !f) { + var j=h(this, "date"), m=a.extend( {} + + , o, j, g), n=i(m.language), p=a.extend( {} + + , o, n, j, g); b.hasClass("input-daterange")||p.inputs?(a.extend(p, { + inputs:p.inputs||b.find("input").toArray() + } + + ), f=new l(this, p)):f=new k(this, p), b.data("datepicker", f) + } + + "string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f, d)) + } + + ), e===b||e instanceof k||e instanceof l)return this; if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)"); return e + } + + ; a.fn.datepicker=n; var o=a.fn.datepicker.defaults= { + assumeNearbyYear: !1, autoclose: !1, beforeShowDay:a.noop, beforeShowMonth:a.noop, beforeShowYear:a.noop, beforeShowDecade:a.noop, beforeShowCentury:a.noop, calendarWeeks: !1, clearBtn: !1, toggleActive: !1, daysOfWeekDisabled:[], daysOfWeekHighlighted:[], datesDisabled:[], endDate:1/0, forceParse: !0, format:"mm/dd/yyyy", keepEmptyValues: !1, keyboardNavigation: !0, language:"en", minViewMode:0, maxViewMode:4, multidate: !1, multidateSeparator:",", orientation:"auto", rtl: !1, startDate:-(1/0), startView:0, todayBtn: !1, todayHighlight: !1, updateViewDate: !0, weekStart:0, disableTouchKeyboard: !1, enableOnReadonly: !0, showOnFocus: !0, zIndexOffset:10, container:"body", immediateUpdates: !1, title:"", templates: { + leftArrow:"«", rightArrow:"»" + } + + , showWeekDays: !0 + } + + , p=a.fn.datepicker.locale_opts=["format", "rtl", "weekStart"]; a.fn.datepicker.Constructor=k; var q=a.fn.datepicker.dates= { + en: { + days:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], daysShort:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], daysMin:["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], months:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], monthsShort:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], today:"Today", clear:"Clear", titleFormat:"MM yyyy" + } + } + + , r= { + viewModes:[ { + names:["days", "month"], clsName:"days", e:"changeMonth" + } + + , { + names:["months", "year"], clsName:"months", e:"changeYear", navStep:1 + } + + , { + names:["years", "decade"], clsName:"years", e:"changeDecade", navStep:10 + } + + , { + names:["decades", "century"], clsName:"decades", e:"changeCentury", navStep:100 + } + + , { + names:["centuries", "millennium"], clsName:"centuries", e:"changeMillennium", navStep:1e3 + } + + ], validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g, nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-` { + -~\t\n\r]+/g, parseFormat:function(a) { + if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a; var b=a.replace(this.validParts, "\0").split("\0"), c=a.match(this.validParts); if( !b|| !b.length|| !c||0===c.length)throw new Error("Invalid date format."); return { + separators:b, parts:c + } + } + + , parseDate:function(c, e, f, g) { + function h(a, b) { + return b=== !0&&(b=10), a<100&&(a+=2e3, a>(new Date).getFullYear()+b&&(a-=100)), a + } + + function i() { + var a=this.slice(0, j[n].length), b=j[n].slice(0, a.length); return a.toLowerCase()===b.toLowerCase() + } + + if( !c)return b; if(c instanceof Date)return c; if("string"==typeof e&&(e=r.parseFormat(e)), e.toValue)return e.toValue(c, e, f); var j, l, m, n, o, p= { + d:"moveDay", m:"moveMonth", w:"moveWeek", y:"moveYear" + } + + , s= { + yesterday:"-1d", today:"+0d", tomorrow:"+1d" + } + + ; if(c in s&&(c=s[c]), /^[\-+]\d+[dmwy]([\s, ]+[\-+]\d+[dmwy])*$/i.test(c)) { + for(j=c.match(/([\-+]\d+)([dmwy])/gi), c=new Date, n=0; n'+o.templates.leftArrow+''+o.templates.rightArrow+"", + contTemplate:'', footTemplate:'' + } + + ; r.template='
'+r.headTemplate+""+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+"
", a.fn.datepicker.DPGlobal=r, a.fn.datepicker.noConflict=function() { + return a.fn.datepicker=m, this + } + + , a.fn.datepicker.version="1.7.1", a.fn.datepicker.deprecated=function(a) { + var b=window.console; b&&b.warn&&b.warn("DEPRECATED: "+a) + } + + , a(document).on("focus.datepicker.data-api click.datepicker.data-api", '[data-provide="datepicker"]', function(b) { + var c=a(this); c.data("datepicker")||(b.preventDefault(), n.call(c, "show")) + } + + ), a(function() { + n.call(a('[data-provide="datepicker-inline"]')) + } + + ) + } + + ); \ No newline at end of file diff --git a/multiple_datepicker_widget/static/src/js/multiple_date_picker_widget.js b/multiple_datepicker_widget/static/src/js/multiple_date_picker_widget.js new file mode 100644 index 000000000..8d0c58df4 --- /dev/null +++ b/multiple_datepicker_widget/static/src/js/multiple_date_picker_widget.js @@ -0,0 +1,53 @@ +/** @odoo-module **/ +import { registry } from "@web/core/registry"; +import { useInputField } from "@web/views/fields/input_field_hook"; +import time from 'web.time'; +var translation = require('web.translation'); +var _t = translation._t; + +const { Component,useRef} = owl; + +export class DomainSelectorTextField extends Component { + static template = 'FieldDateMultipleDate' + + setup(){ + super.setup(); + this.input = useRef('inputdate') + useInputField({ getValue: () => this.props.value || "", refName: "inputdate" }); + } + _onSelectDateField(ev){ + var dateFormat = time.getLangDateFormat(); + console.log("dateFormat....",dateFormat); + if (dateFormat.includes('MMMM')){ + var dates = dateFormat.toLowerCase() + var result = dates.replace(/mmmm/g, 'MM'); + console.log("Result..............",result) + dateFormat = result + } + else if (dateFormat.includes('MMM')) { + var dates = dateFormat.toLowerCase() + var result = dates.replace(/mmm/g, 'M'); + dateFormat = result + console('date',result) + + } + else if(dateFormat.includes('ddd')){ + var dates =new dateFormat.toLowerCase() + var result = new dates.replace(/ddd/g, 'DD'); + console.log("Result..............",result) + dateFormat = result + } + else{ + dateFormat = dateFormat.toLowerCase() + } + if (this.input.el){ + this.props.update(this.input.el.value.replace(DomainSelectorTextField, '')); + console.log('this',dateFormat) + $(this.input.el).datepicker({ + multidate: true, + format: dateFormat, + }).trigger('focus'); + } + } +} +registry.category("fields").add("multiple_datepicker", DomainSelectorTextField); diff --git a/multiple_datepicker_widget/static/src/xml/datepicker_widget.xml b/multiple_datepicker_widget/static/src/xml/datepicker_widget.xml new file mode 100644 index 000000000..b43945841 --- /dev/null +++ b/multiple_datepicker_widget/static/src/xml/datepicker_widget.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file