biblesearch / templates / index.html.ep /
Newer Older
254 lines | 7.796kb
add files
Yuki Kimoto authored on 2014-03-26
1
<%
2
  my $dbi = app->dbi;
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
3
  my $books = $dbi->model('book')->select(['id', 'short_name'])->all;
add files
Yuki Kimoto authored on 2014-03-26
4
%>
5

            
6

            
7
% layout 'common';
8

            
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
9
%= javascript begin
10
  $(document).ready(function () {
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
11
  
12
    var current_word;
13
    var current_book_id;
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
14
    var found_book_ids = [];
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
15
    var max_search_pos;
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
16
    var current_word_count_h;
17
    var current_pos;
こまかなバグを修正
Yuki Kimoto authored on 2014-03-29
18
    var keep_current_pos = false;
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
19
    
コンテンツの高さを調整するようにした
Yuki Kimoto authored on 2014-03-29
20
    var timer = false;
21
    $(window).resize(function() {
22
        if (timer !== false) {
23
            clearTimeout(timer);
24
        }
25
        timer = setTimeout(function() {
26
            if ($(window).height() > 500) {
27
              $('#content').css('height', ($(window).height() - 130) + 'px');
28
            }
29
        }, 200);
30
    });
31

            
32
    $(window).trigger('resize');
33
    
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
34
    $("#word-pos").text('-');
検索の送りを作成
Yuki Kimoto authored on 2014-03-28
35
    
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
36
    $("#up-arrow").on('click', function () {
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
37
      if (current_pos) {
38
        var prev_pos = current_pos - 1;
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
39
        
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
40
        if (prev_pos < 1) {
41
          var prev_book_id;
42
          for (var i = 0; i < found_book_ids.length; i++) {
43
            if (found_book_ids[i] === current_book_id) {
44
              prev_book_id = found_book_ids[i - 1];
45
            }
46
          }
47
          if (prev_book_id) {
48
            current_pos = current_word_count_h[prev_book_id];
こまかなバグを修正
Yuki Kimoto authored on 2014-03-29
49
            keep_current_pos = true;
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
50
            $('#books tr[id=book-' + prev_book_id + ']').find('.book').trigger('click');
51
          }
52
        } else {
53
          location.href = '#word-' + prev_pos;
スクロールの位置を調整
Yuki Kimoto authored on 2014-03-29
54
          scroll_little_up ();
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
55
          current_pos--;
56
          $('#word-pos').text(prev_pos);
57
        }
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
58
      }
59
    });
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
60

            
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
61
    $("#down-arrow").on('click', function () {
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
62
      if (current_pos) {
63
        var next_pos = current_pos - 0 + 1;
64
        
65
        if (next_pos > max_search_pos) {
66
          var next_book_id;
67
          for (var i = 0; i < found_book_ids.length; i++) {
68
            if (found_book_ids[i] === current_book_id) {
69
              next_book_id = found_book_ids[i + 1];
70
            }
71
          }
72
          if (next_book_id) {
73
            current_pos = 1;
こまかなバグを修正
Yuki Kimoto authored on 2014-03-29
74
            keep_current_pos = true;
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
75
            $('#books tr[id=book-' + next_book_id + ']').find('.book').trigger('click');
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
76
          }
77
        }
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
78
        else {
79
          location.href = '#word-' + next_pos;
スクロールの位置を調整
Yuki Kimoto authored on 2014-03-29
80
          scroll_little_up();
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
81
          current_pos++;
82
          $('#word-pos').text(next_pos);
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
83
        }
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
84
      }
85
    });
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
86
    
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
87
    // 書をクリック
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
88
    $('.book').on('click', function () {
89
      var book_id_str = $(this).attr('id');
90
      var ret = book_id_str.match(/book-(\d+)/);
91
      var book_id = ret[1];
検索の送りを作成
Yuki Kimoto authored on 2014-03-28
92
      
聖書の部分は静的に配信できるようにした。
Yuki Kimoto authored on 2014-03-29
93
      $.get('/api/book/' + book_id + '/content.json', function (result) {
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
94

            
小さなバグを修正
Yuki Kimoto authored on 2014-03-29
95
        if (current_word) {
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
96
          var i = 1;
97
          var replace_cb = function (all, group1) {
98
            var after = '<a style="background:#00ffff" id="word-' + i + '">' + group1 + '</a>';
99
            i = i + 1;
100
            return after;
101
          };
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
102

            
小さなバグを修正
Yuki Kimoto authored on 2014-03-29
103
          var word_re = new RegExp('(' + current_word + ')', 'g');
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
104
          result.content = result.content.replace(word_re, function (all, group1) { return replace_cb(all, group1); });
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
105
          max_search_pos = i - 1;
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
106
        }
107
        
108
        $("#content").html(result.content);
109
        current_book_id = book_id;
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
110
        
111
        $('#books tr').each(function () {
112
          var book_id_str = $(this).attr('id');
113
          if (book_id_str) {
114
            var book_id = (book_id_str.match(/book-(\d+)/))[1];
115
            if (book_id === current_book_id) {
116
              $(this).find('.book-short-name').css('background', '#DDDDDD');
117
            }
118
            else {
119
              $(this).find('.book-short-name').css('background', '#FFFFFF');
120
            }
121
          }
122
        });
こまかなバグを修正
Yuki Kimoto authored on 2014-03-29
123
        
124
        if (current_word) {
125
          if (!keep_current_pos || !current_pos) {
126
            current_pos = 1;
127
          }
128
          $('#word-pos').text(current_pos);
129
          location.href = '#word-' + current_pos;
デザインの調整
Yuki Kimoto authored on 2014-03-29
130
          scroll_little_up();
こまかなバグを修正
Yuki Kimoto authored on 2014-03-29
131
        }
132
        keep_current_pos = false;
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
133
      });
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
134
    });
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
135
    
136
    // 検索をクリック
137
    $('#search').on('click', function () {
138
      var word = $(this).closest('div').find('[name=word]').val();
139
      
140
      if (word) {
141
        var word_count_h;
142
        $.get('/api/word-count/' + word, function (result) {
143
          var word_count_h = result.word_count;
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
144
          current_word_count_h = word_count_h;
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
145

            
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
146
          $('#books tr').each(function () {
147
            var book_id_str = $(this).attr('id');
148
            if (book_id_str) {
149
              var book_id = (book_id_str.match(/book-(\d+)/))[1];
150
              if (word_count_h[book_id] === 0) {
151
                $(this).css('display', 'none');
152
              }
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
153
              else {
154
                found_book_ids.push(book_id);
複数回検索できないバグを修正
Yuki Kimoto authored on 2014-03-29
155
                $(this).css('display', '');
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
156
              }
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
157
              $(this).find('.word-count').text(word_count_h[book_id]);
158
            }
159
          });
小さなバグを修正
Yuki Kimoto authored on 2014-03-29
160
          $('#word-count-header').text('回数');
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
161
          
162
          current_word = word;
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
163
          
164
          $('#up-down').css('display', 'inline');
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
165
        });
166
        
167
      }
168
      
169
      return false;
170
    });
Enterで検索できるようにした。
Yuki Kimoto authored on 2014-03-29
171
    
172
    // Enterで検索
173
    $('[name=word]').bind('keypress', function (e) {
174
      if (e.keyCode === 13) {
175
        $('#search').trigger('click');
176
      }
177
    });
スクロールの位置を調整
Yuki Kimoto authored on 2014-03-29
178
    
179
    // 少し上へスクロール
180
    function scroll_little_up () {
181
      var current_scroll_top = $('#content').scrollTop();
デザインの調整
Yuki Kimoto authored on 2014-03-29
182
      $('#content').scrollTop(current_scroll_top - 70);
スクロールの位置を調整
Yuki Kimoto authored on 2014-03-29
183
    }
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
184
  });
