kosen-venture/RocketAnswer

View on GitHub
app/assets/javascripts/answers.js

Summary

Maintainability
A
0 mins
Test Coverage
var fileUploadErrors = {
  maxFileSize: 'ファイルサイズが大きすぎます。',
  minFileSize: 'ファイルサイズが小さすぎます。',
  acceptFileTypes: 'ファイル形式をサポートしていません。',
  maxNumberOfFiles: 'これ以上同時にアップロードできません。',
  uploadedBytes: 'Uploaded bytes exceed file size',
  emptyResult: 'Empty file upload result'
};

editComment = function (elem) {
  $('.panel-body').each(function(){
    var content = window.atob($(this).data('content'))
    $(this).html(content);
  });

  $panelBody = $(elem).closest('.panel-default').children('.panel-body');
  var content = window.atob($panelBody.data('content-raw'))
  $panelBody.html($('<textarea class="form-control" rows=10>').addClass('form-control').val(content));

  $panelBody.append(
    $('<button>').addClass('btn btn-default btn-xs').text('更新')
      .click(function(){
        $.ajax({
          url: '/answers/' + answer_id + '/comments/' + $panelBody.data('comment-id') + '.json',
          data: {
            comment: { content: $panelBody.children('textarea').val() },
            authenticity_token: Rails.csrfToken(),
          },
          type: 'PUT'
        }).done(function(comment) {
          $panelBody.html(comment.content);
        })
      }));
};

$(function () {

    // サムネイル一覧を並び替え可能に
    $('.thumbs ol').sortable({
      distance: 100, //100px以上動かすと動く
      stop: function() { // 並べ替えが確定したとき
        // リストの並び順をhiddenフィールドに格納
        $('.thumbs ol li').each(function() {
          var index = $('.thumbs ol li').index(this);
          $(this).children('input').val(index);
        });
        // submit
        $('form.edit_answer').submit();
      }
    });

    // ファイルアップロードフォーム
    $('#new_answer_file').fileupload({
        dataType: 'json',
        autoUpload: false,
        done: function (e, data) { // 完了時
          // プログレスバーを100%に
          $(data.context).find('.progress-bar').animate({'width': '100%'});

          // ボタンを隠して完了メッセージを表示
          $(data.context).find('.start').html('<span class="label label-success"><i class="fa fa-check"></i>アップロード完了</span>');
          $(data.context).find('.cancel > button').hide();
        },
        progressall: function(e, data) { // 全体の進捗
          // 進捗度を計算し、プログレスバーに反映
          progress = parseInt(data.loaded / data.total * 100, 10);
          $('#progressall').animate({'width': progress + '%'});
        },
        progress: function (e, data) { // 個別の進捗
          // 進捗度を計算し、プログレスバーに反映
          progress = parseInt(data.loaded / data.total * 100, 10);
          $(data.context).find('.progress-bar').animate({'width': progress + '%'});
        }
    });
});