biblesearch / templates / index.html.ep /
Newer Older
227 lines | 6.997kb
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-27
18
    
検索の送りを作成
Yuki Kimoto authored on 2014-03-28
19
    var fragment = location.hash;
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
20
    
21
    $("#word-pos").text('-');
検索の送りを作成
Yuki Kimoto authored on 2014-03-28
22
    
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
23
    $("#up-arrow").on('click', function () {
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
24
      if (current_pos) {
25
        var prev_pos = current_pos - 1;
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
26
        
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
27
        if (prev_pos < 1) {
28
          var prev_book_id;
29
          for (var i = 0; i < found_book_ids.length; i++) {
30
            if (found_book_ids[i] === current_book_id) {
31
              prev_book_id = found_book_ids[i - 1];
32
            }
33
          }
34
          if (prev_book_id) {
35
            current_pos = current_word_count_h[prev_book_id];
36
            $('#books tr[id=book-' + prev_book_id + ']').find('.book').trigger('click');
37
          }
38
        } else {
39
          location.href = '#word-' + prev_pos;
40
          current_pos--;
41
          $('#word-pos').text(prev_pos);
42
        }
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
43
      }
44
    });
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
45

            
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
46
    $("#down-arrow").on('click', function () {
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
47
      if (current_pos) {
48
        var next_pos = current_pos - 0 + 1;
49
        
50
        if (next_pos > max_search_pos) {
51
          var next_book_id;
52
          for (var i = 0; i < found_book_ids.length; i++) {
53
            if (found_book_ids[i] === current_book_id) {
54
              next_book_id = found_book_ids[i + 1];
55
            }
56
          }
57
          if (next_book_id) {
58
            current_pos = 1;
59
            $('#books tr[id=book-' + next_book_id + ']').find('.book').trigger('click');
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
60
          }
61
        }
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
62
        else {
63
          location.href = '#word-' + next_pos;
64
          current_pos++;
65
          $('#word-pos').text(next_pos);
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
66
        }
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
67
      }
68
    });
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
69
    
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
70
    // 書をクリック
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
71
    $('.book').on('click', function () {
72
      var book_id_str = $(this).attr('id');
73
      var ret = book_id_str.match(/book-(\d+)/);
74
      var book_id = ret[1];
検索の送りを作成
Yuki Kimoto authored on 2014-03-28
75
      
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
76
      $.get('/api/book/' + book_id + '/content', function (result) {
77

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

            
小さなバグを修正
Yuki Kimoto authored on 2014-03-29
86
          var word_re = new RegExp('(' + current_word + ')', 'g');
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
87
          result.content = result.content.replace(word_re, function (all, group1) { return replace_cb(all, group1); });
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
88
          max_search_pos = i - 1;
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
89
        }
90
        
91
        $("#content").html(result.content);
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
92
        if (current_word) {
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
93
          if (!current_pos) {
94
            current_pos = 1;
95
          }
96
          location.href = '#word-' + current_pos;
97
          $('#word-pos').text(current_pos);
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
98
        }
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
99
        current_book_id = book_id;
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
100
        
101
        $('#books tr').each(function () {
102
          var book_id_str = $(this).attr('id');
103
          if (book_id_str) {
104
            var book_id = (book_id_str.match(/book-(\d+)/))[1];
105
            if (book_id === current_book_id) {
106
              $(this).find('.book-short-name').css('background', '#DDDDDD');
107
            }
108
            else {
109
              $(this).find('.book-short-name').css('background', '#FFFFFF');
110
            }
111
          }
112
        });
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
113
      });
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
114
    });
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
115
    
116
    // 検索をクリック
117
    $('#search').on('click', function () {
118
      var word = $(this).closest('div').find('[name=word]').val();
119
      
120
      if (word) {
121
        var word_count_h;
122
        $.get('/api/word-count/' + word, function (result) {
123
          var word_count_h = result.word_count;
次へと前へが正しく動くようにした。
Yuki Kimoto authored on 2014-03-29
124
          current_word_count_h = word_count_h;
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
125

            
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
126
          $('#books tr').each(function () {
127
            var book_id_str = $(this).attr('id');
128
            if (book_id_str) {
129
              var book_id = (book_id_str.match(/book-(\d+)/))[1];
130
              if (word_count_h[book_id] === 0) {
131
                $(this).css('display', 'none');
132
              }
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
133
              else {
134
                found_book_ids.push(book_id);
135
              }
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
136
              $(this).find('.word-count').text(word_count_h[book_id]);
137
            }
138
          });
小さなバグを修正
Yuki Kimoto authored on 2014-03-29
139
          $('#word-count-header').text('回数');
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
140
          
141
          current_word = word;
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
142
          
143
          $('#up-down').css('display', 'inline');
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
144
        });
145
        
146
      }
147
      
148
      return false;
149
    });
