Browse code
Improving the angular wrapper
- Fixed the wrapper around ngResource
- Added support for adding feeds via ajax
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 |
|