summaryrefslogtreecommitdiff
path: root/lib/grappelli/media/js/grappelli.timepicker.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/grappelli/media/js/grappelli.timepicker.js')
-rw-r--r--lib/grappelli/media/js/grappelli.timepicker.js171
1 files changed, 0 insertions, 171 deletions
diff --git a/lib/grappelli/media/js/grappelli.timepicker.js b/lib/grappelli/media/js/grappelli.timepicker.js
deleted file mode 100644
index 05bedcc..0000000
--- a/lib/grappelli/media/js/grappelli.timepicker.js
+++ /dev/null
@@ -1,171 +0,0 @@
-/**
- * this is grappellis timepicker.
- * works pretty similar to ui.datepicker:
- * - adds a button to the element
- * - creates a node (div) at the bottom called ui-timepicker
- * - element.onClick fills the ui-timepicker node with the time_list (all times you can select)
- */
-
-(function( $ ) {
-$.widget("ui.timepicker", {
- // default options
- options: {
- // template for the container of the timepicker
- template: '<div id="ui-timepicker" class="module" style="position: absolute; display: none;"></div>',
- // selector to get the ui-timepicker once it's added to the dom
- timepicker_selector: "#ui-timepicker",
- // needed offset of the container from the element
- offset: {
- top: 0
- },
- // if time_list wasn't sent when calling the timepicker we use this
- default_time_list: [
- 'now',
- '00:00',
- '01:00',
- '02:00',
- '03:00',
- '04:00',
- '05:00',
- '06:00',
- '07:00',
- '08:00',
- '09:00',
- '10:00',
- '11:00',
- '12:00',
- '13:00',
- '14:00',
- '15:00',
- '16:00',
- '17:00',
- '18:00',
- '19:00',
- '20:00',
- '21:00',
- '22:00',
- '23:00'
- ],
- // leave this empty!!!
- // NOTE: you can't set a default for time_list because if you call:
- // $("node").timepicker({time_list: ["01:00", "02:00"]})
- // ui.widget will extend/merge the options.time_list whith the one you sent.
- time_list: []
- },
-
- /**
- * init timepicker for a specific element
- */
- _create: function() {
- // for the events
- var self = this;
-
- // to close timpicker if you click somewhere in the document
- $(document).mousedown(function(evt) {
- if (self.timepicker.is(":visible")) {
- var $target = $(evt.target);
- if ($target[0].id != self.timepicker[0].id && $target.parents(self.options.timepicker_selector).length == 0 && !$target.hasClass('hasTimepicker') && !$target.hasClass('ui-timepicker-trigger')) {
- self.timepicker.hide();
- }
- }
- });
-
- // get/create timepicker's container
- if ($(this.options.timepicker_selector).size() == 0) {
- $(this.options.template).appendTo('body');
- }
- this.timepicker = $(this.options.timepicker_selector);
- this.timepicker.hide();
-
- // modify the element and create the button
- this.element.addClass("hasTimepicker");
- this.button = $('<button type="button" class="ui-timepicker-trigger"></button>');
- this.element.after(this.button);
-
- // disable button if element is disabled
- if (this.element.attr("disabled")) {
- this.button.attr("disabled", true);
- }
- // register event
- else {
- this.button.click(function() {
- self._toggleTimepicker();
- });
- }
- },
-
- /**
- * called when button is clicked
- */
- _toggleTimepicker: function() {
- if (this.timepicker.is(":visible")) {
- this.timepicker.hide();
- } else {
- this.element.focus();
- this._generateTimepickerContents();
- this._showTimepicker();
- }
- },
-
- /**
- * fills timepicker with time_list of element and shows it.
- *
- * called by _toggleTimepicker
- */
- _generateTimepickerContents: function() {
- var self = this,
- template_str = "<ul>";
-
- // there is no time_list for this instance so use the default one
- if (this.options.time_list.length == 0) {
- this.options.time_list = this.options.default_time_list;
- }
-
- for (var i = 0; i < this.options.time_list.length; i++) {
- if (this.options.time_list[i] == "now") {
- var now = new Date(),
- hours = now.getHours(),
- minutes = now.getMinutes();
-
- hours = ((hours < 10) ? "0" + hours : hours);
- minutes = ((minutes < 10) ? "0" + minutes : minutes);
-
- template_str += '<li class="ui-state-active row">' + hours + ":" + minutes + '</li>';
- } else {
- template_str += '<li class="ui-state-default row">' + this.options.time_list[i] + '</li>';
- }
- }
- template_str += "</ul>";
-
- // fill timepicker container
- this.timepicker.html(template_str);
-
- // click handler for items (times) in timepicker
- this.timepicker.find('li').click(function() {
- // remove active class from all items
- $(this).parent().children('li').removeClass("ui-state-active");
- // mark clicked item as active
- $(this).addClass("ui-state-active");
-
- // set the new value and hide the timepicker
- self.element.val($(this).html());
- self.timepicker.hide();
- });
- },
-
- /**
- * sets offset and shows timepicker containter
- */
- _showTimepicker: function() {
- this.timepicker_offset = this.element.offset();
- this.timepicker_offset.top += this.element.outerHeight() + this.options.offset.top;
- this.timepicker.css(this.timepicker_offset);
- this.timepicker.show();
- },
-
- destroy: function() {
- $.Widget.prototype.destroy.apply(this, arguments); // default destroy
- // now do other stuff particular to this widget
- }
-});
-})(django.jQuery); \ No newline at end of file