185
% end
186

            
add files
Yuki Kimoto authored on 2014-03-26
187
<div id="container">
188

            
複数回検索できないバグを修正
Yuki Kimoto authored on 2014-03-29
189
  <div id="header">
add files
Yuki Kimoto authored on 2014-03-26
190
    <h1>口語訳聖書オンライン語句検索</h1>
191
  </div>
192

            
複数回検索できないバグを修正
Yuki Kimoto authored on 2014-03-29
193
  <div id="side">
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
194
      <div style="margin-bottom:5px">
こまかなバグを修正
Yuki Kimoto authored on 2014-03-29
195
        <input type="text" name="word", style = "width:160px" value="アブラハム">
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
196
        <button id="search" style="width:50px;padding:2px;">検索</button>
197
      </div>
add files
Yuki Kimoto authored on 2014-03-26
198
      <div style="margin-bottom:10px;">
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
199
        <table style="border-collapse: collapse;width:100%;color:#333333">
200
          <tr>
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
201
            <td style="width:90px;height:25px;">
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
202
              <a href="<%= url_for('/') %>" style="color:blue">聖書</a>
203
            </td>
204
            <td>
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
205
              <span id="up-down" style="display:none">
javascriptのエラーを修正
Yuki Kimoto authored on 2014-03-29
206
                <a id="up-arrow" href="javascript:void(0)">▲</a>
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
207
                <div id="word-pos" style="display:inline-block;border:1px solid #DDDDDD;padding:2px 5px;width:35px;text-align:center">
