1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
\r
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
\r
5 <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dijit/themes/claro/claro.css">
\r
6 <style type="text/css">
\r
7 body, html { font-family:helvetica,arial,sans-serif; font-size:90%; }
\r
9 <style type="text/css">
\r
10 html, body { width: 100%; height: 100%; margin: 0; overflow:hidden; }
\r
11 #borderContainerTwo { width: 100%; height: 100%; }
\r
13 <title>Rec10Suite 0.0.3</title>
\r
14 <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js" type="text/javascript" djConfig="parseOnLoad : true, isDebug : true"></script>
\r
15 <script type="text/javascript">
\r
16 dojo.require("dijit.layout.ContentPane");
\r
17 dojo.require("dijit.layout.TabContainer");
\r
18 dojo.require("dijit.layout.AccordionContainer");
\r
19 dojo.require("dijit.layout.BorderContainer");
\r
20 dojo.require("dojo.data.ItemFileReadStore");
\r
21 dojo.require("dijit.form.FilteringSelect");
22 dojo.require("dijit.form.TextBox");
23 dojo.require("dijit.form.Button");
\r
24 dojo.require("dijit.form.DateTextBox");
\r
25 dojo.require("dijit.form.TimeTextBox");
\r
26 dojo.require("dijit.form.HorizontalSlider");
\r
27 dojo.require("dijit.form.HorizontalRuleLabels");
\r
28 dojo.require("dojox.grid.DataGrid");
\r
29 dojo.require("dojo.date.locale");
30 dojo.require("dojo.date");
\r
31 var ttch=["","",""];
\r
35 var reserve_grid_structure= [{cells:[
\r
36 {name:"ID",field:"id",width:"4em"},
\r
37 {name:"タイプ",field:"type",width:"5em",formatter:gridTypeFormatter},
\r
38 {name:"チャンネル",field:"chtxt",width:"5em"},
\r
39 {name:"開始",field:"btime",width:"6em"},
\r
40 {name:"終了",field:"etime",width:"3em"},
\r
41 {name:"タイトル",field:"title",width:"auto"},
\r
42 {name:"opt",field:"opt",width:"4em"},
\r
43 {name:"dt",field:"deltatime",width:"2em"},
\r
44 {name:"dd",field:"deltaday",width:"2em"}
\r
47 var chlistPaneTE=dojo.byId("progTableTE");
\r
48 var chlistPaneBS=dojo.byId("progTableBS");
\r
49 var chlistPaneCS=dojo.byId("progTableCS");
\r
51 url:"rec10webg3.py?mode=chlist",
\r
53 load: function(data,ioargs){
\r
54 //console.log("res=", data['items']);
\r
55 for (i=0;i<data['items'].length;i++){
\r
56 var node = document.createElement("div");
\r
57 var child = new dijit.form.ToggleButton
\r
58 ( {id: data['items'][i]["name"],
\r
59 label: data['items'][i]["label"],
\r
60 iconClass: "dijitCheckBoxIcon"},node );
\r
61 dojo.connect(node,"onClick",data['items'][i]["name"],addTimetableCh);
\r
62 if (data['items'][i]['type']=="bs"){
\r
63 chlistPaneBS.appendChild(child.domNode);
\r
64 }else if (data['items'][i]['type']=="cs"){
\r
65 chlistPaneCS.appendChild(child.domNode);
\r
67 chlistPaneTE.appendChild(child.domNode);
\r
71 error: function(error,args) {
\r
72 console.warn("error!",error);
\r
76 function changeTab(tabid){
\r
77 dijit.byId("main_tab").selectChild(dijit.byId(tabid));
\r
79 function setFilteringSelectValue(dijitid){
\r
80 console.warn("test");
\r
81 dijit.byId(dijitid).set('value',dijit.byId(dijitid).store._arrayOfAllItems[0]['id']);
\r
83 function DateTime2dt(ttime){
\r
84 var tt=new Date(parseInt(ttime.substring(0,4)),parseInt(ttime.substring(5,7)),parseInt(ttime.substring(8,10)),parseInt(ttime.substring(11,13)),parseInt(ttime.substring(14,16),0));
\r
87 function dt2DateTime(tt){
\r
95 var month=parseInt(tt.getMonth());
\r
96 return tt.getFullYear()+"-"+get2(month)+"-"+get2(tt.getDate())+"T"+get2(tt.getHours())+":"+get2(tt.getMinutes())+":"+get2(tt.getSeconds());
\r
98 function addTimetableCh(chtxt){
\r
100 console.dir(chtxt);
\r
101 for (i = 0; i < 3; i++) {
\r
102 if (ttch[i] == chtxt) {
\r
105 removeSingleCh("timetable-id"+i);
\r
110 for (i = 0; i < 3; i++) {
\r
111 if (ttch[i].length == 0) {
\r
118 ttch[(ttlastchange + 1) % 3] = chtxt;
\r
120 ttlastchange = (ttlastchange + 1) % 3;
\r
122 showTimeTable("timetableContainer", ttch, gbtime, getime, 5);
\r
125 function calcMaxHeight(parentid,chlists,bt,et,fontsize){
\r
128 for (ch in chlists){
\r
129 var chnode=dojo.doc.createElement("div");
\r
130 chnode.setAttribute("style","width:100%;");
\r
131 //chnode.setAttribute("id",data['items'][i]['id']);
\r
133 url:parentid+".json",
\r
136 load: function(data,ioargs){
\r
137 var baseForm=dojo.byId(parentid);
\r
138 for (i=0;i<data['items'].length;i++){
\r
139 var node = dojo.doc.createElement("div");
\r
140 node.setAttribute("style","border:3px solid #CCC;width:100%;");
\r
141 node.setAttribute("id",data['items'][i]['id']);
\r
142 var nodetitle = dojo.doc.createElement("h5");
\r
143 var node_str = dojo.doc.createTextNode(data['items'][i]['min']+" : "+data['items'][i]['title']);
\r
144 var node_str_desc = dojo.doc.createTextNode(data['items'][i]['desc']);
\r
145 nodetitle.appendChild(node_str);
\r
146 node.appendChild(nodetitle);
\r
147 node.appendChild(node_str_desc);
\r
148 baseForm.appendChild(node);
\r
149 tempH=tempH+node.clientHeight;
\r
153 baseForm.removeChild(node);
\r
156 error: function(error,args) {
\r
157 console.warn("error!",error);
\r
160 //console.log(maxH);
\r
161 //console.log(tempH);
\r
169 function showTimeTableSingleCH(parentid,ch,bt,et,fontsize,maxsize){
\r
170 var thisMaxheight=calcMaxHeight(parentid,[ch,],bt,et,fontsize);
\r
172 url:parentid+".json",
\r
174 load: function(data,ioargs){
\r
175 var baseForm=dojo.byId(parentid);
\r
176 console.dir(baseForm);
\r
177 for (i=0;i<data['items'].length;i++){
\r
178 var node = dojo.doc.createElement("div");
\r
179 node.setAttribute("style","border:3px solid #FFFFFF;width:100%;");
\r
180 node.setAttribute("id",data['items'][i]['id']+"_test");
\r
181 var nodetitle = dojo.doc.createElement("h5");
\r
182 var node_str = dojo.doc.createTextNode(data['items'][i]['min']+" : "+data['items'][i]['title']);
\r
183 var node_str_desc = dojo.doc.createTextNode(data['items'][i]['desc']);
\r
184 nodetitle.appendChild(node_str);
\r
185 node.appendChild(nodetitle);
\r
186 node.appendChild(node_str_desc);
\r
187 baseForm.appendChild(node);
\r
188 var h=node.clientHeight;
\r
190 baseForm.removeChild(node);
\r
191 node = dojo.doc.createElement("div");
\r
192 node.setAttribute("style","border:3px solid #CCC;width:100%;height:"+h*maxsize/thisMaxheight+"");
\r
193 node.setAttribute("id",data['items'][i]['id']);
\r
194 nodetitle = dojo.doc.createElement("h5");
\r
195 node_str = dojo.doc.createTextNode(data['items'][i]['min']+" : "+data['items'][i]['title']);
\r
196 node_str_desc = dojo.doc.createTextNode(data['items'][i]['desc']);
\r
197 nodetitle.appendChild(node_str);
\r
198 node.appendChild(nodetitle);
\r
199 node.appendChild(node_str_desc);
\r
200 baseForm.appendChild(node);
\r
203 error: function(error,args) {
\r
204 console.warn("error!",error);
\r
208 function removeSingleCh(parentid){
\r
209 var baseForm=dojo.byId(parentid);
\r
210 var children=baseForm.getChildren();
\r
211 console.dir(children);
\r
212 for (i=0;i<children.length();i++){
\r
213 baseForm.removeChild(childen[i]);
\r
216 function showTimeTable(parentid,chlists,btime,etime,fontsize){
\r
217 var widthp=Math.floor(100/chlists.length);
\r
218 var every_width=20;
\r
219 var timetabelArray= new Array();
\r
220 var bt=new Date(parseInt(btime.substring(0,4)),parseInt(btime.substring(5,7)),parseInt(btime.substring(8,10)),parseInt(btime.substring(11,13)),parseInt(btime.substring(14,16),0));
\r
221 var et=new Date(parseInt(etime.substring(0,4)),parseInt(etime.substring(5,7)),parseInt(etime.substring(8,10)),parseInt(etime.substring(11,13)),parseInt(etime.substring(14,16),0));
\r
223 if (bt.getMinutes()>30){
\r
229 if (et.getMinutes()>30){
\r
231 et=dojo.date.add(et, "minute", 30);
\r
235 var dt=dojo.date.difference(bt,et,"minute");
\r
239 console.dir([dt,i]);
\r
240 net=dojo.date.add(nbt,"minute",30);
\r
241 var theight=calcMaxHeight("timetable-id0",chlists,dt2DateTime(nbt),dt2DateTime(net),fontsize);
\r
242 console.log(theight)
\r
243 for (j=0;j<chlists.length;j++){
\r
247 showTimeTableSingleCH("timetable-id"+j,chlists[j],nbt,net,fontsize,theight);
\r
251 nbt=dojo.date.add(nbt,"minute",30);
\r
260 //########################################################################
261 function showSearchEPG(){
262 var keyw=dojo.byId("tb_search_keyword").value;
\r
264 url:"rec10webg3.py?mode=epg-search&keyword="+keyw,
\r
266 load: function(data,ioargs){
\r
267 var baseForm=dojo.byId("tab_epgsearch");
\r
269 console.dir(data.items);
\r
270 for (i=0;i<data['items'].length;i++){
\r
271 var node = dojo.doc.createElement("p");
272 var hr = dojo.doc.createElement("hr");
273 var titlediv = dojo.doc.createElement("div");
274 titlediv.setAttribute("style","font-size:1.4em;font-weight:bold;");
275 var titlediv_text = dojo.doc.createTextNode(data['items'][i]['title']);
276 titlediv.appendChild(titlediv_text);
277 var datespan1 = dojo.doc.createElement("span");
278 datespan1.setAttribute("style","font-size:1.2em;font-weight:bold;");
279 var date_text = dojo.doc.createTextNode(data['items'][i]['btime'].substring(6,10)+" ");
280 datespan1.appendChild(date_text);
281 var datespan2 = dojo.doc.createElement("span");
282 datespan2.setAttribute("style","font-size:1em;");
283 var date_text2 = dojo.doc.createTextNode(data['items'][i]['btime'].substring(11,16));
284 datespan2.appendChild(date_text2);
285 var channel = dojo.doc.createElement("span");
286 channel.setAttribute("style","font-size:1.2em;font-style:italic;");
287 var channel_text = dojo.doc.createTextNode(data['items'][i]['chtxt']);
288 channel.appendChild(channel_text);
289 var desc_div = dojo.doc.createElement("div");
290 desc_div.setAttribute("style","font-size:1em;font-style:italic;");
291 var desc_div = dojo.doc.createTextNode(data['items'][i]['exp'].replace(/\n/g,"<br>"));
292 datespan2.appendChild(date_text2);
293 node.appendChild(hr);
294 node.appendChild(titlediv);
295 node.appendChild(datespan1);
296 node.appendChild(datespan2);
297 node.appendChild(channel);
298 node.appendChild(desc_div);
\r
299 baseForm.appendChild(node);
\r
302 error: function(error,args) {
\r
303 console.warn("error!",error);
\r
308 function gridTypeFormatter(type){
310 case "reserve_flexible":return "<span style='color:skyblue'>未確定予約</span>";
311 case "reserve_fixed":return "<span style='color:blue'>確定予約</span>";
312 case "convert_ts_mp4_network":return "<span style='color:black'>ネット変換予約</span>";
313 case "convert_ts_mp4_running":return "<span style='color:orange'>動画圧縮中</span>";
314 case "convert_ts_mp4":return "<span style='color:yellow'>圧縮予約</span>";
315 case "convert_avi_mp4_miss":return "<span style='color:'></span>";
316 case "search_today":return "<span style='color:skyblue'>当日予約</span>";
317 case "search_everyday":return "<span style='color:purple'>隔日予約</span>";
318 case "convert_ts_mp4_finished":return "<span style='color:gray'>圧縮終了</span>";
319 case "convert_b25_ts_miss":return "<blink><span style='color:red'>解読失敗</span></blink>";
320 case "convert_b25_ts":return "<span style='color:green'>解読予約</span>";
321 case "convert_b25_ts_running":return "<span style='color:yellowgreen'>解読中</span>";
322 case "reserve_running":return "<span style='color:orange'>録画中</span>";
323 case "convert_mkv_mp4_runnings":return "<span style='color:'></span>";
324 case "convert_avi_mkv":return "<span style='color:'></span>";
325 case "convert_avi_mp4":return "<span style='color:'></span>";
326 case "convert_mkv_mp4":return "<span style='color:'></span>";
327 case "move_end":return "<span style='color:gray'>移動終了</span>";
329 default : return type;
339 <style type="text/css">
\r
340 @import "http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojox/grid/resources/Grid.css";
\r
341 @import "http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojox/grid/resources/claroGrid.css";
\r
345 <body class=" claro ">
\r
346 <div dojoType="dijit.layout.BorderContainer" gutters="true" id="borderContainerTwo">
\r
347 <div dojoType="dijit.layout.ContentPane" region="top" splitter="false">
\r
348 Rec10Suite WEB Interface version 0.0.1
\r
350 <div dojoType="dijit.layout.BorderContainer" liveSplitters="false" design="sidebar"
\r
351 region="center" id="mainSplit">
\r
352 <div dojoType="dijit.layout.AccordionContainer" minSize="20" style="width: 300px;"
\r
353 id="leftMainAccordion" region="leading" splitter="true">
\r
354 <div dojoType="dijit.layout.ContentPane" title="番組表" selected="true">
\r
355 <div dojoType="dijit.layout.AccordionContainer" minSize="20" style="width: 100%;"
\r
356 id="leftProgramTabTE" region="leading" splitter="true">
\r
357 <div dojoType="dijit.layout.BorderContainer" id="progTableTE" title="地上派" selected="true"></div>
\r
358 <div dojoType="dijit.layout.BorderContainer" id="progTableBS" title="BS"></div>
\r
359 <div dojoType="dijit.layout.BorderContainer" id="progTableCS" title="CS"></div>
\r
362 <div dojoType="dijit.layout.ContentPane" title="予約">
\r
363 <div dojoType="dijit.form.Button" id="simpleReserveButton" label="新規予約" onclick=changeTab("tab_newreserve")></div>
\r
365 <div dojoType="dijit.form.Button" id="ReserveListTimeButton" label="予約確認(時間順)" onclick=changeTab("tab_list_time")></div>
\r
367 <div dojoType="dijit.layout.ContentPane" title="設定">
\r
369 <div dojoType="dijit.layout.ContentPane" title="その他">
\r
372 <div dojoType="dijit.layout.TabContainer" id="main_tab" region="center" tabStrip="true">
\r
373 <div dojoType="dijit.layout.ContentPane" title="番組表" selected="true">
\r
374 <div dojoType="dijit.layout.BorderContainer" id="timetableContainer" design="headline" style="width:100%;height:100%;" gutters="true">
\r
375 <div dojoType="dijit.layout.ContentPane" id="timetable-id0" region="left" style="width:30%"></div>
\r
376 <div dojoType="dijit.layout.ContentPane" id="timetable-id1" region="center"></div>
\r
377 <div dojoType="dijit.layout.ContentPane" id="timetable-id2" region="right" style="width:30%"></div>
\r
378 <div dojoType="dijit.layout.ContentPane" id="timetable-button" region="bottom" style="height:4%;position:relative;">
\r
379 <div dojoType="dijit.form.Button" style="position:absolute;left:0.5em;" onClick=showTimeTable()><<前</div>
\r
380 <div dojoType="dijit.form.Button" style="position:absolute;right:0.5em;" onClick=showTimeTable()>次>></div>
\r
381 <div dojoType="dijit.form.Button" style="position:absolute;left:40%;" onClick=showTimeTable()>06h</div>
\r
382 <div dojoType="dijit.form.Button" style="position:absolute;left:48.5%;" onClick=showTimeTable()>12h</div>
\r
383 <div dojoType="dijit.form.Button" style="position:absolute;right:40%;" onClick=showTimeTable()>24h</div>
\r
384 <div dojoType="dijit.form.Button" style="position:absolute;left:10%;" onClick=showTimeTable("timetableContainer",["tb1","tb2","tb3"],"2001-01-01T12:00:00","2001-01-01T13:15:00",5)>test</div>
\r
388 <div dojoType="dijit.layout.ContentPane" id="tab_timetablebasic" title="TimeTable" href="rec10webg2.pl">
390 <div dojoType="dijit.layout.ContentPane" id="tab_epgsearch" title="Search" onClick="showSearchEPG()">
391 <p>Program Search:<div dojoType="dijit.form.TextBox" id="tb_search_keyword">Keyword</div>
392 <div dojoType="dijit.form.Button" id="tb_search_button">Search</div></p>
394 <div dojoType="dijit.layout.ContentPane" title="番組表3" >
395 <div dojoType="dijit.layout.BorderContainer" id="timetableContainer3" design="headline" style="width:100%;height:100%;" gutters="true">
396 <div dojoType="dijit.layout.ContentPane" id="timetable3-tt" region="center" href="rec10webg2.pl?mode=timegraph&btime=2011-05-07_06-00-00&etime=2011-05-07_18-00-00"></div>
\r
397 <div dojoType="dijit.layout.ContentPane" id="timetable3-id0" region="right" style="width:28%" href="rec10webg2.pl?mode=graph&chtxt=13&btime=2011-05-07_06-00-00&etime=2011-05-07_18-00-00"></div>
\r
398 <div dojoType="dijit.layout.ContentPane" id="timetable3-id1" region="right" style="width:28%" href="rec10webg2.pl?mode=graph&chtxt=21&btime=2011-05-07_06-00-00&etime=2011-05-07_18-00-00"></div>
\r
399 <div dojoType="dijit.layout.ContentPane" id="timetable3-id2" region="right" style="width:28%" href="rec10webg2.pl?mode=graph&chtxt=21&btime=2011-05-07_06-00-00&etime=2011-05-07_18-00-00"></div>
\r
400 <div dojoType="dijit.layout.ContentPane" id="timetable3-button" region="bottom" style="height:4%;position:relative;">
\r
401 <div dojoType="dijit.form.Button" style="position:absolute;left:0.5em;" onClick=showTimeTable()><<前</div>
\r
402 <div dojoType="dijit.form.Button" style="position:absolute;right:0.5em;" onClick=showTimeTable()>次>></div>
\r
403 <div dojoType="dijit.form.Button" style="position:absolute;left:40%;" onClick=showTimeTable()>06h</div>
\r
404 <div dojoType="dijit.form.Button" style="position:absolute;left:48.5%;" onClick=showTimeTable()>12h</div>
\r
405 <div dojoType="dijit.form.Button" style="position:absolute;right:40%;" onClick=showTimeTable()>24h</div>
\r
406 <div dojoType="dijit.form.Button" style="position:absolute;left:10%;" onClick=showTimeTable("timetableContainer",["tb1","tb2","tb3"],"2001-01-01T12:00:00","2001-01-01T13:15:00",5)>test</div>
\r
410 <div dojoType="dijit.layout.ContentPane" id="tab_list_time" title="予約確認(時間順)">
\r
411 <div dojoType="dojo.data.ItemFileReadStore" jsId="reserveStore"
\r
412 url="rec10webg3.py?mode=timeline"></div>
\r
413 <table dojoType="dojox.grid.DataGrid" id="grid_reserve_list_time" structure="reserve_grid_structure"
\r
414 store="reserveStore" style="font-size:1.4em;"></table>
\r
416 <div dojoType="dijit.layout.ContentPane" id="tab_newreserve" title="新規予約">
\r
419 <div dojoType="dojo.data.ItemFileReadStore" jsId="chlistStore"
\r
420 url="chlist.json"></div>
\r
421 <div dojoType="dojo.data.ItemFileReadStore" jsId="dbtypeStore"
\r
422 url="typelist.json" ></div>
\r
424 <div dojoType="dijit.form.TextBox" id="newreserve_title" style="width:30%"></div><br>
\r
429 <div dojoType="dijit.form.FilteringSelect" id="newreserve_dbtype_list"
\r
430 autoComplete="true" store="dbtypeStore" searchAttr= "label"
\r
431 onShow="setFilteringSelectValue('newreserve_dbtype_list')"></div>
\r
433 <div dojoType="dijit.form.FilteringSelect" id="newreserve_ch_list"
\r
434 autoComplete="true" store="chlistStore" searchAttr= "label"
\r
435 onShow="setFilteringSelectValue('newreserve_ch_list')"></div><br>
\r
439 <div dojoType="dijit.form.DateTextBox" id="newreserve_bdata" constraints="{datePattern:'yyyy-MM-dd'}"></div>
\r
440 <div dojoType="dijit.form.TimeTextBox" id="newreserve_btime"></div><br>
\r
442 <div dojoType="dijit.form.DateTextBox" id="newreserve_edata" constraints="{datePattern:'yyyy-MM-dd'}"></div>
\r
443 <div dojoType="dijit.form.TimeTextBox" id="newreserve_etime"></div><br><br>
\r
446 <div dojoType="dijit.form.HorizontalSlider" id="newreserve_deladay"
\r
447 minimum="1" maximum="7" value="7" discreteValues="7"
\r
448 intermediateChanges="true" style="width:300px">
\r
449 <ol dojoType="dijit.form.HorizontalRuleLabels">
\r
450 <li>1</li><li>2</li><li>3</li><li>4</li><li>5</li>
\r
451 <li>6</li><li>7</li>
\r
455 <div dojoType="dijit.form.HorizontalSlider" id="newreserve_delatime"
\r
456 minimum="1" maximum="10" value="3" discreteValues="10"
\r
457 intermediateChanges="true" style="width:300px">
\r
458 <ol dojoType="dijit.form.HorizontalRuleLabels">
\r
459 <li>1</li><li>2</li><li>3</li><li>4</li><li>5</li>
\r
460 <li>6</li><li>7</li><li>8</li><li>9</li><li>10</li>
\r
466 <div dojoType="dijit.form.Button" onClick=showTimeTable("tab_newreserve",["tb1","tb2"],"2001-01-01T12:00:00","2001-01-01T13:15:00",5)></div>
\r