javascript - $rootScope returns the value in it but function where i call it is not working (Angular) -
i working with angular, nodejs , mongo (fairly new three) , trying build resource planning tool. basic idea user clicks on main div (grid) , tile (=task) gets created user inputs data. tile draggable , droppable , snaps grid. logic of grid based upon row , columns.
now on have list of users on left of screen in sidebar , need link/assign task right users (so tasks of specific user).
so far able determine position of user in list (y position). , have compare email of $rootscope.users of $scope.taskinfo , if there match have set top value of $scope.taskinfo equal of $rootscope.users offsettop, tasks show on correct row.
here visual of application -> http://gyazo.com/539abe727f0c77be39ac85ee46f4c395, kan see shows tiles random on grid
part of html code:
<!-- start sidebar --> <div id="sidebar" class="md-whiteframe-z4"> <img id="logo" src="images/logo.png" alt="" > <div class="userlist"> <li ng-repeat="user in userinfo" id="userpos" class="circular" style="top: {{ user.top }}"> <p class="initials" id="uservalue"> <custom email="user.email"></custom> {{user.initials}} </p> </li> </div> </div> <!-- end sidebar --> <!-- start content --> <div ce-box-creator id="grid" style="width: {{gridsizeng.x * 122}}px;" ng-init="creategridlines()" class="containercontent" > <div class="todayhighlight" style="width: {{gridsizeng.x}}px; left: {{(diffdays - 3) * diffdays}}px;"> </div> </div> <!-- start tile --> <div class="tile contenteditorbox" ng-dblclick="showpopup($event); setid( task._id )" ce-drag ce-resize ng-repeat="task in taskinfo" style="top: {{ task.row * gridsizeng.y+ gridsizeng.miny}}px; left: {{ task.column * gridsizeng.x + gridsizeng.minx }}px; width: {{ gridsizeng.x * task.width }}px;" ng-data-id="{{ task._id }}" ng-init="snapinit()" ng-model="updategriddata" ng-row="{{ task.row }}" ng-column="{{ task.column }}" > <div class="txtwrappertile"> <div class="containertxt" > <div class="taskname"> <h4> {{ task.name }} </h4> </div> <div class="taskprojectclient"> <p class="ppc"> {{ task.project_client_name}} </p> </div> <div class="tasklocation"> <p class="pl">location: {{ task.location }} </p> </div> <div class="clear"></div> <div class="taskestimatetime"> <div class="circle"> <p class="pet"> {{ task.estimate_time }} h</p> </div> </div> </div><!-- end containertxt --> </div><!-- end txtwrappertile --> </div><!-- end tile contenteditiorbox --> <!-- end tile --> <!-- end content --> part of app.js:
//custom directive $rootscope = {}; $rootscope.users = []; contenteditor.directive('custom', function($document) { return { restrict: 'e', scope: { email: '=' }, link: function(scope, element, attrs) { var mail = scope.email; $rootscope.users.push({ "mail": mail, "positiontop": element[0].offsettop }); console.log("user email is: " + mail); console.log("y positon of user circle " + element[0].offsettop); } } }); //function save details task $scope.save_task = function() { //console.log("save-task-shizzle", this); //console.log("sopceingo", $scope.taskinfo); var url; console.log(editid); if(editid){ url = 'api/task/update/'+ editid; }else{ url = 'api/task/create'; } console.log("url url usa", url, editid, $scope.start_time); var defaultstart = new date(); var defaultstart = defaultstart.getfullyear()+"-"+(defaultstart.getmonth()+1)+"-"+defaultstart.getdate(); defaultstart += " 00:00:00"; var defaultend = new date().adddays(2); var defaultend = defaultend.getfullyear()+"-"+(defaultend.getmonth()+1)+"-"+defaultend.getdate(); defaultend += " 00:00:00"; console.log(defaultstart , defaultend); $http.post(url, { 'name' : $scope.task_name, 'project_id' : $scope.task_project_type, 'location_id' : $scope.task_location, 'estimate_time' : $scope.task_estimate_time || 2, 'project_client_name' : $scope.task_project_client_name, 'url' : $scope.task_url, 'resource_link' : $scope.task_resource_link, 'notes' : $scope.task_notes, 'start_time' : $scope.start_time || defaultstart, 'end_time' : $scope.end_time || defaultend }, { headers: { "content-type":"text/plain" } } ) .success(function (data, status, headers, config) { //$scope.userinfo.push(data); //$scope.get_task(); //this fetch latest record db gettaskfunction( /* success function */ function(data) { // $scope.taskinfo.push(data); console.log("the tasks have been reloaded"); }, /* error function */ function() { console.log("server load failed"); } ); // console.log("the task has been added db"); console.log(data); $scope.taskinfo.push(data); }) .error(function(data, status, headers, config) { console.log("failed add task db"); }); } //function retrieve task info var gettaskfunction = function(successfn, errorfn) { // original implementation of $scope.get_user success & error used passed in parameter. $http.get('/api/task/all') // call server .success(function(data) { // upon success successfn(data); // call function passed "getuserfunction" data server //console.log("retrieved task data server"); //console.log("logging data: " , data); $scope.updategriddataawesome(); //console.log("barts test 1 ->", $scope.taskinfo); //$scope.linktasktouser(data); }) .error(errorfn || function() { console.log("error in retrieving data server"); }) // process failure }; this.reloadtasklist = function() { gettaskfunction( /* success function */ function(data) { //debugger; $scope.taskinfo = data; $scope.linktasktouser(data); }, /* error function */ function() { console.log("server load failed"); } ) }; // load list on startup this.reloadtasklist(); //retrieving users $scope.getusers = function() { $http.get('/api/users').success(function(data) { $scope.userinfo = data; //console.log("retrieved users server", data); //k$scope.createrowperuser(data); //console.log(data); }) .error(function(data, status, headers, config) { console.log("error in retrieving users server"); }); } $scope.getusers(); and last bit of code loops first through users through tasks , check email , if match set top value of $scope.taskinfo equal of $rootscope.users offsettop.
//creating row per user $scope.linktasktouser = function() { console.log("logging root scope ", $rootscope); (var = 0; < $scope.taskinfo.length; i++) { //doorlopen van alle taken console.log('111111'); (var j = 0; j < $rootscope.users.length; j++) { //doorlopen van alle users console.log('fasfsda'); if ($rootscope.users[j].email == $scope.taskinfo[i].email) { console.log('fasfsda1111'); //vergelijken van emails tussen taken en users $scope.taskinfo[i].top = $rootscope.users[j].offsettop; //top waarde van de taak gelijkstellen aan de offset van de user } } } } $scope.createrowperuser(); the problems when run application in browser don't see happening (the tiles not assigning correct user in row). not sure if code right ... welcome
Comments
Post a Comment