visuddhinanda@gmail.com 3 лет назад
Родитель
Сommit
66a555b6a9

+ 25 - 6
app/Http/Controllers/ProgressChapterController.php

@@ -149,6 +149,7 @@ class ProgressChapterController extends Controller
                     $all_count = count($chapters);
                 break;
             case 'lang':
+                
                 $chapters = ProgressChapter::select('lang')
                                             ->selectRaw('count(*) as count')
                                             ->where("progress",">",$minProgress)
@@ -163,12 +164,19 @@ class ProgressChapterController extends Controller
             总共有多少channel
             */
                 $chapters = ProgressChapter::select('channel_id')
-                                            ->selectRaw('count(*) as count')
-                                            ->with(['channel' => function($query) {  //city对应上面province模型中定义的city方法名  闭包内是子查询
+                                           ->selectRaw('count(*) as count')
+                                           ->with(['channel' => function($query) {  //city对应上面province模型中定义的city方法名  闭包内是子查询
                                                 return $query->select('*');
                                             }])
-                                            ->where("progress",">",$minProgress)
-                                            ->groupBy('channel_id')
+                                           ->leftJoin('channels','progress_chapters.channel_id', '=', 'channels.uid')
+                                           ->where("progress",">",$minProgress);
+                if(!empty($request->get('channel_type'))){
+                    $chapters =  $chapters->where('channels.type',$request->get('channel_type'));
+                }
+                if(!empty($request->get('lang'))){
+                    $chapters =  $chapters->where('progress_chapters.lang',$request->get('lang'));
+                }
+                $chapters =  $chapters->groupBy('channel_id')
                                             ->orderBy('count','desc')
                                             ->get();
                 $all_count = count($chapters);
@@ -242,9 +250,20 @@ class ProgressChapterController extends Controller
                     $channel = "";
                 }
 
+
+
                 $param[] = $minProgress;
+
+                if(!empty($request->get('lang'))){
+                    $whereLang = " and pc.lang = ? ";
+                    $param[] = $request->get('lang');
+                }else{
+                    $whereLang = "   ";
+                }                
                 $param_count = $param;
                 $param[] = $offset;
+
+
                 $query = "
                 select tpc.uid, tpc.book ,tpc.para,tpc.channel_id,tpc.title,pt.toc,pt.path,tpc.progress,tpc.summary,tpc.created_at,tpc.updated_at 
                     from (
@@ -261,7 +280,7 @@ class ProgressChapterController extends Controller
                         ) CID 
                         left join $pc as pc on CID.cid = pc.uid 
                         where pc.progress > ? 
-                        $channel
+                        $channel  $whereLang
                         order by created_at desc
                         limit 20 offset ?
                     ) tpc 
@@ -293,7 +312,7 @@ class ProgressChapterController extends Controller
                         ) CID 
                         left join $pc as pc on CID.cid = pc.uid 
                         where pc.progress > ? 
-                        $channel
+                        $channel   $whereLang
                 ";
                 $count = DB::select($query,$param_count);
                 $all_count = $count[0]->count;

+ 18 - 24
public/app/palicanon/index1.php

@@ -229,38 +229,40 @@ span.channel {
             <div class="filter submenu">
                 <div class="title submenu_title">设定</div>
                 <div class='inner' id='filter-setting' >
+                    <div class='settting-item'>
+                        <span>语言</span>
+                        <span>
+                            <select id='setting_lang'>
+                                <option value='auto'>自动</option>
+                                <option value=''>全部</option>
+                                <option value='zh'>中文</option>
+                                <option value='en'>英文</option>
+                            </select>
+                        </span>
+                    </div>
                     <div class='settting-item'>
                         <span>内容类型</span>
                         <span>
-                            <select>
+                            <select id='setting_channel_type'>
                                 <option value=''>全部</option>
-                                <option value='translation'>译文</option>
+                                <option value='translation' selected >译文</option>
                                 <option value='nissaya'>Nissaya</option>
                                 <option value='commentray'>注疏</option>
                             </select>
                         </span>
                     </div>
                     <div class='settting-item'>
-                        <span>完成度阈值</span>
+                        <span>完成度</span>
                         <span>
-                            <select>
+                            <select id='setting_progress'>
                                 <option value='0.9'>90</option>
                                 <option value='0.8'>80</option>
                                 <option value='0.7'>70</option>
                             </select>
                         </span>
                     </div>
-                    <div class='settting-item'>
-                        <span>语言</span>
-                        <span>
-                            <select>
-                                <option value=''>全部</option>
-                                <option value='zh'>中文</option>
-                                <option value='en'>英文</option>
-                            </select>
-                        </span>
-                    </div>
-                    <div><button>还原默认</button><button>应用</button></div>
+
+                    <div><button>还原默认</button><button onclick="updateSetting()">应用</button></div>
                 </div>
             </div>
             <div class="filter submenu">
@@ -275,17 +277,9 @@ span.channel {
                 </div>
             </div>
             <div class="filter submenu">
-                <div class="title submenu_title">作者</div>
+                <div class="title submenu_title"><span>作者</span><span><input type="input" placeholder="🔍" /></span></div>
                 <div class='inner' id='filter-author' ></div>
             </div>
-            <div class="filter submenu">
-                <div class="title submenu_title">语言</div>
-                <div class='inner' id='filter-lang' ></div>
-            </div>
-            <div class="filter submenu">
-                <div class="title submenu_title">类型</div>
-                <div class='inner' id='filter-type' ></div>
-            </div>
         </div>
     </div>
     <div id='course_head_bar' style='flex:6;padding:0 10px 10px 10px;'>

+ 64 - 27
public/app/palicanon/palicanon.js

@@ -1,3 +1,7 @@
+var _lang = "";
+var _langsetting = "";
+var _channelType = 'translation'
+var  _progress = 0.9;
 var _view = "community";
 var main_tag = "";
 var list_tag = new Array();
@@ -9,12 +13,58 @@ var gBreadCrumbs=['','','','','','','','',''];
 var _nextPageStart = 0;
 var _pageSize = 20;
 var _channel = "";
-var _lang = "";
+
 var _tags = "";
 var _channelList;
 
 palicanon_load_term();
 
+function updateSetting(){
+    _langsetting = $("#setting_lang").val();
+    switch ($("#setting_lang").val()) {
+        case 'auto':
+            switch (getCookie("language")) {
+                case 'zh-cn':
+                    _lang = 'zh';
+                    break;
+                case 'zh-tw':
+                    _lang = 'zh';
+                    break;    
+                case '':
+                    lang = '';
+                    break;
+            }
+            break;
+        default:
+            _lang = $("#setting_lang").val();
+            break;
+    }
+    _channelType = $("#setting_channel_type").val();
+    _progress = $("#setting_progress").val();
+
+    localStorage.setItem("pc_filter_setting",{
+        lang : $("#setting_lang").val(),
+        channel_type : _channelType,
+        progress:_progress,
+    })
+
+    LoadAllChannel();
+}
+
+/*
+载入过滤器设置
+*/
+function loadFilterSetting(){
+    if (localStorage.getItem ("pc_filter_setting") !== null) {
+        let setting = localStorage.getItem("pc_filter_setting");
+        _lang = setting.lang;
+        _channel_type = setting.channel_type;
+        _progress = setting.progress;
+    }
+    _nextPageStart = 0;
+    communityGetChapter();
+    LoadAllChannel();
+}
 function community_onload() {
 	$("span[tag]").click(function () {
 		$(this).siblings().removeClass("select");
@@ -139,25 +189,6 @@ function updataHistory(){
 }
 
 function communityGetChapter(offset=0){
-    let strTags = "";
-	if (list_tag.length > 0) {
-		strTags = main_tag + "," + list_tag.join();
-	} else {
-		strTags = main_tag;
-	}
-	console.log(strTags);
-	let lang = getCookie("language");
-    switch (lang) {
-        case 'zh-cn':
-            lang = 'zh-hans';
-            break;
-        case 'zh-tw':
-            lang = 'zh-hant';
-            break;    
-        case '':
-            lang = 'en';
-            break;
-    }
     next_page_loader_show();
     $.getJSON(
 		"/api/v2/progress?view=chapter",
@@ -165,6 +196,7 @@ function communityGetChapter(offset=0){
 			tags: _tags,
 			lang: _lang,
             channel: _channel,
+            channel_type: _channelType,
             offset: offset
 		}
 	)
@@ -1090,7 +1122,11 @@ function select_channel(id,obj=null){
 function LoadAllChannel(){
     $.getJSON(
 		"/api/v2/progress?view=channel",
-		{},
+		{
+            lang:_lang,
+            channel_type: _channelType,
+            progress:_progress,
+        },
 		function (data, status) {
             let html = "";
             html += "<ul>"
@@ -1116,14 +1152,15 @@ function LoadAllLanguage(){
 		{},
 		function (data, status) {
             let html = "";
-            html += "<ul>"
+            html += "<option value=''>全部</option>";
             for (const iterator of data.data.rows) {
-                html += "<li>"
-                html += iterator.lang+"("+iterator.count+")";
-                html += "</li>"                    
+                if(iterator.lang!=''){
+                    html += "<option value='"+iterator.lang+"'>";
+                    html += iterator.lang+"("+iterator.count+")";
+                    html += "</option>"                          
+                }
             }
-            html += "</ul>";
-            $("#filter-lang").html(html);
+            $("#setting_lang").html(html);
         }
     );
 }

+ 1 - 1
public/app/palicanon/router.js

@@ -19,7 +19,7 @@ Router.prototype.refresh = function() {
 };
 Router.prototype.init = function() {
     window.addEventListener('load', this.refresh.bind(this), false);
-    window.addEventListener('hashchange', this.refresh.bind(this), false);
+    //window.addEventListener('hashchange', this.refresh.bind(this), false);
     window.onpopstate = function(event) {
         console.log("location: " + document.location + ", state: " + JSON.stringify(event.state));
         _view = event.state.view;