git.fiddlerwoaroof.com
Browse code

Improving the angular wrapper

- Fixed the wrapper around ngResource

- Added support for adding feeds via ajax

fiddlerwoaroof authored on 20/09/2015 06:34:56
Showing 3 changed files
... ...
@@ -23,8 +23,8 @@
23 23
 (defmacro+ps resource (name url params &body body)
24 24
   `(var ,name
25 25
         ($resource ,url ,(cons 'create params)
26
-                   ,@(loop for (name form) in body
27
-                           collect (list 'create name (cons 'create form))))))
26
+                   ,(cons 'create (loop for (name form) in body
27
+                                         append (list name (cons 'create form)))))))
28 28
 
29 29
 (defmacro+ps scope-function (name arguments &body body)
30 30
   `(scope-var ,name (lambda ,arguments
... ...
@@ -1,15 +1,29 @@
1 1
 (in-package :angular)
2 2
 
3
-
3
+;:action "/feeds/add?api=yes" :name "add-form" :id "add-form" :method "post" 
4 4
 (def-module whitespace '(ng-resource ng-sanitize)
5 5
   (defcontroller -Main-Ctrl ($http $resource $sce)
6
-    (resource feeds "feeds/json" nil)
7
-    (scope-var feeds (chain feeds (get)))
6
+    (resource feeds "/feeds" nil
7
+              (json (method "GET" url "/feeds/json"))
8
+              (add  (method "POST" url "/feeds/add")))
9
+
10
+    (scope-var feeds (chain feeds (json)))
8 11
     (scope-var data "hello world!")
12
+    (scope-var add-form (create url ""))
13
+
9 14
     (scope-function render-html (html-code)
10 15
       (chain $sce (trust-as-html html-code)))
16
+
11 17
     (scope-function toggle-closed (ent)
12 18
       (setf (@ ent closed) (not (@ ent closed))))
19
+
20
+    (scope-function add-feed ()
21
+      (chain feeds (add (create "url" ($s add-form url)
22
+                                "api" "yes"))
23
+             $promise
24
+             (then
25
+               (lambda (feed)
26
+                 ($s feeds result (unshift (@ feed result)))))))
13 27
     ))
14 28
 
15 29
 ; vim: ft=lisp
... ...
@@ -1,14 +1,20 @@
1 1
 var whitespace = angular.module('whitespace', ['ngResource', 'ngSanitize']);
2 2
 whitespace.controller('MainCtrl', ['$scope', '$http', '$resource', '$sce', function ($scope, $http, $resource, $sce) {
3
-    var feeds = $resource('feeds/json', {  });
4
-    $scope.feeds = feeds.get();
3
+    var feeds = $resource('/feeds', {  }, { json : { method : 'GET', url : '/feeds/json' }, add : { method : 'POST', url : '/feeds/add' } });
4
+    $scope.feeds = feeds.json();
5 5
     $scope.data = 'hello world!';
6
+    $scope.addForm = { url : '' };
6 7
     $scope.renderHtml = function (htmlCode) {
7 8
         return $sce.trustAsHtml(htmlCode);
8 9
     };
9 10
     $scope.toggleClosed = function (ent) {
10 11
         return ent.closed = !ent.closed;
11 12
     };
13
+    $scope.addFeed = function () {
14
+        return feeds.add({ 'url' : $scope.addForm.url, 'api' : 'yes' }).$promise.then(function (feed) {
15
+            return $scope.feeds.result.unshift(feed.result);
16
+        });
17
+    };
12 18
     return null;
13 19
 }]);
14 20