Test coucher data

by Nicolas Lips

HTML

<div ng-app="modelDemo">
  <h1>
    Liste
  </h1>
  <div ng-controller="HomeCtrl">
    <ul>
      <li ng-repeat="w in workspaces">
        {{w.getName()}} ({{w.getMembers().length}})
      </li>    
    </ul>
  </div>
</div>

JavaScript

angular.module('modelDemo', []);
/*.
config(function ($routeProvider) {
    $routeProvider.
    when('/', {
        controller: 'AuthorListCtrl',
        templateUrl: 'list.html'
    }).
    otherwise({
        redirectTo: '/'
    });
});*/

angular.module('modelDemo').controller("HomeCtrl", ['$scope', 'workspacesDataService', function($scope, workspacesDataService) {
	$scope.workspaces = workspacesDataService.workspaces;
}]);

angular.module('modelDemo').service("workspacesDataService", ['workspacesAPIService', function(workspacesAPIService) {
  var memberFactory = function(rawData) {
  	var name = rawData.name;
    return {
    	getName: function() {
      	return name;
      }
    }
  };
	var workspaceFactory = function(rawData) {
  	var id = rawData.id;
  	var name = rawData.name;
    var members = null;
    function _getName() {
    	return name;
    }
    function initMembers() {
    	members = [];
      workspacesAPIService.getMembers(id)
      	.then(function(rawData) {
        angular.forEach(rawData, function(item) {
          members.push(memberFactory(item));
        });
      });    	
    }
    function _getMembers() {
    	if (members == null) {
      	initMembers();
      }
    	return members;
    }
  	return {
    	getName: _getName,
    	getMembers: _getMembers
    };
  };
	var workspaces = [];
  workspacesAPIService.getAll().then(function(rawData) {
  	angular.forEach(rawData, function(item) {
    	workspaces.push(workspaceFactory(item));
    });
  });
  return {
  	workspaces: workspaces
  };
}]);

angular.module('modelDemo').service("workspacesAPIService", ['$q', '$rootScope', '$http', function($q, $rootScope, $http) {
	var workspaces = [
  	{
    	name: "w1",
      descriptor: "{color: \"red\"}"
    }
  ];
  return {
  	getAll: function() {
    	return $http.get('https://statshbackend.azurewebsites.net/api/tnpulse/workspaces', null).then(function (response) { return response.data; });
			/*return $q(function(resolve, reject) {
   ...