author | rougeronj |
Tue, 20 Jan 2015 12:00:40 +0100 | |
changeset 99 | 9d968fbcaa2a |
parent 92 | a323578ea954 |
permissions | -rw-r--r-- |
91 | 1 |
/** |
2 |
* js/generalView |
|
3 |
* |
|
4 |
* generalView basic component |
|
5 |
* |
|
6 |
*/ |
|
7 |
||
8 |
'use strict'; |
|
9 |
||
10 |
var PIXI = require('pixi'); |
|
11 |
var randomColor = require('randomColor'); |
|
99
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
12 |
var rgb2hex = require('./utils'); |
91 | 13 |
|
99
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
14 |
function GeneralView(parentContainer, xInit, yInit, width, height, timeBegin, timeEnd, intervalWidth, intervalHeight, maxCellHeight, categories){ |
91 | 15 |
var _this = this; |
16 |
this.container = new PIXI.DisplayObjectContainer(); |
|
17 |
this.container.position.x = xInit; |
|
18 |
this.container.position.y = yInit; |
|
19 |
this.container.width = width; |
|
20 |
this.container.height = height; |
|
21 |
parentContainer.addChild(this.container); |
|
22 |
|
|
92
a323578ea954
generalview take interval in pixel as argument (not time anymore)
rougeronj
parents:
91
diff
changeset
|
23 |
this.timeBegin = timeBegin; |
a323578ea954
generalview take interval in pixel as argument (not time anymore)
rougeronj
parents:
91
diff
changeset
|
24 |
this.timeEnd = timeEnd; |
a323578ea954
generalview take interval in pixel as argument (not time anymore)
rougeronj
parents:
91
diff
changeset
|
25 |
this.duration = (timeEnd - timeBegin)/1000 |
91 | 26 |
this.width = width; |
27 |
this.height = height; |
|
99
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
28 |
this.intervalHeight = intervalHeight; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
29 |
this.intervalWidth = intervalWidth; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
30 |
this.maxCellHeight = maxCellHeight; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
31 |
this.intervalDuration = (intervalWidth*this.duration/width); |
91 | 32 |
|
99
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
33 |
|
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
34 |
//Initialise the list of step |
91 | 35 |
//each cell will contain the list categories and the number of annotations per categories |
36 |
this.cells = [] |
|
99
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
37 |
for (var i=0; i<(width/intervalWidth) ; i++){ |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
38 |
this.cells[i] = []; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
39 |
this.cells[i].x = i * this.intervalWidth; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
40 |
this.cells[i].totalAnnots = 0; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
41 |
this.cells[i].graphics = new PIXI.Graphics(); |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
42 |
this.container.addChild(this.cells[i].graphics); |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
43 |
this.cells[i].categories = {}; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
44 |
|
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
45 |
for (var category in categories){ |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
46 |
this.cells[i].categories[category] = { |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
47 |
"count": 0, |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
48 |
"color": categories[category] |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
49 |
}; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
50 |
} |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
51 |
} |
91 | 52 |
// draw temp line to locate the middle of the container |
53 |
var graphics = new PIXI.Graphics(); |
|
99
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
54 |
graphics.beginFill(0x000000) |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
55 |
.lineStyle(1, 0x000000) |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
56 |
.moveTo(xInit, (-this.height/2) ) |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
57 |
.lineTo(this.width, (-this.height/2)) |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
58 |
.endFill(); |
91 | 59 |
this.container.addChild(graphics); |
60 |
||
99
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
61 |
//Add Annotation to the TimeLine |
91 | 62 |
this.addAnnot = function(category, time){ |
99
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
63 |
console.log(this.timeEnd); |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
64 |
console.log(time); |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
65 |
if (this.timeEnd < time){ |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
66 |
return; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
67 |
} |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
68 |
var i = Math.floor((time-this.timeBegin)/(1000*this.intervalDuration)); |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
69 |
this.cells[i].categories[category].count += 1; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
70 |
this.cells[i].totalAnnots +=1; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
71 |
this.redrawCell(this.cells[i]); |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
72 |
}; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
73 |
|
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
74 |
//Draw the cellule |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
75 |
this.redrawCell = function(cell){ |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
76 |
var x = cell.x; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
77 |
var y = -this.height/2; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
78 |
cell.graphics.clear(); |
91 | 79 |
|
99
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
80 |
//Check if total height is higher than Max Cell Height |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
81 |
if ((cell.totalAnnots*this.intervalHeight) > this.maxCellHeight){ |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
82 |
var heightStep = this.maxCellHeight/cell.totalAnnots; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
83 |
} else { |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
84 |
var heightStep = this.intervalHeight; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
85 |
} |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
86 |
//Draw the rect depending on the height step calculated |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
87 |
for (var category in cell.categories){ |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
88 |
cell.graphics.beginFill(cell.categories[category].color) |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
89 |
.drawRect(x, y, this.intervalWidth, -cell.categories[category].count * heightStep) |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
90 |
.endFill(); |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
91 |
y -= cell.categories[category].count*heightStep; |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
92 |
} |
9d968fbcaa2a
Add General Time Line + minor change in annotsRoll
rougeronj
parents:
92
diff
changeset
|
93 |
} |
91 | 94 |
} |
95 |
||
96 |
module.exports = GeneralView; |