Simile widgets时间轴组件实际应用

背景:以时间轴形式,直观展示用户在各个时间点创建的多个记事。

解决方案:使用Simile widgets提供的时间轴组件。

Demo:http://www.simile-widgets.org/timeline/

下载地址:http://code.google.com/p/simile-widgets/downloads/list

Simile widgets使用说明:http://www.simile-widgets.org/wiki/Getting_Started_with_Timeline

 

步骤:1.下载Timeline Library,主要用到其中的timeline-api.js。

--> 
 2.在页面中 连接到timeline-api
    <script type="text/javascript" src="timeline_2.3.0/timeline_js/timeline-api.js?bundle=true"></script>

3. 创建一个放置时间轴的div
    <div id="my-timeline" style="height: 420px; border: 1px solid #aaa; font-size: 9pt;
            margin-left: 18px">
    </div>
 
4.给body 加上onload和onResize事件
var resizeTimerID = null;
function onResize() {
    if (resizeTimerID == null) {
        resizeTimerID = window.setTimeout(function() {
            resizeTimerID = null;
            tl.layout();
        }, 500);
    }
}
window.onresize = onResize;
 
<body οnlοad="createTimeLineAndEvents()">
注意:创建时间轴的代码就写在onload事件中。
 
5.在onload事件,首先声明时间轴的数据源。数据源必须是一个json对象,它具有的属性请参考:http://www.simile-widgets.org/wiki/Timeline_EventSources
var eventSource = new Timeline.DefaultEventSource();
var json = document.getElementById("hfJson").value;
var jsonObj = eval('(' + json + ')'); // 将json字符串转换成对象
eventSource.loadJSON(jsonObj, url);

 
6. 添加一条或多条时间轴
    var bandInfos = [
        Timeline.createBandInfo({
            trackGap:       0.2,
            width:          "85%",
            intervalUnit:   Timeline.DateTime.DAY,
            intervalPixels: 100,
            timeZone : 8,
            eventSource: eventSource
        }),
        Timeline.createBandInfo({
            showEventText:  false,
            trackHeight:    0.5,
            trackGap:       0.2,
            width:          "15%",
            intervalUnit:   Timeline.DateTime.YEAR,
            intervalPixels: 150,
            timeZone : 8,
            eventSource: eventSource
        })
      ];

 
7.使多条 时间轴同步,并使第一条时间轴的日期范围在第二条时间轴上 高亮标出
      bandInfos[1].syncWith = 0;
      bandInfos[1].highlight = true;

 
8.最后一步, 创建时间轴
    var timeLine = Timeline.create(document.getElementById("my-timeline"), bandInfos);
至此,就可以在画面上显示出完整的时间轴了 效果如下
------------------------------------------------------------------------------------------------------------------------------------------
* 完整的onload事件代码

function createTimeLineAndEvents()
{
    var eventSource = new Timeline.DefaultEventSource();
    var url = '.'; // The base url for image, icon and background image
                           // references in the data
    var json = document.getElementById("hfJson").value;
    var jsonObj = eval('(' + json + ')'); // 将json字符串转换成对象
    eventSource.loadJSON(jsonObj, url);
                                                       
    var bandInfos = [
        Timeline.createBandInfo({
            trackGap:       0.2,
            width:          "85%",
            intervalUnit:   Timeline.DateTime.DAY,
            intervalPixels: 100,
            timeZone : 8,
            eventSource: eventSource
        }),
        Timeline.createBandInfo({
            showEventText:  false,
            trackHeight:    0.5,
            trackGap:       0.2,
            width:          "15%",
            intervalUnit:   Timeline.DateTime.YEAR,
            intervalPixels: 150,
            timeZone : 8,
            eventSource: eventSource
        })
      ];
      bandInfos[1].syncWith = 0;
      bandInfos[1].highlight = true;

    var timeLine = Timeline.create(document.getElementById("my-timeline"), bandInfos); 
}

-----------------------------------------------------------------------------------------------------------------------------------------
* 时间轴数据源实例

