source: Dev/trunk/src/client/dojox/mobile/tests/test_ScrollableView-pullToRefresh.html

Last change on this file was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 6.7 KB
Line 
1<!DOCTYPE html>
2<html>
3<head>
4        <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
5        <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"/>
6        <meta name="apple-mobile-web-app-capable" content="yes"/>
7        <title>Pull to refresh</title>
8
9        <style type="text/css">
10
11                #pullToRefreshPanel {
12                        position: absolute;
13                        top: 0px;
14                        width: 100%;
15                        z-index: 100;
16                        font-weight: bold;
17                        overflow: hidden;
18                        background-color: #E4E7EE;
19                        padding-left: 20px;
20                }
21
22                #pullToRefreshPanel > div {
23                        position: inherit;
24                        bottom: 12px;
25                        padding-left: 22px;
26                        width: 100%;
27                        height: 100%;
28                        color: #6E8098;
29                        background-repeat: no-repeat;
30                        background-position: bottom left;
31                }
32
33                #pullToRefreshPanel > div > div {
34                        position: absolute;
35                        bottom: 4px;
36                }
37
38                .pullDownToUpdate > div {
39                        background-image: url('images/pull-arrow.png');
40                }
41
42                .pullDownToUpdate > div > div:before {
43                        content: "Pull down to update";
44                }
45
46                .releaseToUpdate > div {
47                        background-image: url('images/release-arrow.png');
48                }
49               
50                .releaseToUpdate > div > div:before {
51                        content: "Release to update";
52                }
53
54        </style>
55
56        <link rel="stylesheet" type="text/css" href="../themes/iphone/iphone.css"></link>
57        <script type="text/javascript" src="../../../dojo/dojo.js" data-dojo-config="async: true, parseOnLoad: true"></script>
58        <script type="text/javascript">
59        require([
60                "dojo/ready",
61                "dojo/on",
62                "dojo/dom",
63                "dojo/dom-class",
64                "dijit/registry",
65                "dojox/mobile/parser",
66                "dojox/mobile",
67                "dojox/mobile/compat",
68                "dojox/mobile/ScrollableView",
69                "dojox/mobile/Heading",
70                "dojox/mobile/RoundRect",
71                "dojox/mobile/RoundRectList"
72             ], function(ready, on, dom, domClass, registry){
73                ready(function(){                               
74                        var pullToRefreshPanel = dom.byId("pullToRefreshPanel");
75                        var topMessage = dom.byId("topMessage");
76                        var scrollableView = registry.byId("sview");
77                        var pullToRefreshPanelDisplayed = false;
78                        var refreshOnTouchEnd = false;
79                        var numberOfUpdates = 0;
80
81                        var displayPullToRefreshPanel = function() {
82                                        pullToRefreshPanelDisplayed = true;
83                                        pullToRefreshPanel.style.display="block";
84                        };
85
86                        var hidePullToRefreshPanel = function() {
87                                        pullToRefreshPanelDisplayed = false;
88                                        pullToRefreshPanel.style.display="none";
89                        };
90                       
91                        scrollableView.on("beforescroll", function(evt){
92                                if(evt.beforeTop){
93                                        // display the pullToRefreshPanel panel if it is not
94                                        if(!pullToRefreshPanelDisplayed){
95                                                displayPullToRefreshPanel();
96                                        }
97                                        // resize the pullToRefreshPanel according to the scroll destination
98                                        pullToRefreshPanel.style.height= evt.beforeTopHeight + "px";
99                                        pullToRefreshPanel.style.top= -evt.beforeTopHeight + "px";
100                                }else{
101                                        // hide the pullToRefreshPanel panel if it is displayed
102                                        if(pullToRefreshPanelDisplayed){
103                                                hidePullToRefreshPanel();
104                                        }
105                                }
106                                if(evt.beforeTopHeight > 80){
107                                        domClass.remove(pullToRefreshPanel, "pullDownToUpdate");
108                                        domClass.add(pullToRefreshPanel, "releaseToUpdate");
109                                        refreshOnTouchEnd = true;
110                                }else{
111                                        domClass.remove(pullToRefreshPanel, "releaseToUpdate");
112                                        domClass.add(pullToRefreshPanel, "pullDownToUpdate");
113                                        refreshOnTouchEnd = false;
114                                }
115                        });
116
117                        scrollableView.on("touchend", function(evt){
118                                // We're done scrolling:
119                                // - hide the pullToRefreshPanel if it is displayed
120                                // - perform refresh if specified
121                                if(pullToRefreshPanelDisplayed){
122                                        hidePullToRefreshPanel();
123                                }
124                                if(refreshOnTouchEnd){
125                                        refreshOnTouchEnd = false;
126                                        topMessage.innerHTML = "Content updated " + ++numberOfUpdates + " time !";
127                                }
128                        });
129
130                });
131             });
132        </script>
133
134</head>
135<body style="visibility:hidden;">
136        <div id="sview" data-dojo-type="dojox.mobile.ScrollableView">
137                <h1 data-dojo-type="dojox.mobile.Heading" fixed="top">Pull to refresh</h1>
138                <div id="pullToRefreshPanel" style="display: none;">
139                        <div><div></div></div>
140                </div>
141                <div id="topMessage" data-dojo-type="dojox.mobile.RoundRect">
142                        This page implements a demo of the "pull to refresh" feature that can be seen in iOS applications like Facebook. Touch the screen and pull down to reveal the feature...
143                </div>
144                <ul data-dojo-type="dojox.mobile.RoundRectList">
145                        <li data-dojo-type="dojox.mobile.ListItem">Item 001</li>
146                        <li data-dojo-type="dojox.mobile.ListItem">Item 002</li>
147                        <li data-dojo-type="dojox.mobile.ListItem">Item 003</li>
148                        <li data-dojo-type="dojox.mobile.ListItem">Item 004</li>
149                        <li data-dojo-type="dojox.mobile.ListItem">Item 005</li>
150                        <li data-dojo-type="dojox.mobile.ListItem">Item 006</li>
151                        <li data-dojo-type="dojox.mobile.ListItem">Item 007</li>
152                        <li data-dojo-type="dojox.mobile.ListItem">Item 008</li>
153                        <li data-dojo-type="dojox.mobile.ListItem">Item 009</li>
154                        <li data-dojo-type="dojox.mobile.ListItem">Item 010</li>
155                        <li data-dojo-type="dojox.mobile.ListItem">Item 011</li>
156                        <li data-dojo-type="dojox.mobile.ListItem">Item 012</li>
157                        <li data-dojo-type="dojox.mobile.ListItem">Item 013</li>
158                        <li data-dojo-type="dojox.mobile.ListItem">Item 014</li>
159                        <li data-dojo-type="dojox.mobile.ListItem">Item 015</li>
160                        <li data-dojo-type="dojox.mobile.ListItem">Item 016</li>
161                        <li data-dojo-type="dojox.mobile.ListItem">Item 017</li>
162                        <li data-dojo-type="dojox.mobile.ListItem">Item 018</li>
163                        <li data-dojo-type="dojox.mobile.ListItem">Item 019</li>
164                        <li data-dojo-type="dojox.mobile.ListItem">Item 020</li>
165                        <li data-dojo-type="dojox.mobile.ListItem">Item 021</li>
166                        <li data-dojo-type="dojox.mobile.ListItem">Item 022</li>
167                        <li data-dojo-type="dojox.mobile.ListItem">Item 023</li>
168                        <li data-dojo-type="dojox.mobile.ListItem">Item 024</li>
169                        <li data-dojo-type="dojox.mobile.ListItem">Item 025</li>
170                        <li data-dojo-type="dojox.mobile.ListItem">Item 026</li>
171                        <li data-dojo-type="dojox.mobile.ListItem">Item 027</li>
172                        <li data-dojo-type="dojox.mobile.ListItem">Item 028</li>
173                        <li data-dojo-type="dojox.mobile.ListItem">Item 029</li>
174                        <li data-dojo-type="dojox.mobile.ListItem">Item 030</li>
175                        <li data-dojo-type="dojox.mobile.ListItem">Item 031</li>
176                        <li data-dojo-type="dojox.mobile.ListItem">Item 032</li>
177                        <li data-dojo-type="dojox.mobile.ListItem">Item 033</li>
178                        <li data-dojo-type="dojox.mobile.ListItem">Item 034</li>
179                        <li data-dojo-type="dojox.mobile.ListItem">Item 035</li>
180                        <li data-dojo-type="dojox.mobile.ListItem">Item 036</li>
181                        <li data-dojo-type="dojox.mobile.ListItem">Item 037</li>
182                        <li data-dojo-type="dojox.mobile.ListItem">Item 038</li>
183                </ul>
184        </div>
185</body>
186</html>
Note: See TracBrowser for help on using the repository browser.