這個範例是延續前一篇『切換科目的按鈕在下方,右上方會有成績排序的按鈕』為出發,製作點選左上角按鈕會彈出科目選單,選擇科目後可以看到全班成績,同時也區分出及格和不及格的同學。
這個範例是延續前一篇『切換科目的按鈕在下方,右上方會有成績排序的按鈕』為出發,製作點選左上角按鈕會彈出科目選單,選擇科目後可以看到全班成績,同時也區分出及格和不及格的同學。
點選連結看範例,進入後點擊 preview 可以看實際效果:
http://jqmdesigner.appspot.com/designer.html#&ref=4792917155643392
( 原始資料表長相:https://docs.google.com/spreadsheets/d/1LLpalVcZUIIr0ufGID8UUs1xxSVeYaNdbAaKkpPs61E/edit?usp=sharing )
點選連結看範例,進入後點擊 preview 可以看實際效果:
http://jqmdesigner.appspot.com/designer.html#&ref=4792917155643392
( 原始資料表長相:https://docs.google.com/spreadsheets/d/1LLpalVcZUIIr0ufGID8UUs1xxSVeYaNdbAaKkpPs61E/edit?usp=sharing )
當然,如果你還沒有看上一篇,建議你先去看一下 (『切換科目的按鈕在下方,右上方會有成績排序的按鈕』),這樣才能了解 Google Sheets Table 元件的屬性設定用法喔!
在製作前,同樣的我們使用左側的元件,快速的拉出一個操作畫面,最上面擺 header,header 的左側放上一個按鈕,設定為只有 icon,最下面放入 tabbar,並新增一顆按鈕,最後再使用 CSS 做一些美化的動作,出來的程式碼會長這樣:
HTML:
<div id="home" data-role="page">
<div data-role="header" data-position="fixed" data-theme="b">
<h3>國文成績單</h3>
<a class="ui-btn ui-btn-left ui-icon-bars ui-corner-all ui-btn-icon-notext">Button</a>
</div>
<div role="main" class="ui-content">
<table is="google-sheets-table" id="gk-826OcoS" key="1uanL8PbvBc2rNzXT-yd-q6FQ6TYMZ3Yi7rLeDkrUktM" gid="1055051849" headers="1"></table>
</div>
<div data-position="fixed" data-role="footer">
<div data-role="navbar">
<ul>
<li>
<a data-theme="b">成績</a>
</li>
<li>
<a data-theme="b">及格</a>
</li>
<li>
<a data-theme="b">不及格</a>
</li>
</ul>
</div>
</div>
</div>
CSS:
html,body,div[data-role="page"],.ui-content{
width:100%;
height:100%;
padding:0;
margin:0;
}
div{
box-sizing:border-box;
}
th{
background:#ddd;
}
.ui-content{
padding:10px;
}
div[data-role="header"],div[data-role="footer"]{
box-shadow:0 0 10px #000;
}
li{
margin-bottom:-9px!important;
}
li a{
height:36px;
line-height:28px!important;
margin-top:-1px!important;
}
這時候我們要來使用 jQueryMobile 的 slider panel 功能 ( 可以參考這篇介紹 slider panel 的文章 ),我們在 HTML 程式碼裡頭新增一個 div,並將其屬性設定為 data-role="panel" data-position="left" ,這樣它就會變成一個從左邊滑出來的選單,然後我們只要將科目用 list 的方式放在裡面就完成了。( data-position-fixed="false" 是讓選單不要隨著畫面上下移動, data-display="overlay" 是讓滑出來的選單覆蓋在內容上 )
HTML:
<div id="left-menu" data-role="panel" data-position="left" data-theme="b" data-position-fixed="false" data-display="overlay">
<span>選擇科目</span>
<a class="ui-btn ui-btn-active" data-theme="b" data-rel="close" gid="0">國文</a>
<a class="ui-btn" data-theme="b" data-rel="close" gid="570331424">英文</a>
<a class="ui-btn" data-theme="b" data-rel="close" gid="10780180">數學</a>
</div>
CSS:
#left-menu span{
width:100%;
text-align:center;
height:50px;
line-height:50px;
display:block;
color:#8cf;
font-size:20px;
font-weight:bold;
}
接著只要在 header 左邊的按鈕,設定 href=”左側面板的 id”,就可以點選按鈕就滑出選單囉!不過從上方我們可以看到,在選單內多加了data-rel="close",這是讓我們點選按鈕之後,面板就會收起來的選項。
到這時我們已經完成了畫面的編排,與『切換科目的按鈕在下方,右上方會有成績排序的按鈕』同樣的做法,記得在 footer 的按鈕內加上 query 和 range 的屬性設定,可以幫助我們篩選出及格與不及格的同學,然後在滑出來的選單科目內加上 gid 的設定,可以讓我們切換科目,完成的 HTML 如下:
<div id="home" data-role="page" data-theme="a">
<div data-role="header" data-position="fixed" data-theme="b">
<h3>國文成績單</h3>
<a class="ui-btn ui-btn-left ui-btn-icon-notext ui-icon-bars ui-mini ui-corner-all" href="#left-menu">Button</a>
</div>
<div id="left-menu" data-role="panel" data-position="left" data-theme="b" data-position-fixed="false" data-display="overlay">
<span>選擇科目</span>
<a class="ui-btn ui-btn-active" data-theme="b" data-rel="close" gid="0">國文</a>
<a class="ui-btn" data-theme="b" data-rel="close" gid="570331424">英文</a>
<a class="ui-btn" data-theme="b" data-rel="close" gid="10780180">數學</a>
</div>
<div role="main" class="ui-content">
<table is="google-sheets-table" id="gk-825p76t" key="1LLpalVcZUIIr0ufGID8UUs1xxSVeYaNdbAaKkpPs61E" gid="0" headers="1"></table>
</div>
<div data-position="fixed" data-role="footer">
<div data-role="navbar" style="padding:0; margin:0 0 -1px;">
<ul id="footerBtn">
<li>
<a data-theme="b" class="ui-btn-active ui-state-persist" query range>成績</a>
</li>
<li>
<a data-theme="b" query="select * where C >= 60 order by C desc" range="B1:C20">及格</a>
</li>
<li>
<a data-theme="b" query="select * where C < 60 order by C desc" range="B1:C20">不及格</a>
</li>
</ul>
</div>
</div>
</div>
最後我們只要使用 javascript 來控制就可以囉!( 可以參考前一篇的說明 )
javascript :
(function () {
$(document).on('pageshow', '#home', function () {
var table = $('#gk-825p76t').gk();
$('.ui-table-columntoggle-btn').css({
'display': 'none'
});
$('#left-menu a').on('click', function () {
$('#left-menu a,#footerBtn a').removeClass('ui-btn-active');
$('#footerBtn a').eq(0).addClass('ui-btn-active');
$(this).addClass('ui-btn-active');
var title = $(this).text();
$('h3').text(title + '成績單');
var scoreGid = $(this).attr('gid');
table.gid = scoreGid;
table.range = '';
table.query = '';
table.refresh();
});
$('#footerBtn a').on('click', function () {
var tableQuery = $(this).attr('query');
var tableRange = $(this).attr('range');
table.query = tableQuery;
table.range = tableRange;
table.refresh();
});
});
})();
就這樣,我們完成了第二種成績單的呈現方式!是不是很容易上手呢!^_^