Browse Source

Merge pull request #1395 from liuqingc/develop

Added allDraggable option for timeline to support dragging unselected item
fixDataView
Jos de Jong 9 years ago
parent
commit
73f3be9093
3 changed files with 15 additions and 3 deletions
  1. +8
    -0
      docs/timeline/index.html
  2. +6
    -3
      lib/timeline/component/ItemSet.js
  3. +1
    -0
      lib/timeline/optionsTimeline.js

+ 8
- 0
docs/timeline/index.html View File

@ -666,6 +666,14 @@ function (option, path) {
and set repeat to weekly. and set repeat to weekly.
</td> </td>
</tr> </tr>
<tr>
<td>itemsAlwaysDraggable</td>
<td>boolean</td>
<td><code>false</code></td>
<td>If true, all items in the Timeline are draggable without being selected. If false, only the selected item(s) are draggable.</td>
</tr>
<tr> <tr>
<td>locale</td> <td>locale</td>
<td>String</td> <td>String</td>

+ 6
- 3
lib/timeline/component/ItemSet.js View File

@ -43,6 +43,7 @@ function ItemSet(body, options) {
selectable: true, selectable: true,
multiselect: false, multiselect: false,
itemsAlwaysDraggable: false,
editable: { editable: {
updateTime: false, updateTime: false,
@ -307,7 +308,7 @@ ItemSet.prototype._create = function(){
ItemSet.prototype.setOptions = function(options) { ItemSet.prototype.setOptions = function(options) {
if (options) { if (options) {
// copy all options that we know // copy all options that we know
var fields = ['type', 'align', 'order', 'stack', 'selectable', 'multiselect', 'multiselectPerGroup', 'groupOrder', 'dataAttributes', 'template', 'groupTemplate', 'hide', 'snap', 'groupOrderSwap'];
var fields = ['type', 'align', 'order', 'stack', 'selectable', 'multiselect', 'itemsAlwaysDraggable', 'multiselectPerGroup', 'groupOrder', 'dataAttributes', 'template', 'groupTemplate', 'hide', 'snap', 'groupOrderSwap'];
util.selectiveExtend(fields, this.options, options); util.selectiveExtend(fields, this.options, options);
if ('orientation' in options) { if ('orientation' in options) {
@ -1172,7 +1173,7 @@ ItemSet.prototype._onDragStart = function (event) {
var me = this; var me = this;
var props; var props;
if (item && item.selected) {
if (item && (item.selected || this.options.itemsAlwaysDraggable)) {
if (!this.options.editable.updateTime && if (!this.options.editable.updateTime &&
!this.options.editable.updateGroup && !this.options.editable.updateGroup &&
@ -1213,7 +1214,9 @@ ItemSet.prototype._onDragStart = function (event) {
var baseGroupIndex = this._getGroupIndex(item.data.group); var baseGroupIndex = this._getGroupIndex(item.data.group);
this.touchParams.itemProps = this.getSelection().map(function (id) {
var itemsToDrag = (this.options.itemsAlwaysDraggable && !item.selected) ? [item.id] : this.getSelection();
this.touchParams.itemProps = itemsToDrag.map(function (id) {
var item = me.items[id]; var item = me.items[id];
var groupIndex = me._getGroupIndex(item.data.group); var groupIndex = me._getGroupIndex(item.data.group);
return { return {

+ 1
- 0
lib/timeline/optionsTimeline.js View File

@ -79,6 +79,7 @@ let allOptions = {
repeat: {string}, repeat: {string},
__type__: {object, array} __type__: {object, array}
}, },
itemsAlwaysDraggable: { boolean: boolean },
locale:{string}, locale:{string},
locales:{ locales:{
__any__: {any}, __any__: {any},

Loading…
Cancel
Save