Przeglądaj źródła

Update form to show when things are invalid

Lily Carpenter 10 lat temu
rodzic
commit
b410f932ba

+ 14 - 4
twilio/app/assets/javascripts/messages.js

@@ -7,13 +7,24 @@
7 7
         $scope.baseMessages.getList().then(function(messages){
8 8
             $scope.messages = messages;
9 9
         });
10
+    });
10 11
 
11
-        this.new_message = function(message){
12
-            $scope.baseMessages.post(message);
13
-        };
12
+    app.directive('messageForm', function(){
13
+        return {
14
+            restrict: "E",
15
+            templateUrl: 'message-form.html'
16
+        }
14 17
     });
15 18
 
16 19
     app.controller('MessageController', function($scope, $timeout){
20
+        this.delete = function(message){
21
+            message.remove();
22
+        };
23
+
24
+        this.create = function(message){
25
+            $scope.baseMesssages.post(message);
26
+        };
27
+
17 28
         var timeout = null;
18 29
         var debounceUpdate = function(new_message, old_message){
19 30
             if(new_message == old_message){
@@ -24,7 +35,6 @@
24 35
             }
25 36
             timeout = $timeout(new_message.save, 1000);
26 37
         };
27
-
28 38
         $scope.$watchCollection('message', debounceUpdate);
29 39
     });
30 40
 })();

+ 25 - 0
twilio/app/assets/javascripts/templates/message-form.html.haml

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

+ 3 - 22
twilio/app/views/home/index.html.haml

@@ -5,26 +5,7 @@
5 5
 
6 6
 %h1.text-center Messages
7 7
 %div{"ng-app" => "messages"}
8
+  .new-form.text-center
9
+    %input{"type"=>"button", "ng-click"=>"", "value"=>"Add new message"}
8 10
   .messages{"ng-controller" => "MessagesController"}
9
-    .message.panel.panel-default.col-md-4{"ng-repeat" => "message in messages", "ng-controller" => "MessageController"}
10
-      .panel-heading.text-center <input class="form-control" type="text" ng-model="message.title" />
11
-      .panel-body
12
-        %form
13
-          .form-group
14
-            %label Message Body <input class="form-control" type="text" ng-model="message.body" />
15
-          .form-group
16
-            %label Message Secret <input class="form-control" type="text" ng-model="message.secret"/>
17
-          .form-group
18
-            %label Created
19
-            {{message.created_at | date:"short"}}
20
-          .form-group
21
-            %label Last Updated
22
-            {{message.updated_at | date:"short"}}
23
-          .form-group
24
-            %label Disabled? <input class="form-control" type="checkbox" ng-model="message.disabled" />
25
-      .panel.panel-default
26
-        .panel-heading Call Logs
27
-        .panel-body
28
-          .panel.panel-default.call_log{"ng-repeat" => "log in message.call_logs"}
29
-            .panel-heading {{log.number}}
30
-            .panel-body {{log.created_at | date:"short"}}
11
+    %message-form