{  // save as a global variable
'dateTimeFormat': 'iso8601',
'wikiURL': "http://simile.mit.edu/shelf/",
'wikiSection': "Simile Cubism Timeline",

'events' : [
        {'start': '1924',
        'title': 'Barfusserkirche',
        'description': 'by Lyonel Feininger, American/German Painter, 1871-1956',
        'image': 'http://images.allposters.com/images/AWI/NR096_b.jpg',
        'link': 'http://www.allposters.com/-sp/Barfusserkirche-1924-Posters_i1116895_.htm'
        },


        {'start': '2013',
        'end': '2029',
        'title': 'Three Figures',
        'description': 'by Kasimir Malevich, Ukrainian Painter, 1878-1935',
        'image': 'http://images.allposters.com/images/BRGPOD/75857_b.jpg',
        'link': 'http://www.allposters.com/-sp/Three-Figures-1913-28-Posters_i1349989_.htm'
        },


        {'start': '2081',
        'end': '2153',
        'title': 'Landschaft bei Montreuil',
        'description': 'by Albert Gleizes, French Painter, 1881-1953',
        'image': 'http://images.allposters.com/images/mer/1336_b.jpg',
        'link': 'http://www.allposters.com/-sp/Landschaft-bei-Montreuil-Posters_i339007_.htm',
        'isDuration' : true,
        'icon' : "dark-red-circle.png",       
        'color' : 'red',
        'textColor' : 'green'},


        {'start': '2020',
        'title': 'Femme au Miroir',
        'description': 'by Fernand Leger, French Painter, 1881-1955',
        'image': 'http://images.allposters.com/images/AWI/GMR117_b.jpg',
        'link': 'http://www.allposters.com/-sp/Femme-au-Miroir-1920-Posters_i141266_.htm'
        },


        {'start': '2003',
        'title': 'The Old Guitarist',
        'description': 'by Pablo Picasso, Spanish Painter/Sculptor, 1881-1973',
        'image': 'http://images.allposters.com/images/ESC/AP599_b.jpg',
        'link': 'http://www.allposters.com/-sp/The-Old-Guitarist-c-1903-Posters_i328746_.htm'
        },


        {'start': '2082',
        'end': '2164',
        'title': 'Jour',
        'description': 'by Georges Braque, French Painter, 1882-1963',
        'image': 'http://images.allposters.com/images/SHD/S1041_b.jpg',
        'link': 'http://www.allposters.com/-sp/Jour-Posters_i126663_.htm',
        'color': 'green'
        },


        {'start': '1916',
        'title': 'Still Life with a White Dish',
        'description': 'by Gino Severini, Italian Painter, 1883-1966',
        'image': 'http://images.allposters.com/images/MCG/FS1254_b.jpg',
        'link': 'http://www.allposters.com/-sp/Still-Life-with-a-White-Dish-1916-Posters_i366823_.htm'
        },


        {'start': '2085',
        'end': '2141',
        'title': 'Rhythm, Joie de Vivre',
        'description': 'by Robert Delaunay, French Painter, 1885-1941',
        'image': 'http://imagecache2.allposters.com/images/pic/adc/10053983a_b~Rhythm-Joie-de-Vivre-Posters.jpg',
        'link': 'http://www.allposters.com/-sp/Rhythm-Joie-de-Vivre-Posters_i1250641_.htm'
        },


        {'start': '2085',
        'end': '2125',
        'title': 'Castor Et Pollux',
        'description': 'by Roger de la Fresnaye, French Painter, 1885-1925',
        'image': 'http://images.allposters.com/images/CORPOD/IX001463_b.jpg',
        'link': 'http://www.allposters.com/-sp/Castor-Et-Pollux-Posters_i831718_.htm',
        'tapeImage': 'blue_stripes.png',
        'tapeRepeat': 'repeat-x',
        'caption': "This is the event's caption attribute.",
        'classname': 'hot_event'
        },


        {'start': '1912',
        'title': 'Portrait of Pablo Picasso',
        'description': 'by Juan Gris, Spanish Painter/Sculptor, 1887-1927',
        'image': 'http://images.allposters.com/images/BRGPOD/156514_b.jpg',
        'link': 'http://www.allposters.com/-sp/Portrait-of-Pablo-Picasso-1881-1973-1912-Posters_i1344154_.htm'
        },


        {'start': '2091',
        'end': '2115',
        'title': 'Portrait of Horace Brodsky',
        'description': 'by Henri Gaudier-Brzeska, French Sculptor, 1891-1915',
        'image': 'http://imagecache2.allposters.com/images/BRGPOD/102770_b.jpg',
        'link': 'http://www.allposters.com/-sp/Portrait-of-Horace-Brodsky-Posters_i1584413_.htm'
        }
]
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值