summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/due_date_select.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/due_date_select.js')
-rw-r--r--app/assets/javascripts/due_date_select.js105
1 files changed, 105 insertions, 0 deletions
diff --git a/app/assets/javascripts/due_date_select.js b/app/assets/javascripts/due_date_select.js
new file mode 100644
index 00000000000..131474c3b41
--- /dev/null
+++ b/app/assets/javascripts/due_date_select.js
@@ -0,0 +1,105 @@
+// Generated by CoffeeScript 1.10.0
+(function() {
+ this.DueDateSelect = (function() {
+ function DueDateSelect() {
+ var $datePicker, $dueDate, $loading;
+ $datePicker = $('.datepicker');
+ if ($datePicker.length) {
+ $dueDate = $('#milestone_due_date');
+ $datePicker.datepicker({
+ dateFormat: 'yy-mm-dd',
+ onSelect: function(dateText, inst) {
+ return $dueDate.val(dateText);
+ }
+ }).datepicker('setDate', $.datepicker.parseDate('yy-mm-dd', $dueDate.val()));
+ }
+ $('.js-clear-due-date').on('click', function(e) {
+ e.preventDefault();
+ return $.datepicker._clearDate($datePicker);
+ });
+ $loading = $('.js-issuable-update .due_date').find('.block-loading').hide();
+ $('.js-due-date-select').each(function(i, dropdown) {
+ var $block, $dropdown, $dropdownParent, $selectbox, $sidebarValue, $value, $valueContent, abilityName, addDueDate, fieldName, issueUpdateURL;
+ $dropdown = $(dropdown);
+ $dropdownParent = $dropdown.closest('.dropdown');
+ $datePicker = $dropdownParent.find('.js-due-date-calendar');
+ $block = $dropdown.closest('.block');
+ $selectbox = $dropdown.closest('.selectbox');
+ $value = $block.find('.value');
+ $valueContent = $block.find('.value-content');
+ $sidebarValue = $('.js-due-date-sidebar-value', $block);
+ fieldName = $dropdown.data('field-name');
+ abilityName = $dropdown.data('ability-name');
+ issueUpdateURL = $dropdown.data('issue-update');
+ $dropdown.glDropdown({
+ hidden: function() {
+ $selectbox.hide();
+ return $value.css('display', '');
+ }
+ });
+ addDueDate = function(isDropdown) {
+ var data, date, mediumDate, value;
+ value = $("input[name='" + fieldName + "']").val();
+ if (value !== '') {
+ date = new Date(value.replace(new RegExp('-', 'g'), ','));
+ mediumDate = $.datepicker.formatDate('M d, yy', date);
+ } else {
+ mediumDate = 'No due date';
+ }
+ data = {};
+ data[abilityName] = {};
+ data[abilityName].due_date = value;
+ return $.ajax({
+ type: 'PUT',
+ url: issueUpdateURL,
+ data: data,
+ dataType: 'json',
+ beforeSend: function() {
+ var cssClass;
+ $loading.fadeIn();
+ if (isDropdown) {
+ $dropdown.trigger('loading.gl.dropdown');
+ $selectbox.hide();
+ }
+ $value.css('display', '');
+ cssClass = Date.parse(mediumDate) ? 'bold' : 'no-value';
+ $valueContent.html("<span class='" + cssClass + "'>" + mediumDate + "</span>");
+ $sidebarValue.html(mediumDate);
+ if (value !== '') {
+ return $('.js-remove-due-date-holder').removeClass('hidden');
+ } else {
+ return $('.js-remove-due-date-holder').addClass('hidden');
+ }
+ }
+ }).done(function(data) {
+ if (isDropdown) {
+ $dropdown.trigger('loaded.gl.dropdown');
+ $dropdown.dropdown('toggle');
+ }
+ return $loading.fadeOut();
+ });
+ };
+ $block.on('click', '.js-remove-due-date', function(e) {
+ e.preventDefault();
+ $("input[name='" + fieldName + "']").val('');
+ return addDueDate(false);
+ });
+ return $datePicker.datepicker({
+ dateFormat: 'yy-mm-dd',
+ defaultDate: $("input[name='" + fieldName + "']").val(),
+ altField: "input[name='" + fieldName + "']",
+ onSelect: function() {
+ return addDueDate(true);
+ }
+ });
+ });
+ $(document).off('click', '.ui-datepicker-header a').on('click', '.ui-datepicker-header a', function(e) {
+ return e.stopImmediatePropagation();
+ });
+ }
+
+ return DueDateSelect;
+
+ })();
+
+}).call(this);