biblesearch / templates / index.html.ep /
Newer Older
206 lines | 6.258kb
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-27
16
    
検索の送りを作成
Yuki Kimoto authored on 2014-03-28
17
    var fragment = location.hash;
18
    var current_pos;
19
    if (fragment) {
20
      var ret = fragment.match(/word-(\d)/);
21
      current_pos = ret[1] - 0;
22
    }
23
    else {
24
      current_pos = 1;
25
    }
26
    $("#word-pos").text(current_pos);
27
    
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
28
    $("#up-arrow").on('click', function () {
29
      var current_pos = $('#word-pos').text();
30
      var prev_pos = current_pos - 1;
31
      
32
      if (prev_pos < 1) {
文字列の置換をjavascript側で行うようにした。
Yuki Kimoto authored on 2014-03-29
33
        
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
34
      } else {
35
        location.href = '#word-' + prev_pos;
36
        $('#word-pos').text(prev_pos);
37
      }
38
    });
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
39

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

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

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

            
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
112
          $('#books tr').each(function () {
113
            var book_id_str = $(this).attr('id');
114
            if (book_id_str) {
115
              var book_id = (book_id_str.match(/book-(\d+)/))[1];
116
              if (word_count_h[book_id] === 0) {
117
                $(this).css('display', 'none');
118
              }
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
119
              else {
120
                found_book_ids.push(book_id);
121
              }
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
122
              $(this).find('.word-count').text(word_count_h[book_id]);
123
            }
124
          });
小さなバグを修正
Yuki Kimoto authored on 2014-03-29
125
          $('#word-count-header').text('回数');
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
126
          
127
          current_word = word;
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
128
          
129
          $('#up-down').css('display', 'inline');
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
130
        });
131
        
132
      }
133
      
134
      return false;
135
    });
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
136
  });
137
% end
138

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

            
141
  <div id="boxA">
142
    <h1>口語訳聖書オンライン語句検索</h1>
143
  </div>
144

            
145
  <div id="boxB">
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
146
      <div style="margin-bottom:5px">
147
        <%= text_field 'word' , style => "width:160px" %>
148
        <button id="search" style="width:50px;padding:2px;">検索</button>
149
      </div>
add files
Yuki Kimoto authored on 2014-03-26
150
      <div style="margin-bottom:10px;">
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
151
        <table style="border-collapse: collapse;width:100%;color:#333333">
152
          <tr>
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
153
            <td style="width:90px;height:25px;">
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
154
              <a href="<%= url_for('/') %>" style="color:blue">聖書</a>
155
            </td>
156
            <td>
単語の位置が1になるバグを修正
Yuki Kimoto authored on 2014-03-29
157
              <span id="up-down" style="display:none">
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
158
                <a id="up-arrow" href="javascript:void()">▲</a>
159
                <div id="word-pos" style="display:inline-block;border:1px solid #DDDDDD;padding:2px 5px;width:35px;text-align:center">
160
                </div>
161
                <a id="down-arrow" href="javascript:void()">▼</a>
162
              </span>
アンカーを移動できるようにした。
Yuki Kimoto authored on 2014-03-27
163
            </td>
164
          </tr>
165
        </table>
add files
Yuki Kimoto authored on 2014-03-26
166
      </div>
167
      <div style="border:1px solid gray;width:218px;height:400px;overflow:auto;padding:5px">
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
168
        <table id="books" style="border-collapse: collapse;width:100%;color:#333333">
improve design
Yuki Kimoto authored on 2014-03-27
169
            <tr style="border-bottom:1px solid #EEEEEE">
170
              <td>
171
172
              </td>
小さなバグを修正
Yuki Kimoto authored on 2014-03-29
173
              <td id="word-count-header" style="text-align:right">
improve design
Yuki Kimoto authored on 2014-03-27
174
              </td>
175
            </tr>
検索の送りを作成
Yuki Kimoto authored on 2014-03-28
176
          % my $prev_book_id;
add files
Yuki Kimoto authored on 2014-03-26
177
          % for my $book (@$books) {
件数取得をajaxにした
Yuki Kimoto authored on 2014-03-29
178
            <tr id="<%= "book-$book->{id}" %>">
書を選択したら色がつくようにした
Yuki Kimoto authored on 2014-03-29
179
              <td class="book-short-name">
180
                <a class="book" id="<%= "book-$book->{id}" %>" href="javascript:void(0)">
181
                  <%= $book->{short_name} %>
182
                </a>
183
              </td>
184
              <td class="word-count" style="text-align:right">
185
              </td>
improve design
Yuki Kimoto authored on 2014-03-27
186
            </tr>
add files
Yuki Kimoto authored on 2014-03-26
187
          % }
improve design
Yuki Kimoto authored on 2014-03-27
188
        </table>
add files
Yuki Kimoto authored on 2014-03-26
189
      </div>
190
  </div>
191

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

            
197

            
198
  <div id="boxD">
improve design
Yuki Kimoto authored on 2014-03-27
199
    <div style="border-top:1px solid #AAAAAA;padding-top:10px;">
200
      This site is create by
201
      <a href="http://d.hatena.ne.jp/perlcodesample">Perl</a> +
202
      <a href="http://d.hatena.ne.jp/perlcodesample/20140319/1395203665">Mojolicious</a>.
203
      Auther is <a href="https://twitter.com/yukikimoto2">Yuki kimoto</a>.
204
    </div>
add files
Yuki Kimoto authored on 2014-03-26
205
  </div>
206
</div>