From 9bac81366c48eb1924bd3ad887c8ec03474b022c Mon Sep 17 00:00:00 2001 From: Sreejith P Date: Tue, 18 Sep 2018 12:04:05 +0530 Subject: [PATCH] [ADD] Initial Commit --- field_timepicker/README.rst | 35 + field_timepicker/__init__.py | 23 + field_timepicker/__manifest__.py | 43 ++ .../static/description/banner.jpg | Bin 0 -> 72067 bytes .../static/description/cybro-logo.png | Bin 0 -> 11065 bytes field_timepicker/static/description/icon.png | Bin 0 -> 14873 bytes .../static/description/index.html | 82 +++ .../static/description/picker.png | Bin 0 -> 5413 bytes field_timepicker/static/src/js/time_widget.js | 140 ++++ .../static/src/xml/timepicker.xml | 22 + .../static/wickedpicker/.gitignore | 11 + .../static/wickedpicker/LICENSE.md | 21 + .../static/wickedpicker/README.md | 79 +++ .../static/wickedpicker/bower.json | 29 + .../static/wickedpicker/fonts/fontello.eot | Bin 0 -> 5140 bytes .../static/wickedpicker/fonts/fontello.svg | 14 + .../static/wickedpicker/fonts/fontello.ttf | Bin 0 -> 4972 bytes .../static/wickedpicker/fonts/fontello.woff | Bin 0 -> 2804 bytes .../static/wickedpicker/src/wickedpicker.js | 624 ++++++++++++++++++ .../wickedpicker/stylesheets/wickedpicker.css | 90 +++ field_timepicker/views/templates.xml | 11 + 21 files changed, 1224 insertions(+) create mode 100644 field_timepicker/README.rst create mode 100644 field_timepicker/__init__.py create mode 100644 field_timepicker/__manifest__.py create mode 100644 field_timepicker/static/description/banner.jpg create mode 100644 field_timepicker/static/description/cybro-logo.png create mode 100644 field_timepicker/static/description/icon.png create mode 100644 field_timepicker/static/description/index.html create mode 100644 field_timepicker/static/description/picker.png create mode 100644 field_timepicker/static/src/js/time_widget.js create mode 100644 field_timepicker/static/src/xml/timepicker.xml create mode 100644 field_timepicker/static/wickedpicker/.gitignore create mode 100644 field_timepicker/static/wickedpicker/LICENSE.md create mode 100644 field_timepicker/static/wickedpicker/README.md create mode 100644 field_timepicker/static/wickedpicker/bower.json create mode 100644 field_timepicker/static/wickedpicker/fonts/fontello.eot create mode 100644 field_timepicker/static/wickedpicker/fonts/fontello.svg create mode 100644 field_timepicker/static/wickedpicker/fonts/fontello.ttf create mode 100644 field_timepicker/static/wickedpicker/fonts/fontello.woff create mode 100644 field_timepicker/static/wickedpicker/src/wickedpicker.js create mode 100644 field_timepicker/static/wickedpicker/stylesheets/wickedpicker.css create mode 100644 field_timepicker/views/templates.xml diff --git a/field_timepicker/README.rst b/field_timepicker/README.rst new file mode 100644 index 000000000..a085b3e5c --- /dev/null +++ b/field_timepicker/README.rst @@ -0,0 +1,35 @@ +================= +Time Picker Field +================= + +Time picker for fields, using Wickedpicker. + +Installation & Configuration +============================ + +After installing the module, you can use character fields for reading time input with the help of a time picker. + When you define the fields in xml, use 'widget="timepicker"' for those fields which you need to use as time fields. + + +Known issues / Roadmap +====================== + +* ... + +Bug Tracker +=========== + +Contact odoo@cybrosys.com + + +Contributors +------------ + +* Linto CT + +Maintainer +---------- + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com. diff --git a/field_timepicker/__init__.py b/field_timepicker/__init__.py new file mode 100644 index 000000000..1a1f92a6c --- /dev/null +++ b/field_timepicker/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- + +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies(). +# Author: LINTO C T() +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# It is forbidden to publish, distribute, sublicense, or sell copies +# of the Software or modified copies of the Software. +# +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. +# If not, see . +# +############################################################################## diff --git a/field_timepicker/__manifest__.py b/field_timepicker/__manifest__.py new file mode 100644 index 000000000..3d2dee968 --- /dev/null +++ b/field_timepicker/__manifest__.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- + +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies(). +# Author: LINTO C T() +# you can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# It is forbidden to publish, distribute, sublicense, or sell copies +# of the Software or modified copies of the Software. +# +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. +# If not, see . +# +############################################################################## +{ + 'name': 'Time Picker Field', + 'version': '11.0.1.0.0', + 'summary': 'Time Picker Using Wickedpicker', + 'category': 'Tools', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'depends': ['base'], + 'website': 'https://www.cybrosys.com/', + 'data': [ + 'views/templates.xml', + ], + 'qweb': ["static/src/xml/*.xml"], + 'images': ['static/description/banner.jpg'], + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/field_timepicker/static/description/banner.jpg b/field_timepicker/static/description/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c50e5af4b853e5d87ce9c2b5ca7624d97f404be GIT binary patch literal 72067 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≪#6!cG4L_=t^?Ct!SM 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 v2Hp*>USHMPqfc9qtS{`Q1O%66 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 ftuZ@A@+Vq0qUdn^gl9PTY$rfYN(opk0Sf* +
+

