Skip to content

Commit

Permalink
Can now choose results by tag
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Hughes authored and Michael Hughes committed Mar 24, 2013
1 parent 494d994 commit 333743a
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 18 deletions.
25 changes: 19 additions & 6 deletions src/client/EntryListController.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,28 @@ states = {

controller.EntryListCtrl = ($scope,$http)->

$scope.tags = [
{name:"All"},
{name:"Technology"},
{name:"News"},
{name:"Sport"}
]
$scope.selectedTag = $scope.tags[0]

$scope.entries = []
if $http
$http.get("/latest/json")
.success (data,status)->
$scope.entries = data
.error (data,status)->

#internal functions
$scope.refreshEntries = ()->
if $http
url = if $scope.selectedTag.name=="All" then "/latest/json" else "/latestByTag/json?tag=" + $scope.selectedTag.name
$http.get(url)
.success (data,status)->
$scope.entries = data
.error (data,status)->

$scope.changeState = (entry,state)->
ignoreOutput = (data,status)->

if $http
$http.get("/changeState?state=" + state + "&id=" + $scope.encode(entry.id))
.success(ignoreOutput)
Expand Down Expand Up @@ -49,4 +60,6 @@ controller.EntryListCtrl = ($scope,$http)->
$scope.status = (state)->
if state==states.STARRED then "" else "-empty"

$scope.refreshEntries()

scope:$scope
12 changes: 2 additions & 10 deletions src/resources/views/index.jade
Original file line number Diff line number Diff line change
@@ -1,16 +1,8 @@
extend layout
block content
div(ng-controller="FeedListCtrl")
li(ng-repeat="l in listData")
span{{l.url}}
form(ng-submit="addFeed()")
input(type="text",ng-model="feedURL",size="30",placeholder="add new URL here")
input(class="btn",type="submit",value="add")


.entries(ng-controller="EntryListCtrl")
.entry
select(ng-model="selectedTag",ng-options="t.name for t in tags")
.entry Showing stories from:
select(ng-model="selectedTag",ng-options="t.name for t in tags",ng-change="refreshEntries()")
.entry(ng-repeat="e in entries",ng-class-even="'even'",ng-class-odd="'odd'")
div(class="btn-group btns-right")
a(class="btn",ng-click="e.open = !e.open",ng-init="e.open=false")
Expand Down
8 changes: 8 additions & 0 deletions src/server/Webserver.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,14 @@ exports.createWebServer = (port,connectionString)->
else
res.json(result)

app.get '/latestByTag/json', (req,res)->
ms = store.createMongostore(connectionString)
ms.getLatestByTag req.query.tag,50, (err,result)->
ms.close()
if err then res.end(err)
else
res.json(result)

app.get '/redirect', (req,res)->
ms = store.createMongostore(connectionString)
ms.updateEntryState req.query.id,"read",(err,result)->
Expand Down
15 changes: 13 additions & 2 deletions test/server/functional/WebServer_test.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ connectionString = "mongodb://localhost:27000/feeds"

database = mongostore.createMongostore(connectionString)

twentyEntries = ({title:"title #{num}",id:"id#{num}",date:moment().subtract('minutes',20-num)} for num in [0...20])
twentyEntries = ({title:"title #{num}",id:"id#{num}",date:moment().subtract('minutes',20-num),tags:[if num < 10 then "News" else "Technology"]} for num in [0...20])

webserver.createWebServer(port,connectionString)

Expand All @@ -28,7 +28,7 @@ requestingSomeJSONFrom=(URL,fun)->
.on 'error', (e)->
console.log("Got error: " + e.message)
fun(e.message,null)


describe 'Requesting the latest entries', () ->
before (done) ->
Expand All @@ -40,3 +40,14 @@ describe 'Requesting the latest entries', () ->
expect(data[0].title).to.equal "title 19"
expect(data.length).to.equal 20
done()

describe 'Requesting the latest entries by tag', () ->
before (done) ->
after.insertingSome(twentyEntries).intoThe database,(err,result)->
done()

it 'should return JSON of them', (done) ->
requestingSomeJSONFrom url + "latestByTag/json?tag=News",(err,data)->
expect(data[0].title).to.equal "title 9"
expect(data.length).to.equal 10
done()

0 comments on commit 333743a

Please sign in to comment.