Вход Регистрация
Файл: templates/backend/default/assets/plugins/jquery-ricksaw-chart/js/Rickshaw.Graph.Annotate.js
Строк: 247
<?php
Rickshaw
.namespace('Rickshaw.Graph.Annotate');

Rickshaw.Graph.Annotate = function(args) {

    var 
graph this.graph args.graph;
    
this.elements = { timelineargs.element };
    
    var 
self this;

    
this.data = {};

    
this.elements.timeline.classList.add('rickshaw_annotation_timeline');

    
this.add = function(timecontentend_time) {
        
self.data[time] = self.data[time] || {'boxes': []};
        
self.data[time].boxes.push({contentcontentendend_time});
    };

    
this.update = function() {

        
Rickshaw.keys(self.data).forEach( function(time) {

            var 
annotation self.data[time];
            var 
left self.graph.x(time);

            if (
left || left self.graph.x.range()[1]) {
                if (
annotation.element) {
                    
annotation.line.classList.add('offscreen');
                    
annotation.element.style.display 'none';
                }

                
annotation.boxes.forEach( function(box) {
                    if ( 
box.rangeElement box.rangeElement.classList.add('offscreen');
                });

                return;
            }

            if (!
annotation.element) {
                var 
element annotation.element document.createElement('div');
                
element.classList.add('annotation');
                
this.elements.timeline.appendChild(element);
                
element.addEventListener('click', function(e) {
                    
element.classList.toggle('active');
                    
annotation.line.classList.toggle('active');
                    
annotation.boxes.forEach( function(box) {
                        if ( 
box.rangeElement box.rangeElement.classList.toggle('active');
                    });
                }, 
false);
                    
            }

            
annotation.element.style.left left 'px';
            
annotation.element.style.display 'block';

            
annotation.boxes.forEach( function(box) {


                var 
element box.element;

                if (!
element) {
                    
element box.element document.createElement('div');
                    
element.classList.add('content');
                    
element.innerHTML box.content;
                    
annotation.element.appendChild(element);

                    
annotation.line document.createElement('div');
                    
annotation.line.classList.add('annotation_line');
                    
self.graph.element.appendChild(annotation.line);

                    if ( 
box.end ) {
                        
box.rangeElement document.createElement('div');
                        
box.rangeElement.classList.add('annotation_range');
                        
self.graph.element.appendChild(box.rangeElement);
                    }

                }

                if ( 
box.end ) {

                    var 
annotationRangeStart left;
                    var 
annotationRangeEnd   Math.minself.graph.x(box.end), self.graph.x.range()[1] );

                    
// annotation makes more sense at end
                    
if ( annotationRangeStart annotationRangeEnd ) {
                        
annotationRangeEnd   left;
                        
annotationRangeStart Math.maxself.graph.x(box.end), self.graph.x.range()[0] );
                    }

                    var 
annotationRangeWidth annotationRangeEnd annotationRangeStart;

                    
box.rangeElement.style.left  annotationRangeStart 'px';
                    
box.rangeElement.style.width annotationRangeWidth 'px';

                    
box.rangeElement.classList.remove('offscreen');
                }

                
annotation.line.classList.remove('offscreen');
                
annotation.line.style.left left 'px';
            } );
        }, 
this );
    };

    
this.graph.onUpdate( function() { self.update() } );
};
?>
Онлайн: 2
Реклама