Browse Source

Implemented field `style` for both items and groups, to set a custom style for individual items.

v3_develop
jos 10 years ago
parent
commit
807921b3cb
5 changed files with 43 additions and 13 deletions
  1. +2
    -0
      HISTORY.md
  2. +22
    -3
      docs/timeline.html
  3. +10
    -0
      lib/timeline/component/Group.js
  4. +7
    -7
      lib/timeline/component/item/Item.js
  5. +2
    -3
      test/timeline.html

+ 2
- 0
HISTORY.md View File

@ -17,6 +17,8 @@ http://visjs.org
### Timeline ### Timeline
- Implemented field `style` for both items and groups, to set a custom style for
individual items.
- Fixed height of BackgroundItems not being 100% when timeline has a fixed height. - Fixed height of BackgroundItems not being 100% when timeline has a fixed height.
- Fixed width of BackgroundItems not being reduced to 0 when zooming out. - Fixed width of BackgroundItems not being reduced to 0 when zooming out.

+ 22
- 3
docs/timeline.html View File

@ -149,7 +149,8 @@ The constructor accepts four parameters:
The Timeline uses regular Arrays and Objects as data format. The Timeline uses regular Arrays and Objects as data format.
Data items can contain the properties <code>start</code>, Data items can contain the properties <code>start</code>,
<code>end</code> (optional), <code>content</code>, <code>end</code> (optional), <code>content</code>,
<code>group</code> (optional), and <code>className</code> (optional).
<code>group</code> (optional), <code>className</code> (optional),
and <code>style</code> (optional).
</p> </p>
<p> <p>
@ -162,7 +163,7 @@ var items = [
start: new Date(2010, 7, 15), start: new Date(2010, 7, 15),
end: new Date(2010, 8, 2), // end is optional end: new Date(2010, 8, 2), // end is optional
content: 'Trajectory A' content: 'Trajectory A'
// Optional: fields 'id', 'type', 'group', 'className'
// Optional: fields 'id', 'type', 'group', 'className', 'style'
} }
// more items... // more items...
]); ]);
@ -235,6 +236,15 @@ var items = [
<td>yes</td> <td>yes</td>
<td>The start date of the item, for example <code>new Date(2010,9,23)</code>.</td> <td>The start date of the item, for example <code>new Date(2010,9,23)</code>.</td>
</tr> </tr>
<tr>
<td>style</td>
<td>String</td>
<td>no</td>
<td>
A css text string to apply custom styling for an individual item, for
example <code>"color: red; background-color: pink;"</code>.
</td>
</tr>
<tr> <tr>
<td>title</td> <td>title</td>
<td>String</td> <td>String</td>
@ -272,7 +282,7 @@ var groups = [
{ {
id: 1, id: 1,
content: 'Group 1' content: 'Group 1'
// Optional: a field 'className'
// Optional: a field 'className', 'style'
} }
// more groups... // more groups...
]); ]);
@ -320,6 +330,15 @@ var groups = [
property <code>group</code> which matches the <code>id</code> property <code>group</code> which matches the <code>id</code>
of the group.</td> of the group.</td>
</tr> </tr>
<tr>
<td>style</td>
<td>String</td>
<td>no</td>
<td>
A css text string to apply custom styling for an individual group label, for
example <code>"color: red; background-color: pink;"</code>.
</td>
</tr>
<tr> <tr>
<td>title</td> <td>title</td>
<td>String</td> <td>String</td>

+ 10
- 0
lib/timeline/component/Group.js View File

@ -110,6 +110,16 @@ Group.prototype.setData = function(data) {
util.addClassName(this.dom.axis, className); util.addClassName(this.dom.axis, className);
this.className = className; this.className = className;
} }
// update style
if (this.style) {
util.removeCssText(this.dom.label, this.style);
this.style = null;
}
if (data && data.style) {
util.addCssText(this.dom.label, data.style);
this.style = data.style;
}
}; };
/** /**

+ 7
- 7
lib/timeline/component/item/Item.js View File

@ -238,14 +238,14 @@ Item.prototype._updateTitle = function (element) {
* @private * @private
*/ */
Item.prototype._updateStyle = function(element) { Item.prototype._updateStyle = function(element) {
// update style
if (this.data.style) {
if (this.style) {
// remove old styles
util.removeCssText(element, this.style);
}
// remove old styles
if (this.style) {
util.removeCssText(element, this.style);
this.style = null;
}
// append new styles
// append new styles
if (this.data.style) {
util.addCssText(element, this.data.style); util.addCssText(element, this.data.style);
this.style = this.data.style; this.style = this.data.style;
} }

+ 2
- 3
test/timeline.html View File

@ -69,11 +69,10 @@
fieldId: '_id' fieldId: '_id'
}); });
items.add([ items.add([
{_id: 0, content: 'item 0', start: now.clone().add(3, 'days').toDate(), title: 'hello title!', style: 'color: red;'},
//{_id: 0, content: 'item 0', start: now.clone().add(3, 'days').toDate(), title: 'hello title!'},
{_id: 0, content: 'item 0', start: now.clone().add(3, 'days').toDate(), title: 'hello title!'},
{_id: '1', content: 'item 1<br>start', start: now.clone().add(4, 'days').toDate()}, {_id: '1', content: 'item 1<br>start', start: now.clone().add(4, 'days').toDate()},
{_id: 2, content: 'item 2', start: now.clone().add(-2, 'days').toDate() }, {_id: 2, content: 'item 2', start: now.clone().add(-2, 'days').toDate() },
{_id: 3, content: 'item 3', start: now.clone().add(2, 'days').toDate()},
{_id: 3, content: 'item 3', start: now.clone().add(2, 'days').toDate(), style: 'color: red;'},
{ {
_id: 4, content: 'item 4 ', _id: 4, content: 'item 4 ',
start: now.clone().add(0, 'days').toDate(), start: now.clone().add(0, 'days').toDate(),

Loading…
Cancel
Save