Enterで検索できるようにした。
Yuki Kimoto authored on 2014-03-29
150
    
151
    // Enterで検索
152
    $('[name=word]').bind('keypress', function (e) {
153
      if (e.keyCode === 13) {
154
        $('#search').trigger('click');
155
      }
156
    });
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
157
  });
158
% end
159

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

            
162
  <div id="boxA">
163
    <h1>口語訳聖書オンライン語句検索</h1>
164
  </div>
165

            
166
  <div id="boxB">
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
167
      <div style="margin-bottom:5px">
Enterで検索できるようにした。
Yuki Kimoto authored on 2014-03-29
168
        <input type="text" name="word", style = "width:160px">
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
169
        <button id="search" style="width:50px;padding:2px;">検索</button>
170
      </div>
add files
Yuki Kimoto authored on 2014-03-26
171
      <div style="margin-bottom:10px;">
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
172
        <table style="border-collapse: collapse;width:100%;color:#333333">
173
          <tr>
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
174
            <td style="width:90px;height:25px;">
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
175
              <a href="<%= url_for('/') %>" style="color:blue">聖書</a>
176
            </td>
177
            <td>
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
178
              <span id="up-down" style="display:none">
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
179
                <a id="up-arrow" href="javascript:void()">▲</a>
180
                <div id="word-pos" style="display:inline-block;border:1px solid #DDDDDD;padding:2px 5px;width:35px;text-align:center">
181
                </div>
182
                <a id="down-arrow" href="javascript:void()">▼</a>
183
              </span>
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
184
            </td>
185
          </tr>
186
        </table>
add files
Yuki Kimoto authored on 2014-03-26
187
      </div>
188
      <div style="border:1px solid gray;width:218px;height:400px;overflow:auto;padding:5px">
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
189
        <table id="books" style="border-collapse: collapse;width:100%;color:#333333">
improve design
Yuki Kimoto authored on 2014-03-27
190
            <tr style="border-bottom:1px solid #EEEEEE">
191
              <td>
192
193
              </td>
小さなバグを修正
Yuki Kimoto authored on 2014-03-29
194
              <td id="word-count-header" style="text-align:right">
improve design
Yuki Kimoto authored on 2014-03-27
195
              </td>
196
            </tr>
検索の送りを作成
Yuki Kimoto authored on 2014-03-28
197
          % my $prev_book_id;
add files
Yuki Kimoto authored on 2014-03-26
198
          % for my $book (@$books) {
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
199
            <tr id="<%= "book-$book->{id}" %>">
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
200
              <td class="book-short-name">
201
                <a class="book" id="<%= "book-$book->{id}" %>" href="javascript:void(0)">
202
                  <%= $book->{short_name} %>
203
                </a>
204
              </td>
205
              <td class="word-count" style="text-align:right">
206
              </td>
improve design
Yuki Kimoto authored on 2014-03-27
207
            </tr>
add files
Yuki Kimoto authored on 2014-03-26
208
          % }
improve design
Yuki Kimoto authored on 2014-03-27
209
        </table>
add files
Yuki Kimoto authored on 2014-03-26
210
      </div>
211
  </div>
212

            
213
  <div id="boxC">
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
214
    <div id="content" style="height:500px;overflow:auto">
improve design
Yuki Kimoto authored on 2014-03-27
215
    </div>
add files
Yuki Kimoto authored on 2014-03-26
216
  </div>
217

            
218

            
219
  <div id="boxD">
improve design
Yuki Kimoto authored on 2014-03-27
220
    <div style="border-top:1px solid #AAAAAA;padding-top:10px;">
221
      This site is create by
222
      <a href="http://d.hatena.ne.jp/perlcodesample">Perl</a> +
223
      <a href="http://d.hatena.ne.jp/perlcodesample/20140319/1395203665">Mojolicious</a>.
224
      Auther is <a href="https://twitter.com/yukikimoto2">Yuki kimoto</a>.
225
    </div>
add files
Yuki Kimoto authored on 2014-03-26
226
  </div>
227
</div>