James Allen 12 лет назад
Родитель
Сommit
067d343928

+ 1 - 6
services/web/app/coffee/Features/Project/ProjectController.coffee

@@ -211,16 +211,11 @@ _buildListViewModel = (projects, collabertions, readOnlyProjects, tags, tagsGrou
 	for project in readOnlyProjects
 	for project in readOnlyProjects
 		project.accessLevel = "readOnly"
 		project.accessLevel = "readOnly"
 	projects = projects.concat(collabertions).concat(readOnlyProjects)
 	projects = projects.concat(collabertions).concat(readOnlyProjects)
-	projects = projects.map (project)->
-		project.tags = tagsGroupedByProject[project._id] || []
-		return project
-	tags = _.sortBy tags, (tag)->
-		-tag.project_ids.length
 
 
 	return {
 	return {
 		title:'Your Projects'
 		title:'Your Projects'
 		priority_title: true
 		priority_title: true
 		projects: JSON.stringify(projects)
 		projects: JSON.stringify(projects)
-		tags:tags
+		tags: JSON.stringify(tags)
 		projectTabActive: true
 		projectTabActive: true
 	}
 	}

+ 23 - 25
services/web/app/views/project/list.jade

@@ -7,7 +7,10 @@ block content
 	#projectList
 	#projectList
 
 
 	script(type="text/javascript").
 	script(type="text/javascript").
-		window.data = { projects: !{projects} };
+		window.data = {
+			projects: !{projects},
+			tags: !{tags}
+		};
 
 
 	script(type="text/x-handlebars", data-template-name="projects")
 	script(type="text/x-handlebars", data-template-name="projects")
 		- if (projects.length > 0)
 		- if (projects.length > 0)
@@ -46,6 +49,24 @@ block content
 							a(href="/learn")  help guides
 							a(href="/learn")  help guides
 							| .
 							| .
 
 
+	script(type="text/x-handlebars", data-template-name="tags")
+		ul.list-unstyled.folders-menu.js-folders-menu
+			li
+				a.menu-indent(href="#") All projects
+			li
+				a.menu-indent(href="#") Your projects
+			li
+				a.menu-indent(href="#") Shared with you
+			li 
+				h2 Folders
+			{{#each itemController="tag"}}
+			li
+				a.menu-indent(href="#")
+					i.icon.fa.fa-folder-o
+					|  {{name}}
+				span.small ({{projectCount}})
+			{{/each}}
+
 	script(type="text/x-handlebars", data-template-name="application")
 	script(type="text/x-handlebars", data-template-name="application")
 		.content.content-alt
 		.content.content-alt
 			.container
 			.container
@@ -77,30 +98,7 @@ block content
 								li
 								li
 									a.menu-indent(href="/templates") View All »
 									a.menu-indent(href="/templates") View All »
 						.row-spaced
 						.row-spaced
-								ul.list-unstyled.folders-menu.js-folders-menu
-									li
-										a.menu-indent(href="#") All projects
-									li
-										a.menu-indent(href="#") Your projects
-									li
-										a.menu-indent(href="#") Shared with you
-									li 
-										h2 Folders
-									li
-										a.menu-indent(href="#")
-											i.icon.fa.fa-folder-o
-											|  PhD work 
-										span.small (5)
-									li
-										a.menu-indent(href="#")
-											i.icon.fa.fa-folder-o
-											|  Notes 
-										span.small (2)
-									li
-										a.menu-indent(href="#")
-											i.icon.fa.fa-folder-o
-											|  Papers 
-										span.small (1)
+							{{ render "tags" }}
 
 
 						.row-spaced-small
 						.row-spaced-small
 							ul.list-unstyled.folders-menu
 							ul.list-unstyled.folders-menu

+ 51 - 8
services/web/public/coffee/project-list.coffee

@@ -3,17 +3,38 @@ window.ProjectList = Ember.Application.create {
 }
 }
 
 
 ProjectList.ApplicationRoute = Ember.Route.extend {
 ProjectList.ApplicationRoute = Ember.Route.extend {
-	model: () ->
-		return @store.find("project")
-
 	setupController: () ->
 	setupController: () ->
-		@controllerFor('projects').set('model', @store.find("project"))
+		# TODO: Figure out how to get the findAll method 
+		for project in window.data.projects
+			project = @store.createRecord('project', {
+				id: project._id
+				name: project.name
+				lastUpdated: project.lastUpdated
+			})
+		for tag in window.data.tags
+			tagObject = @store.createRecord('tag', {
+				id: tag._id
+				name: tag.name
+			})
+			for project_id in tag.project_ids
+				project = @store.getById('project', project_id)
+				if project?
+					tagObject.get("projects").pushObject(project)
+
+		@controllerFor('projects').set('model', @store.all("project"))
+		@controllerFor('tags').set('model', @store.all("tag"))
+}
+
+ProjectList.Tag = DS.Model.extend {
+	name: DS.attr("string")
+	projects: DS.hasMany("project")
 }
 }
 
 
 ProjectList.Project = DS.Model.extend {
 ProjectList.Project = DS.Model.extend {
 	name: DS.attr("string")
 	name: DS.attr("string")
 	ownerName: DS.attr("string")
 	ownerName: DS.attr("string")
 	lastUpdated: DS.attr("date")
 	lastUpdated: DS.attr("date")
+	tags: DS.hasMany("tag")
 }
 }
 
 
 ProjectList.ProjectsController = Ember.ArrayController.extend {
 ProjectList.ProjectsController = Ember.ArrayController.extend {
@@ -32,14 +53,36 @@ ProjectList.ProjectController = Ember.ObjectController.extend {
 	).property("lastUpdated")
 	).property("lastUpdated")
 }
 }
 
 
+ProjectList.TagsController = Ember.ArrayController.extend {
+	sortProperties: ["name"]
+	sortAscending: true
+}
+
+ProjectList.TagController = Ember.ObjectController.extend {
+	projectCount: (() ->
+		@get("model").get("projects.length")
+	).property("projects.length")
+}
+
+
+
 ProjectList.ApplicationAdapter = DS.Adapter.extend {
 ProjectList.ApplicationAdapter = DS.Adapter.extend {
 	findAll: (store, type, sinceToken) ->
 	findAll: (store, type, sinceToken) ->
-		return new Ember.RSVP.Promise (resolve, reject) ->
-			resolve(
-				window.data.projects.map (project) ->
+		console.log "Grabbing", type
+		if type == ProjectList.Project
+			return new Ember.RSVP.Promise (resolve, reject) ->
+				Ember.run null, resolve, window.data.projects.map (project) ->
 					id: project._id
 					id: project._id
 					name: project.name
 					name: project.name
 					lastUpdated: project.lastUpdated
 					lastUpdated: project.lastUpdated
-			)
+					tag_ids: ["53230518ee024fe3e88ca988"]
+		else if type == ProjectList.Tag
+			return new Ember.RSVP.Promise (resolve, reject) ->
+				Ember.run null, resolve, window.data.tags.map (tag) ->
+					{
+						id: tag._id
+						name: tag.name
+						project_ids: tag.project_ids
+					}
 }
 }