Updated version of jQuery.Gantt
This commit is contained in:
Родитель
48eaadd45f
Коммит
d9ad070461
|
@ -4,9 +4,8 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Github issues Gantt</title>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="http://taitems.github.com/jQuery.Gantt/css/style.css">
|
||||
<link rel="stylesheet" href="/lib/jQuery.Gantt/css/style.css">
|
||||
<link rel="stylesheet" href="/stylesheets/style.css">
|
||||
<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
@ -26,10 +25,8 @@
|
|||
<div class="gantt-dev"></div>
|
||||
</div>
|
||||
|
||||
<script src="/lib/jquery-1.7.2.min.js"></script>
|
||||
<script src="/lib/jquery.fn.gantt.js"></script>
|
||||
<script src="/lib/bootstrap-tooltip.js"></script>
|
||||
<script src="/lib/bootstrap-popover.js"></script>
|
||||
<script src="/lib/jquery-1.10.2.min.js"></script>
|
||||
<script src="/lib/jQuery.Gantt/js/jquery.fn.gantt.min.js"></script>
|
||||
|
||||
<!-- From server -->
|
||||
<script src="/issues.js"></script>
|
||||
|
@ -41,13 +38,6 @@
|
|||
<script>
|
||||
$(function() {
|
||||
"use strict";
|
||||
|
||||
$("#refresh-button").on("click", function () {
|
||||
$.ajax('/trigger_refresh', {
|
||||
success: function () { window.location.reload(); }
|
||||
});
|
||||
});
|
||||
|
||||
Planning.init();
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -1,114 +0,0 @@
|
|||
/* ===========================================================
|
||||
* bootstrap-popover.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#popovers
|
||||
* ===========================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* =========================================================== */
|
||||
|
||||
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
|
||||
/* POPOVER PUBLIC CLASS DEFINITION
|
||||
* =============================== */
|
||||
|
||||
var Popover = function (element, options) {
|
||||
this.init('popover', element, options)
|
||||
}
|
||||
|
||||
|
||||
/* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
|
||||
========================================== */
|
||||
|
||||
Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
|
||||
|
||||
constructor: Popover
|
||||
|
||||
, setContent: function () {
|
||||
var $tip = this.tip()
|
||||
, title = this.getTitle()
|
||||
, content = this.getContent()
|
||||
|
||||
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
|
||||
$tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
|
||||
|
||||
$tip.removeClass('fade top bottom left right in')
|
||||
}
|
||||
|
||||
, hasContent: function () {
|
||||
return this.getTitle() || this.getContent()
|
||||
}
|
||||
|
||||
, getContent: function () {
|
||||
var content
|
||||
, $e = this.$element
|
||||
, o = this.options
|
||||
|
||||
content = $e.attr('data-content')
|
||||
|| (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
|
||||
|
||||
return content
|
||||
}
|
||||
|
||||
, tip: function () {
|
||||
if (!this.$tip) {
|
||||
this.$tip = $(this.options.template)
|
||||
}
|
||||
return this.$tip
|
||||
}
|
||||
|
||||
, destroy: function () {
|
||||
this.hide().$element.off('.' + this.type).removeData(this.type)
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
|
||||
/* POPOVER PLUGIN DEFINITION
|
||||
* ======================= */
|
||||
|
||||
var old = $.fn.popover
|
||||
|
||||
$.fn.popover = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('popover')
|
||||
, options = typeof option == 'object' && option
|
||||
if (!data) $this.data('popover', (data = new Popover(this, options)))
|
||||
if (typeof option == 'string') data[option]()
|
||||
})
|
||||
}
|
||||
|
||||
$.fn.popover.Constructor = Popover
|
||||
|
||||
$.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
|
||||
placement: 'right'
|
||||
, trigger: 'click'
|
||||
, content: ''
|
||||
, template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"></div></div></div>'
|
||||
})
|
||||
|
||||
|
||||
/* POPOVER NO CONFLICT
|
||||
* =================== */
|
||||
|
||||
$.fn.popover.noConflict = function () {
|
||||
$.fn.popover = old
|
||||
return this
|
||||
}
|
||||
|
||||
}(window.jQuery);
|
|
@ -1,287 +0,0 @@
|
|||
/* ===========================================================
|
||||
* bootstrap-tooltip.js v2.2.2
|
||||
* http://twitter.github.com/bootstrap/javascript.html#tooltips
|
||||
* Inspired by the original jQuery.tipsy by Jason Frame
|
||||
* ===========================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ========================================================== */
|
||||
|
||||
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
|
||||
/* TOOLTIP PUBLIC CLASS DEFINITION
|
||||
* =============================== */
|
||||
|
||||
var Tooltip = function (element, options) {
|
||||
this.init('tooltip', element, options)
|
||||
}
|
||||
|
||||
Tooltip.prototype = {
|
||||
|
||||
constructor: Tooltip
|
||||
|
||||
, init: function (type, element, options) {
|
||||
var eventIn
|
||||
, eventOut
|
||||
|
||||
this.type = type
|
||||
this.$element = $(element)
|
||||
this.options = this.getOptions(options)
|
||||
this.enabled = true
|
||||
|
||||
if (this.options.trigger == 'click') {
|
||||
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
|
||||
} else if (this.options.trigger != 'manual') {
|
||||
eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
|
||||
eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
|
||||
this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
|
||||
this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
|
||||
}
|
||||
|
||||
this.options.selector ?
|
||||
(this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
|
||||
this.fixTitle()
|
||||
}
|
||||
|
||||
, getOptions: function (options) {
|
||||
options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
|
||||
|
||||
if (options.delay && typeof options.delay == 'number') {
|
||||
options.delay = {
|
||||
show: options.delay
|
||||
, hide: options.delay
|
||||
}
|
||||
}
|
||||
|
||||
return options
|
||||
}
|
||||
|
||||
, enter: function (e) {
|
||||
var self = $(e.currentTarget)[this.type](this._options).data(this.type)
|
||||
|
||||
if (!self.options.delay || !self.options.delay.show) return self.show()
|
||||
|
||||
clearTimeout(this.timeout)
|
||||
self.hoverState = 'in'
|
||||
this.timeout = setTimeout(function() {
|
||||
if (self.hoverState == 'in') self.show()
|
||||
}, self.options.delay.show)
|
||||
}
|
||||
|
||||
, leave: function (e) {
|
||||
var self = $(e.currentTarget)[this.type](this._options).data(this.type)
|
||||
|
||||
if (this.timeout) clearTimeout(this.timeout)
|
||||
if (!self.options.delay || !self.options.delay.hide) return self.hide()
|
||||
|
||||
self.hoverState = 'out'
|
||||
this.timeout = setTimeout(function() {
|
||||
if (self.hoverState == 'out') self.hide()
|
||||
}, self.options.delay.hide)
|
||||
}
|
||||
|
||||
, show: function () {
|
||||
var $tip
|
||||
, inside
|
||||
, pos
|
||||
, actualWidth
|
||||
, actualHeight
|
||||
, placement
|
||||
, tp
|
||||
|
||||
if (this.hasContent() && this.enabled) {
|
||||
$tip = this.tip()
|
||||
this.setContent()
|
||||
|
||||
if (this.options.animation) {
|
||||
$tip.addClass('fade')
|
||||
}
|
||||
|
||||
placement = typeof this.options.placement == 'function' ?
|
||||
this.options.placement.call(this, $tip[0], this.$element[0]) :
|
||||
this.options.placement
|
||||
|
||||
inside = /in/.test(placement)
|
||||
|
||||
$tip
|
||||
.detach()
|
||||
.css({ top: 0, left: 0, display: 'block' })
|
||||
.insertAfter(this.$element)
|
||||
|
||||
pos = this.getPosition(inside)
|
||||
|
||||
actualWidth = $tip[0].offsetWidth
|
||||
actualHeight = $tip[0].offsetHeight
|
||||
|
||||
switch (inside ? placement.split(' ')[1] : placement) {
|
||||
case 'bottom':
|
||||
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
|
||||
break
|
||||
case 'top':
|
||||
tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
|
||||
break
|
||||
case 'left':
|
||||
tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
|
||||
break
|
||||
case 'right':
|
||||
tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
|
||||
break
|
||||
}
|
||||
|
||||
$tip
|
||||
.offset(tp)
|
||||
.addClass(placement)
|
||||
.addClass('in')
|
||||
}
|
||||
}
|
||||
|
||||
, setContent: function () {
|
||||
var $tip = this.tip()
|
||||
, title = this.getTitle()
|
||||
|
||||
$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
|
||||
$tip.removeClass('fade in top bottom left right')
|
||||
}
|
||||
|
||||
, hide: function () {
|
||||
var that = this
|
||||
, $tip = this.tip()
|
||||
|
||||
$tip.removeClass('in')
|
||||
|
||||
function removeWithAnimation() {
|
||||
var timeout = setTimeout(function () {
|
||||
$tip.off($.support.transition.end).detach()
|
||||
}, 500)
|
||||
|
||||
$tip.one($.support.transition.end, function () {
|
||||
clearTimeout(timeout)
|
||||
$tip.detach()
|
||||
})
|
||||
}
|
||||
|
||||
$.support.transition && this.$tip.hasClass('fade') ?
|
||||
removeWithAnimation() :
|
||||
$tip.detach()
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
, fixTitle: function () {
|
||||
var $e = this.$element
|
||||
if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
|
||||
$e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
|
||||
}
|
||||
}
|
||||
|
||||
, hasContent: function () {
|
||||
return this.getTitle()
|
||||
}
|
||||
|
||||
, getPosition: function (inside) {
|
||||
return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
|
||||
width: this.$element[0].offsetWidth
|
||||
, height: this.$element[0].offsetHeight
|
||||
})
|
||||
}
|
||||
|
||||
, getTitle: function () {
|
||||
var title
|
||||
, $e = this.$element
|
||||
, o = this.options
|
||||
|
||||
title = $e.attr('data-original-title')
|
||||
|| (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
|
||||
|
||||
return title
|
||||
}
|
||||
|
||||
, tip: function () {
|
||||
return this.$tip = this.$tip || $(this.options.template)
|
||||
}
|
||||
|
||||
, validate: function () {
|
||||
if (!this.$element[0].parentNode) {
|
||||
this.hide()
|
||||
this.$element = null
|
||||
this.options = null
|
||||
}
|
||||
}
|
||||
|
||||
, enable: function () {
|
||||
this.enabled = true
|
||||
}
|
||||
|
||||
, disable: function () {
|
||||
this.enabled = false
|
||||
}
|
||||
|
||||
, toggleEnabled: function () {
|
||||
this.enabled = !this.enabled
|
||||
}
|
||||
|
||||
, toggle: function (e) {
|
||||
var self = $(e.currentTarget)[this.type](this._options).data(this.type)
|
||||
self[self.tip().hasClass('in') ? 'hide' : 'show']()
|
||||
}
|
||||
|
||||
, destroy: function () {
|
||||
this.hide().$element.off('.' + this.type).removeData(this.type)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* TOOLTIP PLUGIN DEFINITION
|
||||
* ========================= */
|
||||
|
||||
var old = $.fn.tooltip
|
||||
|
||||
$.fn.tooltip = function ( option ) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('tooltip')
|
||||
, options = typeof option == 'object' && option
|
||||
if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
|
||||
if (typeof option == 'string') data[option]()
|
||||
})
|
||||
}
|
||||
|
||||
$.fn.tooltip.Constructor = Tooltip
|
||||
|
||||
$.fn.tooltip.defaults = {
|
||||
animation: true
|
||||
, placement: 'top'
|
||||
, selector: false
|
||||
, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
|
||||
, trigger: 'hover'
|
||||
, title: ''
|
||||
, delay: 0
|
||||
, html: false
|
||||
}
|
||||
|
||||
|
||||
/* TOOLTIP NO CONFLICT
|
||||
* =================== */
|
||||
|
||||
$.fn.tooltip.noConflict = function () {
|
||||
$.fn.tooltip = old
|
||||
return this
|
||||
}
|
||||
|
||||
}(window.jQuery);
|
|
@ -0,0 +1,23 @@
|
|||
[Demo and Documentation](http://taitems.github.com/jQuery.Gantt/)
|
||||
==============
|
||||
|
||||
jQuery Gantt Chart is a simple chart that implements gantt functionality as
|
||||
a jQuery component.
|
||||
|
||||
It's able to:
|
||||
|
||||
- Read json data
|
||||
- Paging results
|
||||
- Display different colours for each task
|
||||
- Display short description as hints
|
||||
- Mark holidays
|
||||
|
||||
Plugin was tested and should work on:
|
||||
|
||||
- Firefox 4+
|
||||
- Chrome 13+
|
||||
- Safari 5+
|
||||
- Opera 9+
|
||||
- IE 8+
|
||||
|
||||
Distributed under an MIT license.
|
|
@ -0,0 +1,426 @@
|
|||
.gantt, .gantt2 {
|
||||
width: 100%;
|
||||
margin: 20px auto;
|
||||
border: 14px solid #ddd;
|
||||
position: relative;
|
||||
-webkit-border-radius: 6px;
|
||||
-moz-border-radius: 6px;
|
||||
border-radius: 6px;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.gantt:after {
|
||||
content: ".";
|
||||
visibility: hidden;
|
||||
display: block;
|
||||
height: 0;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.fn-gantt {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.fn-gantt .fn-content {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* === LEFT PANEL === */
|
||||
|
||||
.fn-gantt .leftPanel {
|
||||
float: left;
|
||||
width: 225px;
|
||||
overflow: hidden;
|
||||
border-right: 1px solid #DDD;
|
||||
position: relative;
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
.fn-gantt .row {
|
||||
float: left;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
margin-left: -1px;
|
||||
}
|
||||
|
||||
.fn-gantt .leftPanel .fn-label {
|
||||
display: inline-block;
|
||||
margin: 0 0 0 5px;
|
||||
color: #484A4D;
|
||||
width: 110px;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.fn-gantt .leftPanel .row0 {
|
||||
border-top: 1px solid #DDD;
|
||||
}
|
||||
.fn-gantt .leftPanel .name, .fn-gantt .leftPanel .desc {
|
||||
float: left;
|
||||
height: 23px;
|
||||
margin: 0;
|
||||
border-bottom: 1px solid #DDD;
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
|
||||
.fn-gantt .leftPanel .name {
|
||||
width: 110px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.fn-gantt .leftPanel .desc {
|
||||
width: 115px;
|
||||
}
|
||||
|
||||
.fn-gantt .leftPanel .fn-wide, .fn-gantt .leftPanel .fn-wide .fn-label {
|
||||
width: 225px;
|
||||
}
|
||||
|
||||
.fn-gantt .spacer {
|
||||
margin: -2px 0 1px 0;
|
||||
border-bottom: none;
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* === RIGHT PANEL === */
|
||||
|
||||
.fn-gantt .rightPanel {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.fn-gantt .dataPanel {
|
||||
margin-left: 0px;
|
||||
border-right: 1px solid #DDD;
|
||||
background-image: url(../img/grid.png);
|
||||
background-repeat: repeat;
|
||||
background-position: 24px 24px;
|
||||
}
|
||||
.fn-gantt .day, .fn-gantt .date {
|
||||
overflow: visible;
|
||||
width: 24px;
|
||||
line-height: 24px;
|
||||
text-align: center;
|
||||
border-left: 1px solid #DDD;
|
||||
border-bottom: 1px solid #DDD;
|
||||
margin: -1px 0 0 -1px;
|
||||
font-size: 11px;
|
||||
color: #484a4d;
|
||||
text-shadow: 0 1px 0 rgba(255,255,255,0.75);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fn-gantt .holiday {
|
||||
background-color: #ffd263;
|
||||
height: 23px;
|
||||
margin: 0 0 -1px -1px;
|
||||
}
|
||||
|
||||
.fn-gantt .today {
|
||||
background-color: #fff8da;
|
||||
height: 23px;
|
||||
margin: 0 0 -1px -1px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fn-gantt .sa, .fn-gantt .sn, .fn-gantt .wd {
|
||||
height: 23px;
|
||||
margin: 0 0 0 -1px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fn-gantt .sa, .fn-gantt .sn {
|
||||
color: #939496;
|
||||
background-color: #f5f5f5;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fn-gantt .wd {
|
||||
background-color: #f6f6f6;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fn-gantt .rightPanel .month, .fn-gantt .rightPanel .year {
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
border-left: 1px solid #DDD;
|
||||
border-bottom: 1px solid #DDD;
|
||||
height: 23px;
|
||||
margin: 0 0 0 -1px;
|
||||
background-color: #f6f6f6;
|
||||
font-weight: bold;
|
||||
font-size: 11px;
|
||||
color: #484a4d;
|
||||
text-shadow: 0 1px 0 rgba(255,255,255,0.75);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fn-gantt-hint {
|
||||
border: 5px solid #edc332;
|
||||
background-color: #fff5d4;
|
||||
padding: 10px;
|
||||
position: absolute;
|
||||
display: none;
|
||||
z-index: 11;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.fn-gantt .bar {
|
||||
background-color: #D0E4FD;
|
||||
height: 18px;
|
||||
margin: 4px 3px 3px 3px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
text-align: center;
|
||||
-webkit-box-shadow: 0 0 1px rgba(0,0,0,0.25) inset;
|
||||
-moz-box-shadow: 0 0 1px rgba(0,0,0,0.25) inset;
|
||||
box-shadow: 0 0 1px rgba(0,0,0,0.25) inset;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.fn-gantt .bar .fn-label {
|
||||
line-height: 18px;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
text-shadow: 0 1px 0 rgba(255,255,255,0.4);
|
||||
color: #414B57 !important;
|
||||
text-align: center;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.fn-gantt .ganttRed {
|
||||
background-color: #F9C4E1;
|
||||
}
|
||||
.fn-gantt .ganttRed .fn-label {
|
||||
color: #78436D !important;
|
||||
}
|
||||
|
||||
.fn-gantt .ganttGreen {
|
||||
background-color: #D8EDA3;
|
||||
}
|
||||
.fn-gantt .ganttGreen .fn-label {
|
||||
color: #778461 !important;
|
||||
}
|
||||
|
||||
.fn-gantt .ganttOrange {
|
||||
background-color: #FCD29A;
|
||||
}
|
||||
.fn-gantt .ganttOrange .fn-label {
|
||||
color: #714715 !important;
|
||||
}
|
||||
|
||||
|
||||
/* === BOTTOM NAVIGATION === */
|
||||
|
||||
.fn-gantt .bottom {
|
||||
clear: both;
|
||||
background-color: #f6f6f6;
|
||||
width: 100%;
|
||||
}
|
||||
.fn-gantt .navigate {
|
||||
border-top: 1px solid #DDD;
|
||||
padding: 10px 0 10px 225px;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-slider {
|
||||
height: 20px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-slider-left, .fn-gantt .navigate .nav-slider-right {
|
||||
text-align: center;
|
||||
height: 20px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-slider-left {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-slider-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-slider-content {
|
||||
text-align: left;
|
||||
width: 160px;
|
||||
height: 20px;
|
||||
display: inline-block;
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-slider-bar, .fn-gantt .navigate .nav-slider-button {
|
||||
position: absolute;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-slider-bar {
|
||||
width: 155px;
|
||||
height: 6px;
|
||||
background-color: #838688;
|
||||
margin: 8px 0 0 0;
|
||||
-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.6) inset;
|
||||
-moz-box-shadow: 0 1px 3px rgba(0,0,0,0.6) inset;
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,0.6) inset;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-slider-button {
|
||||
width: 17px;
|
||||
height: 60px;
|
||||
background: url(../img/slider_handle.png) center center no-repeat;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
margin: -26px 0 0 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .page-number {
|
||||
display: inline-block;
|
||||
font-size: 10px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .page-number span {
|
||||
color: #666666;
|
||||
margin: 0 6px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate a:link, .fn-gantt .navigate a:visited, .fn-gantt .navigate a:active {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.fn-gantt .nav-link {
|
||||
margin: 0 3px 0 0;
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
font-size: 0px;
|
||||
background: #595959 url(../img/icon_sprite.png) !important;
|
||||
border: 1px solid #454546;
|
||||
cursor: pointer;
|
||||
vertical-align: top;
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
-webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.1) inset, 0 1px 1px rgba(0,0,0,0.2);
|
||||
-moz-box-shadow: 0 1px 0 rgba(255,255,255,0.1) inset, 0 1px 1px rgba(0,0,0,0.2);
|
||||
box-shadow: 0 1px 0 rgba(255,255,255,0.1) inset, 0 1px 1px rgba(0,0,0,0.2);
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.fn-gantt .nav-link:active {
|
||||
-webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.25) inset, 0 1px 0 #FFF;
|
||||
-moz-box-shadow: 0 1px 1px rgba(0,0,0,0.25) inset, 0 1px 0 #FFF;
|
||||
box-shadow: 0 1px 1px rgba(0,0,0,0.25) inset, 0 1px 0 #FFF;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-page-back {
|
||||
background-position: 1px 0 !important;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-page-next {
|
||||
background-position: 1px -16px !important;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-slider .nav-page-next {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-begin {
|
||||
background-position: 1px -112px !important;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-prev-week {
|
||||
background-position: 1px -128px !important;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-prev-day {
|
||||
background-position: 1px -48px !important;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-next-day {
|
||||
background-position: 1px -64px !important;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-next-week {
|
||||
background-position: 1px -160px !important;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-end {
|
||||
background-position: 1px -144px !important;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-zoomOut {
|
||||
background-position: 1px -96px !important;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-zoomIn {
|
||||
background-position: 1px -80px !important;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-now {
|
||||
background-position: 1px -32px !important;
|
||||
}
|
||||
|
||||
.fn-gantt .navigate .nav-slider .nav-now {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.fn-gantt-loader {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bf000000', endColorstr='#bf000000',GradientType=0 );
|
||||
background: rgba(0,0,0,0.75);
|
||||
z-index: 30;
|
||||
}
|
||||
.fn-gantt-loader-spinner span {
|
||||
position: absolute;
|
||||
margin: auto;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
height: 1em;
|
||||
line-height: 1em;
|
||||
color: #fff;
|
||||
font-size: 1em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.row:after {
|
||||
clear: both;
|
||||
}
|
||||
|
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 96 B |
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 808 B |
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 817 B |
|
@ -0,0 +1,16 @@
|
|||
[{ "name": " Planning ","desc": "Inception","values": [{"from": "/Date(1320192000000)/", "to": "/Date(1321401600000)/", "desc": "Id: 1<br/>Name: Planning <br/>Date: 2011-11-02 to 2011-11-16", "label": " Planni...", "customClass": "ganttRed"}]},
|
||||
{ "name": " Gathering requirements ","desc": "Inception","values": [{"from": "/Date(1321401600000)/", "to": "/Date(1322870400000)/", "desc": "Id: 2<br/>Name: Gathering requirements <br/>Date: 2011-11-16 to 2011-12-03", "label": " Gather...", "customClass": "ganttGreen"}]},
|
||||
{ "name": " Determine scope ","desc": "Inception","values": [{"from": "/Date(1322611200000)/", "to": "/Date(1323302400000)/", "desc": "Id: 3<br/>Name: Determine scope <br/>Date: 2011-11-30 to 2011-12-08", "label": " Determ...", "customClass": "ganttOrange"}]},
|
||||
{ "name": " Analysis and design ","desc": "Iteration 1","values": [{"from": "/Date(1323302400000)/", "to": "/Date(1324684800000)/", "desc": "Id: 4<br/>Name: Analysis and design <br/>Date: 2011-12-08 to 2011-12-24", "label": " Analys..."}]},
|
||||
{ "name": " Implementation ","desc": "Iteration 1","values": [{"from": "/Date(1324857600000)/", "to": "/Date(1326758400000)/", "desc": "Id: 5<br/>Name: Implementation <br/>Date: 2011-12-26 to 2012-01-17", "label": " Implem...", "customClass": "ganttRed"}]},
|
||||
{ "name": " Deliver prototype ","desc": "Iteration 1","values": [{"from": "/Date(1326758400000)/", "to": "/Date(1326844800000)/", "desc": "Id: 6<br/>Name: Deliver prototype <br/>Date: 2012-01-17 to 2012-01-18", "label": " Delive...", "customClass": "ganttGreen"}]},
|
||||
{ "name": " Testing ","desc": "Iteration 1","values": [{"from": "/Date(1326844800000)/", "to": "/Date(1328659200000)/", "desc": "Id: 7<br/>Name: Testing <br/>Date: 2012-01-18 to 2012-02-08", "label": " Testin...", "customClass": "ganttOrange"}]},
|
||||
{ "name": " Review and evaluation ","desc": "Iteration 1","values": [{"from": "/Date(1328659200000)/", "to": "/Date(1328832000000)/", "desc": "Id: 8<br/>Name: Review and evaluation <br/>Date: 2012-02-08 to 2012-02-10", "label": " Review..."}]},
|
||||
{ "name": " Analysis and enhancement of design ","desc": "Iteration 2","values": [{"from": "/Date(1328832000000)/", "to": "/Date(1329868800000)/", "desc": "Id: 9<br/>Name: Analysis and enhancement of design <br/>Date: 2012-02-10 to 2012-02-22", "label": " Analys...", "customClass": "ganttRed"}]},
|
||||
{ "name": " Implementation (enhancement of prototype)","desc": "Iteration 2","values": [{"from": "/Date(1329868800000)/", "to": "/Date(1331337600000)/", "desc": "Id: 10<br/>Name: Implementation (enhancement of prototype)<br/>Date: 2012-02-22 to 2012-03-10", "label": " Implem...", "customClass": "ganttGreen"}]},
|
||||
{ "name": " Deliver prototype ","desc": "Iteration 2","values": [{"from": "/Date(1331510400000)/", "to": "/Date(1331596800000)/", "desc": "Id: 11<br/>Name: Deliver prototype <br/>Date: 2012-03-12 to 2012-03-13", "label": " Delive...", "customClass": "ganttOrange"}]},
|
||||
{ "name": " Testing ","desc": "Iteration 2","values": [{"from": "/Date(1331596800000)/", "to": "/Date(1332547200000)/", "desc": "Id: 12<br/>Name: Testing <br/>Date: 2012-03-13 to 2012-03-24", "label": " Testin...", "customClass": "ganttRed"}]},
|
||||
{ "name": " Review and evaluation ","desc": "Iteration 2","values": [{"from": "/Date(1332720000000)/", "to": "/Date(1332892800000)/", "desc": "Id: 13<br/>Name: Review and evaluation <br/>Date: 2012-03-26 to 2012-03-28", "label": " Review...", "customClass": "ganttGreen"}]},
|
||||
{ "name": " Finalising ","desc": "Finalization","values": [{"from": "/Date(1332892800000)/", "to": "/Date(1333065600000)/", "desc": "Id: 14<br/>Name: Finalising <br/>Date: 2012-03-28 to 2012-03-30", "label": " Finali...", "customClass": "ganttOrnage"}]},
|
||||
{ "name": " Deployment ","desc": "Finalization","values": [{"from": "/Date(1333065600000)/", "to": "/Date(1333411200000)/", "desc": "Id: 15<br/>Name: Deployment <br/>Date: 2012-03-30 to 2012-04-03", "label": " Deploy..."}]},
|
||||
{ "name": " Project review and evaluation ","desc": "Finalization","values": [{"from": "/Date(1333411200000)/", "to": "/Date(1333584000000)/", "desc": "Id: 16<br/>Name: Project review and evaluation <br/>Date: 2012-04-03 to 2012-04-05", "label": " Projec...", "customClass": "ganttRed"}]}]
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -0,0 +1,103 @@
|
|||
[{ "name": "Task#1",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296547200000)/", "to": "/Date(1296554400000)/", "desc": "<b>Task #</b>1<br><b>Data</b>: [2011-02-01 08:00:00 - 2011-02-01 10:00:00] ", "customClass": "ganttRed", "label": "Task #1"},
|
||||
{"from": "/Date(1296637200000)/", "to": "/Date(1296649800000)/", "desc": "<b>Task #</b>1<br><b>Data</b>: [2011-02-02 09:00:00 - 2011-02-02 12:30:00] ", "customClass": "ganttOrange", "label": "Task #1"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#2",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296554400000)/", "to": "/Date(1296568800000)/", "desc": "<b>Task #</b>2<br><b>Data</b>: [2011-02-01 10:00:00 - 2011-02-01 14:00:00] ", "customClass": "ganttRed", "label": "Task #2"},
|
||||
{"from": "/Date(1296653400000)/", "to": "/Date(1296658800000)/", "desc": "<b>Task #</b>2<br><b>Data</b>: [2011-02-02 13:30:00 - 2011-02-02 15:00:00] ", "customClass": "ganttGreen"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#3",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296574200000)/", "to": "/Date(1296576000000)/", "desc": "<b>Task #</b>3<br><b>Data</b>: [2011-02-01 15:30:00 - 2011-02-01 16:00:00] "},
|
||||
{"from": "/Date(1296655200000)/", "to": "/Date(1296662400000)/", "desc": "<b>Task #</b>3<br><b>Data</b>: [2011-02-02 14:00:00 - 2011-02-02 16:00:00] ", "customClass": "ganttOrange"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#4",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296633600000)/", "to": "/Date(1296646200000)/", "desc": "<b>Task #</b>4<br><b>Data</b>: [2011-02-02 08:00:00 - 2011-02-02 11:30:00] ", "label": "Task #4"},
|
||||
{"from": "/Date(1296720000000)/", "to": "/Date(1296730800000)/", "desc": "<b>Task #</b>4<br><b>Data</b>: [2011-02-03 08:00:00 - 2011-02-03 11:00:00] ", "customClass": "ganttGreen"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#5",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296646200000)/", "to": "/Date(1296651600000)/", "desc": "<b>Task #</b>5<br><b>Data</b>: [2011-02-02 11:30:00 - 2011-02-02 13:00:00] ", "label": "Task #5"},
|
||||
{"from": "/Date(1296727200000)/", "to": "/Date(1296741600000)/", "desc": "<b>Task #</b>5<br><b>Data</b>: [2011-02-03 10:00:00 - 2011-02-03 14:00:00] ", "customClass": "ganttRed", "label": "Task #5"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#6",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296651600000)/", "to": "/Date(1296662400000)/", "desc": "<b>Task #</b>6<br><b>Data</b>: [2011-02-02 13:00:00 - 2011-02-02 16:00:00] ", "customClass": "ganttGreen"},
|
||||
{"from": "/Date(1296716400000)/", "to": "/Date(1296725400000)/", "desc": "<b>Task #</b>6<br><b>Data</b>: [2011-02-03 07:00:00 - 2011-02-03 09:30:00] ", "customClass": "ganttOrange"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#7",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296662400000)/", "to": "/Date(1296669600000)/", "desc": "<b>Task #</b>7<br><b>Data</b>: [2011-02-02 16:00:00 - 2011-02-02 18:00:00] ", "label": "Task #7"},
|
||||
{"from": "/Date(1296748800000)/", "to": "/Date(1296756000000)/", "desc": "<b>Task #</b>7<br><b>Data</b>: [2011-02-03 16:00:00 - 2011-02-03 18:00:00] ", "customClass": "ganttGreen", "label": "Task #7"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#8",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296720000000)/", "to": "/Date(1296734400000)/", "desc": "<b>Task #</b>8<br><b>Data</b>: [2011-02-03 08:00:00 - 2011-02-03 12:00:00] ", "customClass": "ganttRed", "label": "Task #8"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#9",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296660600000)/", "to": "/Date(1296667800000)/", "desc": "<b>Task #</b>9<br><b>Data</b>: [2011-02-02 15:30:00 - 2011-02-02 17:30:00] ", "customClass": "ganttOrange"},
|
||||
{"from": "/Date(1296734400000)/", "to": "/Date(1296745200000)/", "desc": "<b>Task #</b>9<br><b>Data</b>: [2011-02-03 12:00:00 - 2011-02-03 15:00:00] ", "customClass": "ganttRed"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#10",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296745200000)/", "to": "/Date(1296752400000)/", "desc": "<b>Task #</b>10<br><b>Data</b>: [2011-02-03 15:00:00 - 2011-02-03 17:00:00] "}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#11",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296547200000)/", "to": "/Date(1296554400000)/", "desc": "<b>Task #</b>11<br><b>Data</b>: [2011-02-01 08:00:00 - 2011-02-01 10:00:00] "},
|
||||
{"from": "/Date(1296660600000)/", "to": "/Date(1296669600000)/", "desc": "<b>Task #</b>11<br><b>Data</b>: [2011-02-02 15:30:00 - 2011-02-02 18:00:00] ", "customClass": "ganttOrange"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#12",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296554400000)/", "to": "/Date(1296568800000)/", "desc": "<b>Task #</b>12<br><b>Data</b>: [2011-02-01 10:00:00 - 2011-02-01 14:00:00] ", "customClass": "ganttGreen"},
|
||||
{"from": "/Date(1296658800000)/", "to": "/Date(1296664200000)/", "desc": "<b>Task #</b>12<br><b>Data</b>: [2011-02-02 15:00:00 - 2011-02-02 16:30:00] ", "customClass": "ganttOrange"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#13",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296574200000)/", "to": "/Date(1296576000000)/", "desc": "<b>Task #</b>13<br><b>Data</b>: [2011-02-01 15:30:00 - 2011-02-01 16:00:00] "},
|
||||
{"from": "/Date(1296720000000)/", "to": "/Date(1296730800000)/", "desc": "<b>Task #</b>13<br><b>Data</b>: [2011-02-03 08:00:00 - 2011-02-03 11:00:00] ", "customClass": "ganttRed"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#14",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296543600000)/", "to": "/Date(1296550800000)/", "desc": "<b>Task #</b>14<br><b>Data</b>: [2011-02-01 07:00:00 - 2011-02-01 09:00:00] ", "customClass": "ganttOrange"},
|
||||
{"from": "/Date(1296633600000)/", "to": "/Date(1296646200000)/", "desc": "<b>Task #</b>14<br><b>Data</b>: [2011-02-02 08:00:00 - 2011-02-02 11:30:00] ", "customClass": "ganttGreen"}
|
||||
]
|
||||
},
|
||||
{ "name": "Task#15",
|
||||
"desc": "",
|
||||
"values": [
|
||||
{"from": "/Date(1296556200000)/", "to": "/Date(1296565200000)/", "desc": "<b>Task #</b>15<br><b>Data</b>: [2011-02-01 10:30:00 - 2011-02-01 13:00:00] ", "label": "Task #15"},
|
||||
{"from": "/Date(1296646200000)/", "to": "/Date(1296651600000)/", "desc": "<b>Task #</b>15<br><b>Data</b>: [2011-02-02 11:30:00 - 2011-02-02 13:00:00] ", "customClass": "ganttOrange", "label": "Task #15"}
|
||||
]
|
||||
}]
|
|
@ -0,0 +1,47 @@
|
|||
/*!
|
||||
* jQuery Cookie Plugin
|
||||
* https://github.com/carhartl/jquery-cookie
|
||||
*
|
||||
* Copyright 2011, Klaus Hartl
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.opensource.org/licenses/GPL-2.0
|
||||
*/
|
||||
(function ($) {
|
||||
$.cookie = function (key, value, options) {
|
||||
|
||||
// key and at least value given, set cookie...
|
||||
if (arguments.length > 1 && (!/Object/.test(Object.prototype.toString.call(value)) || value === null || value === undefined)) {
|
||||
options = $.extend({}, options);
|
||||
|
||||
if (value === null || value === undefined) {
|
||||
options.expires = -1;
|
||||
}
|
||||
|
||||
if (typeof options.expires === 'number') {
|
||||
var days = options.expires, t = options.expires = new Date();
|
||||
t.setDate(t.getDate() + days);
|
||||
}
|
||||
|
||||
value = String(value);
|
||||
|
||||
return (document.cookie = [
|
||||
encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value),
|
||||
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
|
||||
options.path ? '; path=' + options.path : '',
|
||||
options.domain ? '; domain=' + options.domain : '',
|
||||
options.secure ? '; secure' : ''
|
||||
].join(''));
|
||||
}
|
||||
|
||||
// key and possibly options given, get cookie...
|
||||
options = value || {};
|
||||
var decode = options.raw ? function (s) { return s; } : decodeURIComponent;
|
||||
|
||||
var pairs = document.cookie.split('; ');
|
||||
for (var i = 0, pair; pair = pairs[i] && pairs[i].split('='); i++) {
|
||||
if (decode(pair[0]) === key) return decode(pair[1] || ''); // IE saves cookies with empty string as "c; ", e.g. without "=" as opposed to EOMB, thus pair[1] may be undefined
|
||||
}
|
||||
return null;
|
||||
};
|
||||
})(jQuery);
|
494
public/lib/jquery.fn.gantt.js → public/lib/jQuery.Gantt/js/jquery.fn.gantt.js
поставляемый
Normal file → Executable file
494
public/lib/jquery.fn.gantt.js → public/lib/jQuery.Gantt/js/jquery.fn.gantt.js
поставляемый
Normal file → Executable file
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -324,6 +324,13 @@ var Planning = {
|
|||
|
||||
init: function () {
|
||||
|
||||
|
||||
$("#refresh-button").on("click", function () {
|
||||
$.ajax('/trigger_refresh', {
|
||||
success: function () { window.location.reload(); }
|
||||
});
|
||||
});
|
||||
|
||||
// Index milestones by id & add milestone issues
|
||||
milestones.forEach(function(ghAttributes) {
|
||||
if(config.excludedMilestones.indexOf(ghAttributes.title) == -1) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче