Ver código fonte

Now "done", angular should have tests written but i'm out of time.

Lily Carpenter 10 anos atrás
pai
commit
4831337497

+ 29 - 13
twilio/app/assets/javascripts/messages.js

@@ -4,29 +4,45 @@
4 4
     app.controller('MessagesController', function($scope, Restangular){
5 5
         $scope.baseMessages = Restangular.all('messages');
6 6
 
7
-        $scope.baseMessages.getList().then(function(messages){
8
-            $scope.messages = messages;
9
-        });
7
+        $scope.baseMessages.refresh = function(){
8
+            $scope.baseMessages.getList().then(function(messages){
9
+                $scope.messages = messages;
10
+            })
11
+        };
12
+
13
+        $scope.baseMessages.remove = function(message){
14
+            message.remove();
15
+            $scope.baseMessages.refresh();
16
+        };
17
+
18
+        $scope.baseMessages.refresh();
19
+
10 20
     });
11 21
 
12
-    app.directive('messageForm', function(){
22
+    app.directive('messageForms', function(){
13 23
         return {
14 24
             restrict: "E",
15
-            templateUrl: 'message-form.html'
25
+            templateUrl: 'message-forms.html'
16 26
         }
17 27
     });
18 28
 
19 29
     app.controller('MessageController', function($scope, $timeout){
20
-        this.delete = function(message){
21
-            message.remove();
22
-        };
23
-
24
-        this.create = function(message){
25
-            $scope.baseMessages.post(message);
26
-        };
27
-
28 30
         var timeout = null;
29 31
         var debounceUpdate = function(new_message, old_message){
32
+            if(!new_message.id){
33
+                if($scope['message__form'].$valid){
34
+                    if(timeout){
35
+                        $timeout.cancel(timeout);
36
+                    }
37
+                    timeout = $timeout(function(){
38
+                        $scope.baseMessages.post(new_message);
39
+                        $scope.baseMessages.refresh();
40
+                    }, 1000);
41
+                }
42
+
43
+                return;
44
+            }
45
+
30 46
             if(new_message == old_message || $scope['message_' + new_message.id + '_form'].$invalid){
31 47
                 return;
32 48
             }

+ 7 - 5
twilio/app/assets/javascripts/templates/message-form.html.haml

@@ -1,4 +1,4 @@
1
-.message.panel.panel-default.col-md-4{"ng-repeat" => "message in messages", "ng-controller" => "MessageController"}
1
+.message.panel.panel-default.col-md-4{"ng-controller" => "MessageController"}
2 2
   %form{"novalidate" => true, "name"=>"message_{{message.id}}_form"}
3 3
     .panel-heading.text-center <input placeholder="title" name="title" class="form-control" type="text" ng-model="message.title" required />
4 4
     .panel-body
@@ -6,18 +6,20 @@
6 6
       %span{"ng-show" => "message_{{message.id}}_form.body.$dirty && message_{{message.id}}_form.body.$invalid"} Invalid body
7 7
       %span{"ng-show" => "message_{{message.id}}_form.secret.$dirty && message_{{message.id}}_form.secret.$invalid"} Invalid secret
8 8
       .form-group
9
-        %label Message Body <input placeholder="body" name="body" class="form-control" type="text" ng-model="message.body" required />
9
+        %label Message Body <textarea placeholder="body" name="body" class="form-control" type="text" ng-model="message.body" required />
10 10
       .form-group
11 11
         %label Message Secret <input placeholder="secret" name="secret" class="form-control" type="number" ng-model="message.secret" required />
12
-      .form-group
12
+      .form-group{"ng-show" => "message.created_at"}
13 13
         %label Created
14 14
         {{message.created_at | date:"short"}}
15
-      .form-group
15
+      .form-group{"ng-show" => "message.updated_at"}
16 16
         %label Last Updated
17 17
         {{message.updated_at | date:"short"}}
18 18
       .form-group
19 19
         %label Disabled? <input class="form-control" type="checkbox" ng-model="message.disabled" />
20
-      .panel.panel-default
20
+      .form-group
21
+        <button class="btn btn-default" ng-click="baseMessages.remove(message)" ng-show="message.id">Delete</button>
22
+      .panel.panel-default{"ng-show" => "message.call_logs"}
21 23
         .panel-heading Call Logs
22 24
         .panel-body
23 25
           .panel.panel-default.call_log{"ng-repeat" => "log in message.call_logs"}

+ 2 - 0
twilio/app/assets/javascripts/templates/message-forms.html.haml

@@ -0,0 +1,2 @@
1
+%div{"ng-repeat" => "message in messages"}
2
+  %ng-include{"src"=>"'message-form.html'"}

+ 2 - 3
twilio/app/assets/stylesheets/message.css.css

@@ -1,6 +1,5 @@
1
-.message {
2
-  padding: 0px;
3
-  margin: 15px; }
1
+.create_form {
2
+  margin: 30px; }
4 3
 
5 4
 .message .panel-heading {
6 5
   font-weight: bold; }

+ 2 - 3
twilio/app/assets/stylesheets/message.css.scss

@@ -2,9 +2,8 @@
2 2
 // They will automatically be included in application.css.
3 3
 // You can use Sass (SCSS) here: http://sass-lang.com/
4 4
 
5
-.message {
6
-    padding: 0px;
7
-    margin: 15px;
5
+.create_form{
6
+    margin: 30px;
8 7
 }
9 8
 
10 9
 .message .panel-heading {

+ 1 - 1
twilio/app/controllers/messages_controller.rb

@@ -1,6 +1,6 @@
1 1
 class MessagesController < ApplicationController
2 2
   def index
3
-    render json: Message.all
3
+    render json: Message.all.order('updated_at DESC')
4 4
   end
5 5
 
6 6
   def show

+ 6 - 4
twilio/app/views/home/index.html.haml

@@ -3,9 +3,11 @@
3 3
 - content_for :head do
4 4
   = javascript_include_tag 'messages'
5 5
 
6
-%h1.text-center Messages
7 6
 %div{"ng-app" => "messages"}
8
-  .new-form.text-center
9
-    %input{"type"=>"button", "ng-click"=>"", "value"=>"Add new message"}
10 7
   .messages{"ng-controller" => "MessagesController"}
11
-    %message-form
8
+    .clearfix.create_form
9
+      %h1 New Message
10
+      %ng-include{"src"=>"'message-form.html'", "ng-init"=>"message = {}"}
11
+    %hr
12
+    %h1.text-center Messages
13
+    %message-forms