Time Picker Field

+

Time Picker Widget For Fields

+

Cybrosys Technologies

+
+
+

Features:

+
+ Time picker for character fields.
+ Time picker in 24 hour format.
+
+
+
+ + +
+
+
+

Overview

+

+ Time picker widget that can be used with character type fields in Odoo using the jQuery + plugin 'Wickedpicker'. +

+
+
+
+ +
+
+
+

+

Configuration

+

+

+
+

+ After installation, go to the field definition in the view and add "widget='timepicker'". +
+

+
+
+ +
+
+
+

+ Once the widget is linked with the field, you will see a picker for time selection. + Note that the picker will be in 24 hours format. +

+
+ +
+
+
+
+ +
+

Need Any Help?

+ +
diff --git a/field_timepicker/static/description/picker.png b/field_timepicker/static/description/picker.png new file mode 100644 index 0000000000000000000000000000000000000000..4581d9b7243e7bb900e7500e9fe526f958fac542 GIT binary patch literal 5413 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 ouD_exe_3pQMC*_5)^ + + + + +
+ + +
+ +
+ + +
+
diff --git a/field_timepicker/static/wickedpicker/.gitignore b/field_timepicker/static/wickedpicker/.gitignore new file mode 100644 index 000000000..4a42dee53 --- /dev/null +++ b/field_timepicker/static/wickedpicker/.gitignore @@ -0,0 +1,11 @@ +.sass-cache +*.html +jquery-1.11.3.min.js +.idea +sass +jasmine +spec +node_modules +node_module/* +gulpfile.js +package.json diff --git a/field_timepicker/static/wickedpicker/LICENSE.md b/field_timepicker/static/wickedpicker/LICENSE.md new file mode 100644 index 000000000..fc1cc60fa --- /dev/null +++ b/field_timepicker/static/wickedpicker/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2015-2016 Eric Gagnon http://ericjgagnon.github.io/wickedpicker/ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/field_timepicker/static/wickedpicker/README.md b/field_timepicker/static/wickedpicker/README.md new file mode 100644 index 000000000..8c84570e4 --- /dev/null +++ b/field_timepicker/static/wickedpicker/README.md @@ -0,0 +1,79 @@ +# Wickedpicker + +## wickedpicker.js - A simple jQuery timepicker + +## Requirements + +* [jQuery](http://jquery.com/download/) (>= 1.9) + +## Installation +```shell + $ bower install wickedpicker +``` + +## Usage + +#### In your HTML + ```html + + .... + + .... + + + + ``` + +#### In your JavaScript file + ```javascript + $('.timepicker').wickedpicker(); + ``` + +#### Options +```javascript + var options = { + now: "12:35", //hh:mm 24 hour format only, defaults to current time + twentyFour: false, //Display 24 hour format, defaults to false + upArrow: 'wickedpicker__controls__control-up', //The up arrow class selector to use, for custom CSS + downArrow: 'wickedpicker__controls__control-down', //The down arrow class selector to use, for custom CSS + close: 'wickedpicker__close', //The close class selector to use, for custom CSS + hoverState: 'hover-state', //The hover state class to use, for custom CSS + title: 'Timepicker', //The Wickedpicker's title, + showSeconds: false, //Whether or not to show seconds, + timeSeparator: ' : ', // The string to put in between hours and minutes (and seconds) + secondsInterval: 1, //Change interval for seconds, defaults to 1, + minutesInterval: 1, //Change interval for minutes, defaults to 1 + beforeShow: null, //A function to be called before the Wickedpicker is shown + afterShow: null, //A function to be called after the Wickedpicker is closed/hidden + show: null, //A function to be called when the Wickedpicker is shown + clearable: false, //Make the picker's input clearable (has clickable "x") + }; + $('.timepicker').wickedpicker(options); +``` + +#### Methods + +'time' get the current time inside of the input element that has a wickedpicker attached to it. +```javascript + $('.timepicker').wickedpicker('time'); +``` + + If multiple input fields have the same class and instantiate a wickedpicker then pass the index of the timepicker + you'd like to select + ```javascript + $('.timepicker').wickedpicker('time', 0); + ``` + +#### Functionality + The Wickedpicker opens when the bound input is clicked, or focused on (try tabbing), and it can be closed by either + clicking the X, by clicking outside of it, or by pressing esc. The arrows icons increase or decrease their + associated time values or toggle the meridiem. The values can also be changed using the up and down keys when + focused on. To move to the next value just press the left or right arrow key. + +For more checkout +[Wickedpicker gh-pages](http://ericjgagnon.github.io/wickedpicker/) + +## License + + Copyright (c) 2015-2016 Eric Gagnon Licensed under the MIT license. + diff --git a/field_timepicker/static/wickedpicker/bower.json b/field_timepicker/static/wickedpicker/bower.json new file mode 100644 index 000000000..2f29eeea7 --- /dev/null +++ b/field_timepicker/static/wickedpicker/bower.json @@ -0,0 +1,29 @@ +{ + "name": "wickedpicker", + "version": "0.0.4", + "description": "A simple jQuery timepicker plugin.", + "main": [ + "./dist/wickedpicker.min.js", + "./dist/wickedpicker.min.css" + ], + "authors": [ + "Eric Gagnon", + "Ruben Seyferth" + ], + "moduleType": "globals", + "license": "MIT", + "keywords": [ + "jQuery", + "timepicker", + "wickedpicker" + ], + "homepage": "http://ericjgagnon.github.io/wickedpicker/", + "repository": { + "type": "git", + "url": "git://github.com/ericjgagnon/wickedpicker.git" + }, + "dependencies": { + "jquery": ">= 1.9.0" + }, + "private": false +} diff --git a/field_timepicker/static/wickedpicker/fonts/fontello.eot b/field_timepicker/static/wickedpicker/fonts/fontello.eot new file mode 100644 index 0000000000000000000000000000000000000000..f9d3a8aea4aa25ad7f096182942b296a755af2d8 GIT binary patch literal 5140 zcmd^CO>7&-6`tXeltkJhZOL*HD)!JT$+Eble&Qd+k!^)Pk`p@(E&qh;IQ6bb>c^2p zmZB58z4(&AAo}C>&_jXbQX4(wGAp-fQuGiMD9`{cPy_**ON;hY9}2XG_87U}n_W_t zEH^-|U77p7_vX!;H}Ac9v+nL@Y^jSe&U}m>9}8#-Kyrr@I-7U-jkgkm{c=}_y&-L) zD4Syyw!-SH%$D$1!9XXQ0XNUCgSS}?k{)&mk{VlOi%MItQI=vO7};(<#I$H9yTvqS zy?TCl?8FDB--hHL_+2V4+tojIJ^f24W$}Bt_*Pv&j;F1TS7@#}zkK`79TWU5#=_Nk zd$kIA6#Nos`~1?)xzBdL5ytNCV7{?Xwo7fjKZPyr*BC##06|+xdky@*!S^jJ*Kc%w z3dH{;*^u*M&%mDReKJ#Z20 z_hCF&t(B{Pep7pgvEBay{~gA)HGYQ$SiA4rKJwtZF6Dn^qa114$PvaiJ^8s@iA_FW z4}99p!)xra?_KsZ6q*Uc2Efs;*OO(z(P%I8Gx9wMs!HL3@8Lu6>;WVC6yLDHgCzgI ze^gAh4}DXtn+5Mjd_0-xZwnqc*ujGbhWWtZWBlmYUf$EKeQ+hbFSP!}`WNBe9aq9( z{(iWZUTG4H803R$0se#aB35}1MzPxZ7Z5{1<@@13eV?Nu`rvPmpZx8PC}-g|d3=f=bl2F= zkGX3^_}(7h=aI8fBYO8PUT333L7IFda`$ee+7mq+iQKyvd0a7)A_Y}Dh?m{5>&vT= ziT|*$_JHc=GyS)_T>6v0F{XC?F8Fq@6{%Rbb?oYEA8u43&BNoTk=9RHgVexT{4pry z$j|z{S=8X7XgDb6Fr9yTcC){0v+c2@eNY4}ZnOLCA|9 z4zWvo)x%*nz(37YsyAzk^9yw`m^mcIMn;c_*_)yQ(c+4|B<$<;g-UHzOp3Y6O1-?a zR7n*p%S}8}p1;0i*P3jTUMkmC7b`1bG&Rx`O_x{7HM?Fek@eNL=Ev&wIWbqOEQ=}6 zuBg^3*UH6uYN1}Q9v>cV&ZPBN2Hn5PZsI0bM5q>UYX~%=3_AomhWlU?i4bfS8UmWG z)*@~f8#jr-`#NSUsF79hllX1DeNwE5@#V+ln{TA8v$pcv-&R|-rg5jOsC&&;_g@MA zxW2Elx3Ir4NbB%~ysRm&1e*eV^tKd;2aR2Wog%bTDk^nIkF#O?ZC$guKU9@_h2sVS z-tO_Ez8YfdyS7NoD={N;X~u*cCp2!F!f}=Ck{pD{q11dW9V9VK+sidm*<#w1UerY>2&P&Un^)C`dm(%)~xp+F{IkO4g{ zgL)e7o03~e={I!vB}z_UHZ5qxU7X&MS-GOrhT@QCL_;)S+ZhS;V_WA6Rz7CWm<8R$ z=;ZkVhGMiSZ{?&67_u#sSVPKGXo6t%w2lz#XaUbMQm16`p_#8SK~+xrT02B2=VUjG`$;3{Ez^ zlv=-TXWb>jPna(IFbk7gTYGfU4yqYFy%r8>xk5aq$IYR5QtmVypD!m%b~Y(H4QxON zxg+y3?F&Fpn{p>{GvIcDOUek$L{&%xB2a|evNL0eh9zVtf|is~lJ7Pg7Rg*JIFU$3ayu;}2`W;QZra&Fubp^F-h)hN{rQ4J zm5X4d8%QrLI~3P3t%+mqI88zA)2NA^OvC?a3rXCRswX7SVXR9>h*3=^*Er{@8oCVT zFkkLMK}Phn$jLB@GK9QYX<=dcUqquE-@@s1!*X^96S9_w9YC16vA3>7QtmMvPP7Mc zCc4*fG@?%#j-Tk$h7%zAjNt@{#tf&8Xs_Y46MfcjI*9HwnB1B88jkFTBl}=Lz!9Qx zI70LQ93iU15u$x?glIn;Avyp@h#rI^L`8sx8RmPilTqv&j&3`}Le<*iNjYYu_D&?_b6=&33M)eW zFjB#K`bA1i)5$~#Uura_^=Wj10(v%j9**mCobTzz`bW@0dQkoNr&MG|CQ)vrbRi}h zuyu4}SfpGV(hr-^64Ii>JbA8g-zPK?yYCy&o-xzZ;M&nDu^v{`r*O28#m(mghngqc zPVUQCC0%M6yM!L&%h)ks%f!LlI>&}f=(_rpJs#7s!W8xeqE>;uZ5Dwe)Cv7K-H3ev zg@nGn#S>VxF}Ytkfj6!ZYGE5|p-PTX3vt*g~d)Z@iv>0V~wV^SXXJjgUtW6|Bab&JhZ zzF_DgMNykV*PSp^PJ(yi;7zo|$mWLlL`$r+n^QOGoHXQ-L~~@5(Nl&znrNVgs8|{} zj*l&jw4`JL>rbk1Q2{oiOU0$*RHSf7TpwRVvp|DxRcdp;UtNmR+ZD#wsXmGu^_2;I zJQjZ>-*MCPF-^f}1~o(bk5lByMQ_vbx0Gz;CV~s1xD*#IJ4bn+t=vC4o zkS84i=SYXZ4C$N%I8QnRE|3m^i=;!~66s6=yhb_%3Zz58Bpm{mNhbsFI_VI&LOKNA zARPkVB%M5 z+KUR2>NP_?-%@>(7^S+T5UDOJM5-%>Jl;~R5TjJ93X$r!6e87{algawYknD}6SBQ5 zwZ8lfx@wXPAKAZ~!3PNcKAN)oSzUElAdL@(A(ysqq95b-=ui?5X)NpX@!RL{v3R@S pXr-((K-{m|Z{h!-ledfbVuA|3iA{&?82X4md`J4fhua~`{tH^0m~8+6 literal 0 HcmV?d00001 diff --git a/field_timepicker/static/wickedpicker/fonts/fontello.svg b/field_timepicker/static/wickedpicker/fonts/fontello.svg new file mode 100644 index 000000000..930a6cc3f --- /dev/null +++ b/field_timepicker/static/wickedpicker/fonts/fontello.svg @@ -0,0 +1,14 @@ + + + +Copyright (C) 2015 by original authors @ fontello.com + + + + + + + + + + \ No newline at end of file diff --git a/field_timepicker/static/wickedpicker/fonts/fontello.ttf b/field_timepicker/static/wickedpicker/fonts/fontello.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2877820b10b385d3631f7b563beaeb862355217b GIT binary patch literal 4972 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 0 && this.substring(this.length - string.length, this.length) === string; + } + } + + /* + * Returns if the user agent is mobile + * + * @return {bool} + */ + var isMobile = function () { + return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); + }; + + var today = new Date(); + + var pluginName = "wickedpicker", + defaults = { + now: today.getHours() + ':' + today.getMinutes(), + twentyFour: false, + upArrow: 'wickedpicker__controls__control-up', + downArrow: 'wickedpicker__controls__control-down', + close: 'wickedpicker__close', + hoverState: 'hover-state', + title: 'Timepicker', + showSeconds: false, + timeSeparator: ' : ', + secondsInterval: 1, + minutesInterval: 1, + beforeShow: null, + afterShow: null, + show: null, + clearable: false, + closeOnClickOutside: true, + onClickOutside: function() {}, + }; + + /* + * @param {object} The input object the timepicker is attached to. + * @param {object} The object containing options + */ + function Wickedpicker(element, options) { + this.element = $(element); + this.options = $.extend({}, defaults, options); + + this.element.addClass('hasWickedpicker'); + this.element.attr('onkeypress', 'return false;'); + this.element.attr('aria-showingpicker', 'false'); + this.createPicker(); + this.timepicker = $('.wickedpicker'); + this.up = $('.' + this.options.upArrow.split(/\s+/).join('.')); + this.down = $('.' + this.options.downArrow.split(/\s+/).join('.')); + this.separator = $('.wickedpicker__controls__control--separator'); + this.hoursElem = $('.wickedpicker__controls__control--hours'); + this.minutesElem = $('.wickedpicker__controls__control--minutes'); + this.secondsElem = $('.wickedpicker__controls__control--seconds'); + this.meridiemElem = $('.wickedpicker__controls__control--meridiem'); + this.close = $('.' + this.options.close.split(/\s+/).join('.')); + + //Create a new Date object based on the default or passing in now value + var time = this.timeArrayFromString(this.options.now); + this.options.now = new Date(today.getFullYear(), today.getMonth(), today.getDate(), time[0], time[1], time[2]); + this.selectedHour = this.parseHours(this.options.now.getHours()); + this.selectedMin = this.parseSecMin(this.options.now.getMinutes()); + this.selectedSec = this.parseSecMin(this.options.now.getSeconds()); + this.selectedMeridiem = this.parseMeridiem(this.options.now.getHours()); + this.setHoverState(); + this.attach(element); + this.setText(element); + } + + $.extend(Wickedpicker.prototype, { + + /* + * Show given input's timepicker + * + * @param {object} The input being clicked + */ + showPicker: function (element) { + //If there is a beforeShow function, then call it with the input calling the timepicker and the + // timepicker itself + if (typeof this.options.beforeShow === 'function') { + this.options.beforeShow(element, this.timepicker); + } + var timepickerPos = $(element).offset(); + + $(element).attr({'aria-showingpicker': 'true', 'tabindex': -1}); + this.setText(element); + this.showHideMeridiemControl(); + if (this.getText(element) !== this.getTime()) { + + // Check meridiem + var text = this.getText(element); + var re = /\s[ap]m$/i; + var meridiem = re.test(text) ? text.substr(-2, 2) : null; + var inputTime = text.replace(re, '').split(this.options.timeSeparator); + var newTime = {}; + newTime.hours = inputTime[0]; + newTime.minutes = inputTime[1]; + newTime.meridiem = meridiem; + if (this.options.showSeconds) { + newTime.seconds = inputTime[2]; + } + this.setTime(newTime); + } + this.timepicker.css({ + 'z-index': this.element.css('z-index') + 1, + position: 'absolute', + left: timepickerPos.left, + top: timepickerPos.top + $(element)[0].offsetHeight + }).show(); + //If there is a show function, then call it with the input calling the timepicker and the + // timepicker itself + if (typeof this.options.show === 'function') { + this.options.show(element, this.timepicker); + } + + this.handleTimeAdjustments(element); + }, + + /* + * Hides the timepicker that is currently shown if it is not part of the timepicker + * + * @param {Object} The DOM object being clicked on the page + * + * BeinnLora: added trigger function to call on closing/hiding timepicker. + */ + hideTimepicker: function (element) { + this.timepicker.hide(); + if (typeof this.options.afterShow === 'function') { + this.options.afterShow(element, this.timepicker); + } + var pickerHidden = { + start: function () { + var setShowPickerFalse = $.Deferred(); + $('[aria-showingpicker="true"]').attr('aria-showingpicker', 'false'); + return setShowPickerFalse.promise(); + } + }; + + function setTabIndex(index) { + setTimeout(function () { + $('[aria-showingpicker="false"]').attr('tabindex', index); + }, 400); + } + + pickerHidden.start().then(setTabIndex(0)); + }, + + /* + * Create a new timepicker. A single timepicker per page + */ + createPicker: function () { + if ($('.wickedpicker').length === 0) { + var picker = '

' + this.options.title + '

  • 00
  • :
  • 00
  • '; + if (this.options.showSeconds) { + picker += '
  • :
  • 00
  • '; + } + picker += '
  • AM
'; + $('body').append(picker); + this.attachKeyboardEvents(); + } + }, + + /* + * Hides the meridiem control if this timepicker is a 24 hour clock + */ + showHideMeridiemControl: function () { + if (this.options.twentyFour === false) { + $(this.meridiemElem).parent().show(); + } + else { + $(this.meridiemElem).parent().hide(); + } + }, + + /* + * Hides the seconds control if this timepicker has showSeconds set to true + */ + showHideSecondsControl: function () { + if (this.options.showSeconds) { + $(this.secondsElem).parent().show(); + } + else { + $(this.secondsElem).parent().hide(); + } + }, + + /* + * Bind the click events to the input + * + * @param {object} The input element + */ + attach: function (element) { + var self = this; + + if (this.options.clearable) { + self.makePickerInputClearable(element); + } + + $(element).attr('tabindex', 0); + $(element).on('click focus', function (event) { + //Prevent multiple firings + if ($(self.timepicker).is(':hidden')) { + self.showPicker($(this)); + window.lastTimePickerControl = $(this); //Put the reference on this timepicker into global scope for unsing that in afterShow function + $(self.hoursElem).focus(); + } + }); + + + //Handle click events for closing Wickedpicker + var clickHandler = function (event) { //TODO: Fix double firing + //Only fire the hide event when you have to + if ($(self.timepicker).is(':visible')) { + //Clicking the X + if ($(event.target).is(self.close)) { + self.hideTimepicker(window.lastTimePickerControl); + } else if ($(event.target).closest(self.timepicker).length || $(event.target).closest($('.hasWickedpicker')).length) { //Clicking the Wickedpicker or one of it's inputs + event.stopPropagation(); + } else { //Everything else + if (typeof self.options.onClickOutside === 'function') { + self.options.onClickOutside(); + } + else { + console.warn("Type of onClickOutside must be a function"); + } + + if (!self.options.closeOnClickOutside) { + return; + } + self.hideTimepicker(window.lastTimePickerControl); + } + window.lastTimePickerControl = null; + } + }; + $(document).off('click', clickHandler).on('click', clickHandler); + }, + + /** + * Added keyboard functionality to improve usabil + */ + attachKeyboardEvents: function () { + $(document).on('keydown', $.proxy(function (event) { + switch (event.keyCode) { + case 9: + if (event.target.className !== 'hasWickedpicker') { + $(this.close).trigger('click'); + } + break; + case 27: + $(this.close).trigger('click'); + break; + case 37: //Left arrow + if (event.target.className !== this.hoursElem[0].className) { + $(event.target).parent().prevAll('li').not(this.separator.selector).first().children()[1].focus(); + } else { + $(event.target).parent().siblings(':last').children()[1].focus(); + } + break; + case 39: //Right arrow + if (event.target.className !== this.meridiemElem[0].className) { + $(event.target).parent().nextAll('li').not(this.separator.selector).first().children()[1].focus(); + } else { + $(event.target).parent().siblings(':first').children()[1].focus(); + } + break; + case 38: //Up arrow + $(':focus').prev().trigger('click'); + break; + case 40: //Down arrow + $(':focus').next().trigger('click'); + break; + default: + break; + } + }, this)); + }, + + /* + * Set the time on the timepicker + * + * @param {object} The date being set + */ + setTime: function (time) { + this.setHours(time.hours); + this.setMinutes(time.minutes); + this.setMeridiem(time.meridiem); + if (this.options.showSeconds) { + this.setSeconds(time.seconds); + } + }, + + /* + * Get the time from the timepicker + */ + getTime: function () { + return [this.formatTime(this.getHours(), this.getMinutes(), this.getMeridiem(), this.getSeconds())]; + }, + + /* + * Set the timpicker's hour(s) value + * + * @param {string} hours + */ + setHours: function (hours) { + var hour = new Date(); + hour.setHours(hours); + var hoursText = this.parseHours(hour.getHours()); + this.hoursElem.text(hoursText); + this.selectedHour = hoursText; + }, + + /* + * Get the hour(s) value from the timepicker + * + * @return {integer} + */ + getHours: function () { + var hours = new Date(); + hours.setHours(this.hoursElem.text()); + return hours.getHours(); + }, + + /* + * Returns the correct hour value based on the type of clock, 12 or 24 hour + * + * @param {integer} The hours value before parsing + * + * @return {string|integer} + */ + parseHours: function (hours) { + return (this.options.twentyFour === false) ? ((hours + 11) % 12) + 1 : (hours < 10) ? '0' + hours : hours; + }, + + /* + * Sets the timpicker's minutes value + * + * @param {string} minutes + */ + setMinutes: function (minutes) { + var minute = new Date(); + minute.setMinutes(minutes); + var minutesText = minute.getMinutes(); + var min = this.parseSecMin(minutesText); + this.minutesElem.text(min); + this.selectedMin = min; + }, + + /* + * Get the minutes value from the timepicker + * + * @return {integer} + */ + getMinutes: function () { + var minutes = new Date(); + minutes.setMinutes(this.minutesElem.text()); + return minutes.getMinutes(); + }, + + + /* + * Return a human-readable minutes/seconds value + * + * @param {string} value seconds or minutes + * + * @return {string|integer} + */ + parseSecMin: function (value) { + return ((value < 10) ? '0' : '') + value; + }, + + /* + * Set the timepicker's meridiem value, AM or PM + * + * @param {string} The new meridiem + */ + setMeridiem: function (inputMeridiem) { + var newMeridiem = ''; + if (inputMeridiem === undefined) { + var meridiem = this.getMeridiem(); + newMeridiem = (meridiem === 'PM') ? 'AM' : 'PM'; + } else { + newMeridiem = inputMeridiem; + } + this.meridiemElem.text(newMeridiem); + this.selectedMeridiem = newMeridiem; + }, + + /* + * Get the timepicker's meridiem value, AM or PM + * + * @return {string} + */ + getMeridiem: function () { + return this.meridiemElem.text(); + }, + + /* + * Set the timepicker's seconds value + * + * @param {string} seconds + */ + setSeconds: function (seconds) { + var second = new Date(); + second.setSeconds(seconds); + var secondsText = second.getSeconds(); + var sec = this.parseSecMin(secondsText); + this.secondsElem.text(sec); + this.selectedSec = sec; + }, + + /* + * Get the timepicker's seconds value + * + * return {string} + */ + getSeconds: function () { + var seconds = new Date(); + seconds.setSeconds(this.secondsElem.text()); + return seconds.getSeconds(); + }, + + /* + * Get the correct meridiem based on the hours given + * + * @param {string|integer} hours + * + * @return {string} + */ + parseMeridiem: function (hours) { + return (hours > 11) ? 'PM' : 'AM'; + }, + + /* + * Handles time incrementing and decrementing and passes + * the operator, '+' or '-', the input to be set after the change + * and the current arrow clicked, to decipher if hours, ninutes, or meridiem. + * + * @param {object} The input element + */ + handleTimeAdjustments: function (element) { + var timeOut = 0; + //Click and click and hold timepicker incrementer and decrementer + $(this.up).add(this.down).off('mousedown click touchstart').on('mousedown click', { + 'Wickedpicker': this, + 'input': element + }, function (event) { + if(event.which!=1) return false; + var operator = (this.className.indexOf('up') > -1) ? '+' : '-'; + var passedData = event.data; + if (event.type == 'mousedown') { + timeOut = setInterval($.proxy(function (args) { + args.Wickedpicker.changeValue(operator, args.input, this); + }, this, {'Wickedpicker': passedData.Wickedpicker, 'input': passedData.input}), 200); + } else { + passedData.Wickedpicker.changeValue(operator, passedData.input, this); + } + }).bind('mouseup touchend', function () { + clearInterval(timeOut); + }); + }, + + /* + * Change the timepicker's time base on what is clicked + * + * @param {string} The + or - operator + * @param {object} The timepicker's associated input to be set post change + * @param {object} The DOM arrow object clicked, determines if it is hours, + * minutes, or meridiem base on the operator and its siblings + */ + changeValue: function (operator, input, clicked) { + var target = (operator === '+') ? clicked.nextSibling : clicked.previousSibling; + var targetClass = $(target).attr('class'); + if (targetClass.endsWith('hours')) { + this.setHours(eval(this.getHours() + operator + 1)); + } else if (targetClass.endsWith('minutes')) { + this.setMinutes(eval(this.getMinutes() + operator + this.options.minutesInterval)); + } else if (targetClass.endsWith('seconds')) { + this.setSeconds(eval(this.getSeconds() + operator + this.options.secondsInterval)); + } else { + this.setMeridiem(); + } + this.setText(input); + }, + + + /* + * Sets the give input's text to the current timepicker's time + * + * @param {object} The input element + */ + setText: function (input) { + $(input).val(this.formatTime(this.selectedHour, this.selectedMin, this.selectedMeridiem, this.selectedSec)).change(); + }, + + /* + * Get the given input's value + * + * @param {object} The input element + * + * @return {string} + */ + getText: function (input) { + return $(input).val(); + }, + + /* + * Returns the correct time format as a string + * + * @param {string} hour + * @param {string} minutes + * @param {string} meridiem + * + * @return {string} + */ + formatTime: function (hour, min, meridiem, seconds) { + var formattedTime = hour + this.options.timeSeparator + min; + if (this.options.showSeconds) { + formattedTime += this.options.timeSeparator + seconds; + } + if (this.options.twentyFour === false) { + formattedTime += ' ' + meridiem; + } + return formattedTime; + }, + + /** + * Apply the hover class to the arrows and close icon fonts + */ + setHoverState: function () { + var self = this; + if (!isMobile()) { + $(this.up).add(this.down).add(this.close).hover(function () { + $(this).toggleClass(self.options.hoverState); + }); + } + }, + + /** + * Wrapping the given input field with the clearable container + * , add a span that will contain the x, and bind the clear + * input event to the span + * + * @param input + */ + makePickerInputClearable: function(input) { + $(input).wrap('
').after('×'); + + //When the x is clicked, clear its sibling input field + $('[data-clear-picker]').on('click', function(event) { + $(this).siblings('.hasWickedpicker').val(''); + }); + }, + + /** + * Convert the options time string format + * to an array + * + * returns => [hours, minutes, seconds] + * + * @param stringTime + * @returns {*} + */ + timeArrayFromString: function (stringTime) { + if (stringTime.length) { + var time = stringTime.split(':'); + time[2] = (time.length < 3) ? '00' : time[2]; + return time; + } + return false; + }, + + //public functions + /* + * Returns the requested input element's value + */ + _time: function () { + var inputValue = $(this.element).val(); + return (inputValue === '') ? this.formatTime(this.selectedHour, this.selectedMin, this.selectedMeridiem, this.selectedSec) : inputValue; + }, + _hide: function() { + this.hideTimepicker(this.element); + } + }); + + //optional index if multiple inputs share the same class + $.fn[pluginName] = function (options, index) { + if (!$.isFunction(Wickedpicker.prototype['_' + options])) { + return this.each(function () { + if (!$.data(this, "plugin_" + pluginName)) { + $.data(this, "plugin_" + pluginName, new Wickedpicker(this, options)); + } + }); + } + else if ($(this).hasClass('hasWickedpicker')) { + if (index !== undefined) { + return $.data($(this)[index], 'plugin_' + pluginName)['_' + options](); + } + else { + return $.data($(this)[0], 'plugin_' + pluginName)['_' + options](); + } + } + }; + +})(jQuery, window, document); diff --git a/field_timepicker/static/wickedpicker/stylesheets/wickedpicker.css b/field_timepicker/static/wickedpicker/stylesheets/wickedpicker.css new file mode 100644 index 000000000..d2a6ab27b --- /dev/null +++ b/field_timepicker/static/wickedpicker/stylesheets/wickedpicker.css @@ -0,0 +1,90 @@ +.wickedpicker { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-shadow: 0 0 0 1px rgba(14, 41, 57, 0.12), 0 2px 5px rgba(14, 41, 57, 0.44), inset 0 -1px 2px rgba(14, 41, 57, 0.15); + background: #fefefe; + margin: 0 auto; + border-radius: 0.1px; + width: 270px; + height: 130px; + font-size: 14px; + display: none; } + .wickedpicker__title { + background-image: -webkit-linear-gradient(top, #ffffff 0%, #f2f2f2 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #f2f2f2 100%); + position: relative; + background: #f2f2f2; + margin: 0 auto; + border-bottom: 1px solid #e5e5e5; + padding: 12px 11px 10px 15px; + color: #4C4C4C; + font-size: inherit; } + .wickedpicker__close { + -webkit-transform: translateY(-25%); + -moz-transform: translateY(-25%); + -ms-transform: translateY(-25%); + -o-transform: translateY(-25%); + transform: translateY(-25%); + position: absolute; + top: 25%; + right: 10px; + color: #34495e; + cursor: pointer; } + .wickedpicker__close:before { + content: '\00d7'; } + .wickedpicker__controls { + padding: 10px 0; + line-height: normal; + margin: 0; } + .wickedpicker__controls__control, .wickedpicker__controls__control--separator { + vertical-align: middle; + display: inline-block; + font-size: inherit; + margin: 0 auto; + width: 35px; + letter-spacing: 1.3px; } + .wickedpicker__controls__control-up, .wickedpicker__controls__control-down { + color: #34495e; + position: relative; + display: block; + margin: 3px auto; + font-size: 18px; + cursor: pointer; } + .wickedpicker__controls__control-up:before { + content: '\e800'; } + .wickedpicker__controls__control-down:after { + content: '\e801'; } + .wickedpicker__controls__control--separator { + width: 5px; } + +.text-center, .wickedpicker__title, .wickedpicker__controls, .wickedpicker__controls__control, .wickedpicker__controls__control--separator, .wickedpicker__controls__control-up, .wickedpicker__controls__control-down { + text-align: center; } + +.hover-state { + color: #3498db; } + +@font-face { + font-family: 'fontello'; + src: url("../fonts/fontello.eot?52602240"); + src: url("../fonts/fontello.eot?52602240#iefix") format("embedded-opentype"), url("../fonts/fontello.woff?52602240") format("woff"), url("../fonts/fontello.ttf?52602240") format("truetype"), url("../fonts/fontello.svg?52602240#fontello") format("svg"); + font-weight: normal; + font-style: normal; } + +.fontello:before, .wickedpicker__controls__control-up:before, .fontello-after:after, .wickedpicker__controls__control-down:after { + font-family: 'fontello'; + font-style: normal; + font-weight: normal; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + font-variant: normal; + text-transform: none; + line-height: 1em; + margin-left: .2em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } diff --git a/field_timepicker/views/templates.xml b/field_timepicker/views/templates.xml new file mode 100644 index 000000000..8655595dc --- /dev/null +++ b/field_timepicker/views/templates.xml @@ -0,0 +1,11 @@ + + +