biblesearch / templates / index.html.ep /
Newer Older
249 lines | 7.623kb
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() {
かんせーい
Yuki Kimoto authored on 2014-03-29
22
      if ($(window).height() > 500) {
23
        $('#content').css('height', ($(window).height() - 130) + 'px');
24
      }
コンテンツの高さを調整するようにした
Yuki Kimoto authored on 2014-03-29
25
    });
26

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

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

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

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

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

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

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

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

            
複数回検索できないバグを修正
Yuki Kimoto authored on 2014-03-29
235
  <div id="main">
236
    <div id="content">
improve design
Yuki Kimoto authored on 2014-03-27
237
    </div>
add files
Yuki Kimoto authored on 2014-03-26
238
  </div>
239

            
240

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