From 7581da6e2b3cff265b8c8d7714f623eeaf6a80e4 Mon Sep 17 00:00:00 2001
From: daiao <358551898@qq.com>
Date: Tue, 4 Feb 2020 11:02:03 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8A=80=E6=9C=AF=E5=B9=B3=E5=8F=B0=E5=A2=9E?=
 =?UTF-8?q?=E5=88=A0=E6=94=B9=E6=9F=A5html+js+css?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../modals/admin-edit-repertoire-modal.js     | 31 +++++++++
 .../javascripts/admins/repertoires/index.js   | 65 +++++++++++++++++++
 .../admins/repertoires_controller.rb          | 21 ++++++
 app/views/admins/repertoires/destroy.js.erb   |  2 +
 app/views/admins/repertoires/index.html.erb   |  4 +-
 .../shared/_create_repertoire_modal.html.erb  | 28 ++++++++
 app/views/admins/repertoires/update.js.erb    |  2 +
 7 files changed, 151 insertions(+), 2 deletions(-)
 create mode 100644 app/assets/javascripts/admins/modals/admin-edit-repertoire-modal.js
 create mode 100644 app/assets/javascripts/admins/repertoires/index.js
 create mode 100644 app/views/admins/repertoires/destroy.js.erb
 create mode 100644 app/views/admins/repertoires/update.js.erb

diff --git a/app/assets/javascripts/admins/modals/admin-edit-repertoire-modal.js b/app/assets/javascripts/admins/modals/admin-edit-repertoire-modal.js
new file mode 100644
index 000000000..f316c70b9
--- /dev/null
+++ b/app/assets/javascripts/admins/modals/admin-edit-repertoire-modal.js
@@ -0,0 +1,31 @@
+$(document).on('turbolinks:load', function() {
+    $('.admin-modal-container').on('show.bs.modal', '.modal.admin-edit-repertoire-modal', function(){
+        var $modal = $('.modal.admin-edit-repertoire-modal');
+        var $form = $modal.find('form.admin-edit-repertoire-form');
+
+        $form.validate({
+            errorElement: 'span',
+            errorClass: 'danger text-danger',
+            rules: {
+                'repertoire[name]': {
+                    required: true,
+                    maxlength: 20
+                }
+            }
+        });
+
+        $modal.on('click', '.submit-btn', function(){
+            $form.find('.error').html('');
+            var url = $form.attr('action');
+
+            if ($form.valid()) {
+                $.ajax({
+                    method: 'PATCH',
+                    dataType: 'script',
+                    url: url,
+                    data: $form.serialize()
+                });
+            }
+        });
+    });
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/admins/repertoires/index.js b/app/assets/javascripts/admins/repertoires/index.js
new file mode 100644
index 000000000..4c4990a75
--- /dev/null
+++ b/app/assets/javascripts/admins/repertoires/index.js
@@ -0,0 +1,65 @@
+$(document).on('turbolinks:load', function() {
+    if ($('body.admins-repertoires-index-page').length > 0) {
+
+        // ============== 新建 ===============
+        var $modal = $('.modal.admin-create-repertoire-modal');
+        var $form = $modal.find('form.admin-create-repertoire-form');
+        var $nameInput = $form.find('input[name="name"]');
+
+        $form.validate({
+            errorElement: 'span',
+            errorClass: 'danger text-danger',
+            rules: {
+                name: {
+                    required: true
+                }
+            }
+        });
+
+        // modal ready fire
+        $modal.on('show.bs.modal', function () {
+            $nameInput.val('');
+        });
+
+        $modal.on('click', '.submit-btn', function(){
+            $form.find('.error').html('');
+
+            if ($form.valid()) {
+                var url = $form.data('url');
+
+                $.ajax({
+                    method: 'POST',
+                    dataType: 'json',
+                    url: url,
+                    data: $form.serialize(),
+                    success: function(){
+                        $.notify({ message: '创建成功' });
+                        $modal.modal('hide');
+
+                        setTimeout(function(){
+                            window.location.reload();
+                        }, 500);
+                    },
+                    error: function(res){
+                        var data = res.responseJSON;
+                        $form.find('.error').html(data.message);
+                    }
+                });
+            }
+        });
+
+        $(".repertoire-list-container").on("change", '.repertoire-source-form', function () {
+            var s_id = $(this).attr("data-id");
+            var s_value = $(this).val();
+            var s_name = $(this).attr("name");
+            var json = {};
+            json[s_name] = s_value;
+            $.ajax({
+                url: "/admins/repertoires/" + s_id,
+                type: "PUT",
+                dataType:'script',
+                data: json
+            });
+        });
+    }
+});
\ No newline at end of file
diff --git a/app/controllers/admins/repertoires_controller.rb b/app/controllers/admins/repertoires_controller.rb
index 19cd31f98..3ac6960e3 100644
--- a/app/controllers/admins/repertoires_controller.rb
+++ b/app/controllers/admins/repertoires_controller.rb
@@ -8,6 +8,27 @@ class Admins::RepertoiresController < Admins::BaseController
     @repertoire = current_repertoire
   end
 
+  def update
+    Rails.logger.info("#################--------")
+    if params[:repertoire] && params[:repertoire][:name].present?
+      name = params[:repertoire][:name].to_s.strip
+      current_repertoire.update_attributes!(name: name)
+    end
+    @repertoires = Repertoire.all
+  end
+
+  def create
+    name = params[:name].to_s.strip
+    return render_error('名称重复') if Repertoire.where(name: name).exists?
+    Repertoire.create!(name: name)
+    render_ok
+  end
+
+  def destroy
+    @repertoire_id = params[:id]
+    current_repertoire.destroy!
+  end
+
   private
   def current_repertoire
     @_current_repertoire = Repertoire.find params[:id]
diff --git a/app/views/admins/repertoires/destroy.js.erb b/app/views/admins/repertoires/destroy.js.erb
new file mode 100644
index 000000000..1190f64f0
--- /dev/null
+++ b/app/views/admins/repertoires/destroy.js.erb
@@ -0,0 +1,2 @@
+$.notify({ message: '删除成功' });
+$(".discipline-item-<%= @repertoire_id %>").remove();
\ No newline at end of file
diff --git a/app/views/admins/repertoires/index.html.erb b/app/views/admins/repertoires/index.html.erb
index 23b06cc1e..58a8017c8 100644
--- a/app/views/admins/repertoires/index.html.erb
+++ b/app/views/admins/repertoires/index.html.erb
@@ -4,11 +4,11 @@
 
 <div class="box search-form-container repertoires-list-form rig">
   <div class="flex-1">
-    <%= javascript_void_link '新增', class: 'btn btn-primary', data: { toggle: 'modal', target: '.admin-create-repertoires-modal' } %>
+    <%= javascript_void_link '新增', class: 'btn btn-primary', data: { toggle: 'modal', target: '.admin-create-repertoire-modal' } %>
   </div>
 </div>
 
-<div class="box admin-list-container repertoires-list-container">
+<div class="box admin-list-container repertoire-list-container">
   <%= render(partial: 'admins/repertoires/shared/list') %>
 </div>
 
diff --git a/app/views/admins/repertoires/shared/_create_repertoire_modal.html.erb b/app/views/admins/repertoires/shared/_create_repertoire_modal.html.erb
index e69de29bb..9380fb07b 100644
--- a/app/views/admins/repertoires/shared/_create_repertoire_modal.html.erb
+++ b/app/views/admins/repertoires/shared/_create_repertoire_modal.html.erb
@@ -0,0 +1,28 @@
+<div class="modal fade admin-create-repertoire-modal" tabindex="-1" role="dialog" aria-hidden="true">
+  <div class="modal-dialog modal-dialog-centered" role="document">
+    <div class="modal-content">
+      <div class="modal-header">
+        <h5 class="modal-title">新建课程方向</h5>
+        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+          <span aria-hidden="true">&times;</span>
+        </button>
+      </div>
+      <div class="modal-body">
+        <form class="admin-create-repertoire-form" data-url="<%= admins_repertoires_path %>">
+          <div class="form-group d-flex">
+            <label for="new_mirror_id" class="col-form-label">名称:</label>
+            <div class="w-75 d-flex flex-column">
+              <%= text_field_tag(:name, nil, class: 'form-control', placeholder: '请输入名称') %>
+            </div>
+          </div>
+
+          <div class="error text-danger"></div>
+        </form>
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+        <button type="button" class="btn btn-primary submit-btn">确认</button>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/app/views/admins/repertoires/update.js.erb b/app/views/admins/repertoires/update.js.erb
new file mode 100644
index 000000000..1d4f1fafa
--- /dev/null
+++ b/app/views/admins/repertoires/update.js.erb
@@ -0,0 +1,2 @@
+$('.modal.admin-edit-repertoire-modal').modal("hide");
+$(".repertoire-list-container").html("<%= j(render :partial => 'admins/repertoires/shared/list') %>");
\ No newline at end of file