208
                </div>
javascriptのエラーを修正
Yuki Kimoto authored on 2014-03-29
209
                <a id="down-arrow" href="javascript:void(0)">▼</a>
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
210
              </span>
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
211
            </td>
212
          </tr>
213
        </table>
add files
Yuki Kimoto authored on 2014-03-26
214
      </div>
複数回検索できないバグを修正
Yuki Kimoto authored on 2014-03-29
215
      <div style="border:1px solid gray;width:218px;height:300px;overflow:auto;padding:5px">
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
216
        <table id="books" style="border-collapse: collapse;width:100%;color:#333333">
improve design
Yuki Kimoto authored on 2014-03-27
217
            <tr style="border-bottom:1px solid #EEEEEE">
218
              <td>
219
220
              </td>
小さなバグを修正
Yuki Kimoto authored on 2014-03-29
221
              <td id="word-count-header" style="text-align:right">
improve design
Yuki Kimoto authored on 2014-03-27
222
              </td>
223
            </tr>
検索の送りを作成
Yuki Kimoto authored on 2014-03-28
224
          % my $prev_book_id;
add files
Yuki Kimoto authored on 2014-03-26
225
          % for my $book (@$books) {
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
226
            <tr id="<%= "book-$book->{id}" %>">
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
227
              <td class="book-short-name">
228
                <a class="book" id="<%= "book-$book->{id}" %>" href="javascript:void(0)">
229
                  <%= $book->{short_name} %>
230
                </a>
231
              </td>
232
              <td class="word-count" style="text-align:right">
233
              </td>
improve design
Yuki Kimoto authored on 2014-03-27
234
            </tr>
add files
Yuki Kimoto authored on 2014-03-26
235
          % }
improve design
Yuki Kimoto authored on 2014-03-27
236
        </table>
add files
Yuki Kimoto authored on 2014-03-26
237
      </div>
238
  </div>
239

            
複数回検索できないバグを修正
Yuki Kimoto authored on 2014-03-29
240
  <div id="main">
241
    <div id="content">
improve design
Yuki Kimoto authored on 2014-03-27
242
    </div>
add files
Yuki Kimoto authored on 2014-03-26
243
  </div>
244

            
245

            
複数回検索できないバグを修正
Yuki Kimoto authored on 2014-03-29
246
  <div id="footer">
デザインの調整
Yuki Kimoto authored on 2014-03-29
247
    <div id="footer-content">
improve design
Yuki Kimoto authored on 2014-03-27
248
      This site is create by
249
      <a href="http://d.hatena.ne.jp/perlcodesample">Perl</a> +
250
      <a href="http://d.hatena.ne.jp/perlcodesample/20140319/1395203665">Mojolicious</a>.
251
      Auther is <a href="https://twitter.com/yukikimoto2">Yuki kimoto</a>.
252
    </div>
add files
Yuki Kimoto authored on 2014-03-26
253
  </div>
254
</div>