mirror of https://github.com/akveo/blur-admin
finalising members
parent
03b1bfd1b9
commit
ee3508f5b7
Binary file not shown.
|
@ -5,7 +5,7 @@
|
|||
<div id="survey-builder" class="panel panel-default bootstrap-panel">
|
||||
<div class="panel-heading"><h2 ng-model="survey.name" ng-attr-contenteditable="{{ editmode }}" class="panel-title pull-left">{{ survey.name }}</h2></div>
|
||||
<div class="panel-body">
|
||||
<p ng-model="survey.description" ng-attr-contenteditable="{{ editmode }}">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum</p>
|
||||
<p ng-model="survey.description" ng-attr-contenteditable="{{ editmode }}"></p>
|
||||
|
||||
<div id="newElem"></div>
|
||||
|
||||
|
@ -14,10 +14,18 @@
|
|||
<button type="button" class="btn btn-primary btn-with-icon btn-lg" ng-click="addElement('multiple')" ><i class="ion-plus-round"></i>NEW QUESTION</button>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="btn-group">
|
||||
<button ng-click="submitSurvey()" class="btn btn-success btn-lg">
|
||||
Create
|
||||
</button>
|
||||
<div id="survey-actions" style="display:none;">
|
||||
<div class="btn-group">
|
||||
<button ng-click="saveSurvey()" class="btn btn-info btn-lg">
|
||||
Save as draft
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<button ng-click="submitSurvey()" class="btn btn-success btn-lg">
|
||||
Save and next
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -27,6 +35,58 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="sidebar" class="col-md-4 col-lg-4" style="display:none;">
|
||||
|
||||
<div id="survey-lists" class="panel panel-default bootstrap-panel">
|
||||
<div class="panel-heading"><h2 class="panel-title pull-left">Send your survey</h2></div>
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="form-group">
|
||||
<ui-select multiple ng-model="lists.selected"
|
||||
ng-disabled="false"
|
||||
search-enabled="true"
|
||||
append-to-body="true"
|
||||
class="form-control ">
|
||||
<ui-select-match placeholder="Choose a list">
|
||||
{{$item.name}}
|
||||
</ui-select-match>
|
||||
<ui-select-choices repeat="multipleItem in lists | filter: $select.search">
|
||||
{{multipleItem.name}}
|
||||
</ui-select-choices>
|
||||
</ui-select>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="feed-messages-container" track-width="smallContainerWidth" min-width="360">
|
||||
<div class="feed-message" ng-repeat="l in lists.selected">
|
||||
<!--<img class="photo-icon" ng-src="{{m.name.split(' ')[0] | profilePicture}}">-->
|
||||
<img class="photo-icon roll-in-blurred-right" ng-src="{{m | profilePicture}}" ng-repeat="m in l.members">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="actions">
|
||||
<div class="btn-group">
|
||||
<button ng-click="sendSurvey()" class="btn btn-success btn-lg">
|
||||
Send the Survey
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<button ng-click="cancelSending()" class="btn btn-danger btn-lg">
|
||||
Cancel
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
(function () {
|
||||
'use strict';
|
||||
|
||||
angular.module('BlurAdmin.pages.surveys.create',['BlurAdmin.pages.surveys'])
|
||||
angular.module('BlurAdmin.pages.surveys.create',['BlurAdmin.pages.surveys', 'ui.select', 'ngSanitize'])
|
||||
.directive('tagInput', tagInput);
|
||||
|
||||
function tagInput() {
|
||||
|
|
|
@ -33,9 +33,14 @@
|
|||
});
|
||||
|
||||
/** @ngInject */
|
||||
function CreateTabCtrl(SurveyService, $scope, $http, $compile, $timeout) {
|
||||
function CreateTabCtrl(SurveyService, ListService, $scope, $http, $compile, $timeout, $stateParams, $log, toastr) {
|
||||
|
||||
$scope.editmode = true;
|
||||
|
||||
$scope.lists = [];
|
||||
$scope.lists.selected = [];
|
||||
$scope.$watch('lists.selected', $scope.updateLists);
|
||||
|
||||
$scope.survey = {};
|
||||
$scope.survey.name = 'Page Title';
|
||||
$scope.survey.description = 'Page Description';
|
||||
|
@ -69,12 +74,12 @@
|
|||
|
||||
$scope.createEmptyElement = function(type,orderNo){
|
||||
var item = {
|
||||
id: 1,
|
||||
id: null,
|
||||
orderNo: 1,
|
||||
value: null
|
||||
};
|
||||
return {
|
||||
id: $scope.survey.elements.length+1, // TODO : generate the ID
|
||||
id: null, // TODO : generate the ID
|
||||
orderNo: orderNo,
|
||||
text: "",
|
||||
type: type,
|
||||
|
@ -91,7 +96,7 @@
|
|||
$scope.addNewItem=function(index){
|
||||
|
||||
var item = {
|
||||
id: $scope.survey.elements[index].length + 1,
|
||||
id: null,
|
||||
orderNo: $scope.survey.elements[index].length + 1,
|
||||
value: null
|
||||
};
|
||||
|
@ -111,27 +116,126 @@
|
|||
|
||||
};
|
||||
|
||||
$scope.submitSurvey=function(){
|
||||
$scope.saveSurvey=function(){
|
||||
var survey = $scope.survey
|
||||
SurveyService
|
||||
if($stateParams.survey_id) {
|
||||
SurveyService
|
||||
.update(survey)
|
||||
.then(
|
||||
function (data){
|
||||
console.log('Survey edited', data);
|
||||
toastr.info('The survey was edited successfuly :)', 'Surveys', {
|
||||
"autoDismiss": true,
|
||||
"positionClass": "toast-bottom-right",
|
||||
"type": "success",
|
||||
"timeOut": "5000",
|
||||
"extendedTimeOut": "2000"
|
||||
})
|
||||
},
|
||||
function (error){
|
||||
toastr.error('There were an error editing the survey', 'Surveys', {
|
||||
"autoDismiss": true,
|
||||
"positionClass": "toast-bottom-right",
|
||||
"type": "error",
|
||||
"timeOut": "5000",
|
||||
"extendedTimeOut": "2000"
|
||||
})
|
||||
}
|
||||
);
|
||||
} else {
|
||||
SurveyService
|
||||
.create(survey)
|
||||
.then(
|
||||
function (data){
|
||||
console.log('Survey created', data);
|
||||
toastr.info('The survey was created successfuly :)', 'Surveys', {
|
||||
"autoDismiss": true,
|
||||
"positionClass": "toast-bottom-right",
|
||||
"type": "success",
|
||||
"timeOut": "5000",
|
||||
"extendedTimeOut": "2000"
|
||||
})
|
||||
},
|
||||
function (error){
|
||||
console.log("Error creating the survey");
|
||||
toastr.error('There were an error creating the survey', 'Surveys', {
|
||||
"autoDismiss": true,
|
||||
"positionClass": "toast-bottom-right",
|
||||
"type": "error",
|
||||
"timeOut": "5000",
|
||||
"extendedTimeOut": "2000"
|
||||
})
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$scope.submitSurvey=function(){
|
||||
$scope.saveSurvey();
|
||||
$("#sidebar").fadeIn();
|
||||
$("#survey-actions").fadeOut();
|
||||
};
|
||||
|
||||
$scope.sendSurvey=function(){
|
||||
/*$scope.saveSurvey();
|
||||
$("#sidebar").fadeIn();
|
||||
$("#survey-actions").fadeOut();*/
|
||||
};
|
||||
|
||||
$scope.cancelSending=function(){
|
||||
$("#sidebar").fadeOut();
|
||||
$("#survey-actions").fadeIn();
|
||||
};
|
||||
|
||||
$scope.updateBuilder=function(){
|
||||
var compiledeHTML = $compile("<div multiple-q></div>")($scope);
|
||||
$("#newElem").html(compiledeHTML);
|
||||
|
||||
if($scope.survey.elements.length>0)
|
||||
$("#survey-actions").show();
|
||||
else
|
||||
$("#survey-actions").hide();
|
||||
|
||||
console.log($scope.survey.elements);
|
||||
|
||||
};
|
||||
|
||||
$scope.loadSurvey = function(id) {
|
||||
SurveyService
|
||||
.get(id)
|
||||
.then(function (data){
|
||||
$scope.survey = data[0];
|
||||
$scope.updateBuilder();
|
||||
$log.info("Got the survey data",$scope.survey);
|
||||
}, function (error){
|
||||
$log.error(error);
|
||||
});
|
||||
}
|
||||
|
||||
$scope.loadLists = function() {
|
||||
ListService
|
||||
.list()
|
||||
.then(function (data){
|
||||
$scope.lists = data;
|
||||
$log.info("Got the lists data",data);
|
||||
}, function (error){
|
||||
$log.error(error);
|
||||
});
|
||||
}
|
||||
|
||||
$scope.updateLists = function() {
|
||||
|
||||
}
|
||||
|
||||
$scope.activate=function(){
|
||||
if($stateParams.survey_id) {
|
||||
$scope.loadSurvey($stateParams.member_id);
|
||||
}
|
||||
$scope.loadLists();
|
||||
}
|
||||
|
||||
$scope.activate();
|
||||
|
||||
}
|
||||
|
||||
})();
|
||||
|
|
|
@ -5,8 +5,9 @@
|
|||
.controller('list', list);
|
||||
|
||||
/** @ngInject */
|
||||
function list( SurveyService, $scope, $log, $state) {
|
||||
function list( SurveyService, $scope, $rootScope, $log, $state, toastr) {
|
||||
var vm = this;
|
||||
$rootScope.$state = $state;
|
||||
|
||||
function loadSurveys() {
|
||||
SurveyService
|
||||
|
@ -24,9 +25,47 @@
|
|||
$state.go('surveys.create');
|
||||
}
|
||||
|
||||
function editSurvey(id){
|
||||
$log.info("Edit");
|
||||
$state.go('surveys.edit', {'survey_id': id})
|
||||
};
|
||||
|
||||
function removeSurvey(id){
|
||||
if (confirm("Are you sure?"))
|
||||
{
|
||||
$log.info("Remove");
|
||||
SurveyService
|
||||
.remove(id)
|
||||
.then(
|
||||
function (data){
|
||||
console.log('Survey deleted', data);
|
||||
$("tr#"+id).slideUp();
|
||||
toastr.info('The survey was deleted successfuly :)', 'Surveys', {
|
||||
"autoDismiss": true,
|
||||
"positionClass": "toast-bottom-right",
|
||||
"type": "success",
|
||||
"timeOut": "5000",
|
||||
"extendedTimeOut": "2000"
|
||||
})
|
||||
},
|
||||
function (error){
|
||||
toastr.error('There were an error deleting the survey', 'Surveys', {
|
||||
"autoDismiss": true,
|
||||
"positionClass": "toast-bottom-right",
|
||||
"type": "error",
|
||||
"timeOut": "5000",
|
||||
"extendedTimeOut": "2000"
|
||||
})
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
function activate(){
|
||||
vm.surveys = [];
|
||||
vm.goToCreate = goToCreate;
|
||||
vm.editSurvey = editSurvey;
|
||||
vm.removeSurvey = removeSurvey;
|
||||
|
||||
loadSurveys();
|
||||
}
|
||||
|
|
|
@ -9,31 +9,39 @@
|
|||
</button>
|
||||
</div>
|
||||
|
||||
<table ng-if="vm.surveys.length > 0" class="table table-bordered table-hover">
|
||||
<table ng-if="vm.surveys.length > 0" class="table table-bordered table-hover table-condensed">
|
||||
<thead>
|
||||
<tr class="black-muted-bg" >
|
||||
<th></td>
|
||||
<th>Title</td>
|
||||
<th>Last edit</td>
|
||||
<th>Responses</td>
|
||||
<th>Actions</td>
|
||||
<td class="table-id">#</td>
|
||||
<td>Title</td>
|
||||
<td>Created</td>
|
||||
<td>Last edit</td>
|
||||
<td>Responses</td>
|
||||
<td>Status</td>
|
||||
<td>Actions</td>
|
||||
</tr>
|
||||
<thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="survey in vm.surveys track by survey.id" >
|
||||
<tr id="{{ survey.id }}" ng-repeat="survey in vm.surveys track by survey.id" class="editable-row" >
|
||||
<td>
|
||||
{{ $index }}
|
||||
</td>
|
||||
<td>
|
||||
{{ survey.name }} <br />
|
||||
Create at : {{ survey.createdAt | date:'shortDate' }}
|
||||
{{ survey.name }}
|
||||
</td>
|
||||
<td>
|
||||
{{ survey.createdAt | date:'shortDate' }}
|
||||
</td>
|
||||
<td>
|
||||
{{ survey.updatedAt | date:'shortDate' }}
|
||||
</td>
|
||||
<td> {{ survey.responses || 0 }}
|
||||
<td> {{ survey.responses || 0 }} </td>
|
||||
<td> {{ survey.status }} </td>
|
||||
<td>
|
||||
Action ...
|
||||
<button class="status-button btn btn-xs btn-primary" ng-click="vm.editSurvey(survey.id)">Edit</button>
|
||||
<button class="status-button btn btn-xs btn-info" ng-if="survey.status == 'Draft'" ng-click="vm.goToSend(survey.id)">Send</button>
|
||||
<button class="status-button btn btn-xs btn-info" ng-if="survey.status == 'Draft'" ng-click="vm.goToAnswers(survey.id)">Answers</button>
|
||||
<button class="status-button btn btn-xs btn-danger" ng-click="vm.removeSurvey(survey.id)">Remove</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
function list(params) {
|
||||
params = params || {};
|
||||
|
||||
var deferred = $q.defer();
|
||||
$http.get(endpoint)
|
||||
var deferred = $q.defer();
|
||||
$http.get(endpoint)
|
||||
.success(function(data) {
|
||||
deferred.resolve(data);
|
||||
}).error(function(msg, code) {
|
||||
|
@ -29,22 +29,39 @@
|
|||
return $http.get(endpoint, params);
|
||||
}
|
||||
|
||||
function get(id) {
|
||||
|
||||
var deferred = $q.defer();
|
||||
$http.get(endpoint)
|
||||
.success(function(data) {
|
||||
deferred.resolve(data);
|
||||
}).error(function(msg, code) {
|
||||
deferred.reject(msg);
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
|
||||
|
||||
return $http.get(endpoint, id);
|
||||
}
|
||||
|
||||
function create(survey) {
|
||||
return $http.post(endpoint, survey);
|
||||
}
|
||||
|
||||
function edit(survery) {
|
||||
console.log("edit jSurvey Opject", survey);
|
||||
function update(survey) {
|
||||
return $http.put(endpoint + "/"+survey.id, survey);
|
||||
}
|
||||
|
||||
function remove(survery) {
|
||||
console.log("remove Opject", survey);
|
||||
function remove(id) {
|
||||
return $http.delete(endpoint + "/"+id);
|
||||
}
|
||||
|
||||
return {
|
||||
list:list,
|
||||
get:get,
|
||||
create:create,
|
||||
edit:edit,
|
||||
update:update,
|
||||
remove:remove
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,11 @@
|
|||
sidebarMeta: {
|
||||
order: 1000,
|
||||
},
|
||||
}).state('surveys.edit', {
|
||||
url: '/edit/:survey_id',
|
||||
templateUrl: 'app/pages/surveys/create/create.html',
|
||||
controller: "CreateTabCtrl",
|
||||
title: 'Edit a survey'
|
||||
}).state('surveys.list', {
|
||||
url: '/list',
|
||||
templateUrl: 'app/pages/surveys/list/list.html',
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
/**
|
||||
* @author ayoub
|
||||
*/
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
angular.module('BlurAdmin.pages.teams')
|
||||
.factory('AnswerService', AnswerService);
|
||||
|
||||
/** @ngInject */
|
||||
function AnswerService($http, $q) {
|
||||
var apiBaseUrl = "http://localhost:9000"
|
||||
var endpoint = apiBaseUrl + "/answers";
|
||||
|
||||
function list(params) {
|
||||
params = params || {};
|
||||
|
||||
var deferred = $q.defer();
|
||||
$http.get(endpoint)
|
||||
.success(function(data) {
|
||||
deferred.resolve(data);
|
||||
}).error(function(msg, code) {
|
||||
deferred.reject(msg);
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
|
||||
|
||||
return $http.get(endpoint, params);
|
||||
}
|
||||
|
||||
function create(answer) {
|
||||
console.log("new Answer Object", answer);
|
||||
// return $http.post(endpoint, answer);
|
||||
}
|
||||
|
||||
function put(answer) {
|
||||
return $http.put(endpoint + "/" + answer.id, answer);
|
||||
}
|
||||
|
||||
function get(id) {
|
||||
return $http.get(endpoint + "/" + id);
|
||||
}
|
||||
|
||||
function edit(answer) {
|
||||
console.log("edit Answer Object", answer);
|
||||
}
|
||||
|
||||
function remove(id) {
|
||||
return $http.delete(endpoint + "/" + id);
|
||||
}
|
||||
|
||||
return {
|
||||
list:list,
|
||||
create:create,
|
||||
edit:edit,
|
||||
get:get,
|
||||
put:put,
|
||||
remove:remove
|
||||
}
|
||||
}
|
||||
})();
|
|
@ -6,10 +6,21 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('BlurAdmin.pages.teams.lists')
|
||||
.controller('ListsTabCtrl', ListsTabCtrl);
|
||||
.controller('ListsTabCtrl', ListsTabCtrl)
|
||||
.filter('bytetobase', function () {
|
||||
return function (buffer) {
|
||||
var binary = '';
|
||||
var bytes = new Uint8Array(buffer);
|
||||
var len = bytes.byteLength;
|
||||
for (var i = 0; i < len; i++) {
|
||||
binary += String.fromCharCode(bytes[i]);
|
||||
}
|
||||
return window.btoa(binary);
|
||||
};
|
||||
});
|
||||
|
||||
/** @ngInject */
|
||||
function ListsTabCtrl($scope, baConfig, membersList, ListService,MemberService, $log) {
|
||||
function ListsTabCtrl($scope, baConfig, membersList, ListService,MemberService, $log, $state,$stateParams) {
|
||||
var vm = this;
|
||||
|
||||
vm.searchResult = [];
|
||||
|
@ -18,7 +29,22 @@
|
|||
ListService
|
||||
.list()
|
||||
.then(function (data){
|
||||
vm.Lists = data;
|
||||
|
||||
if($stateParams.id){
|
||||
for (var i = data.length - 1; i >= 0; i--) {
|
||||
console.log('stateParams',$stateParams.id,data[i])
|
||||
if($stateParams.id == data[i].id) {
|
||||
data[i].isChecked = true;
|
||||
vm.activeList = data[i];
|
||||
vm.errors.noList = false;
|
||||
vm.updateListMembers(data[i]);
|
||||
} else
|
||||
data[i].isChecked = false;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
vm.Lists = data;
|
||||
$log.info("Got the list data",data);
|
||||
//getting all members
|
||||
MemberService
|
||||
|
@ -26,6 +52,7 @@
|
|||
.then(function (data){
|
||||
vm.searchResult = data;
|
||||
$log.info("Got the members data",data);
|
||||
$log.info("activeList",vm.activeList);
|
||||
}, function (error){
|
||||
$log.error(error);
|
||||
});
|
||||
|
@ -70,7 +97,51 @@
|
|||
vm.newList = {};
|
||||
vm.activeList = {};
|
||||
vm.listMembers = [];
|
||||
vm.selectedLabel = "listing";
|
||||
vm.selectedLabel = "";
|
||||
|
||||
vm.selectAllResults = false;
|
||||
vm.selectAllMembers = false;
|
||||
|
||||
vm.errors = {};
|
||||
vm.errors.noList = true;
|
||||
|
||||
vm.selectAllSearchResult = function() {
|
||||
if (vm.selectAllResults) {
|
||||
vm.selectAllResults = true;
|
||||
} else {
|
||||
vm.selectAllResults = false;
|
||||
}
|
||||
angular.forEach(vm.searchResult, function (item) {
|
||||
item.Selected = vm.selectAllResults;
|
||||
});
|
||||
}
|
||||
|
||||
vm.selectAllListMembers = function() {
|
||||
if (vm.selectAllMembers) {
|
||||
vm.selectAllMembers = true;
|
||||
} else {
|
||||
vm.selectAllMembers = false;
|
||||
}
|
||||
angular.forEach(vm.listMembers, function (item) {
|
||||
item.Selected = vm.selectAllMembers;
|
||||
});
|
||||
}
|
||||
|
||||
vm.insertSearchResult = function(member) {
|
||||
angular.forEach(vm.searchResult, function (item) {
|
||||
if(member.id == item.id)
|
||||
item = member;
|
||||
});
|
||||
console.log('insertSearchResult:vm.searchResult', vm.searchResult)
|
||||
}
|
||||
|
||||
vm.insertMemberList = function(member) {
|
||||
angular.forEach(vm.listMembers, function (item) {
|
||||
if(member.id == item.id)
|
||||
item = member;
|
||||
});
|
||||
console.log('insertMemberList:vm.listMembers', vm.listMembers)
|
||||
}
|
||||
|
||||
vm.addNewList = function (event, clickPlus) {
|
||||
if (clickPlus || event.which === 13) {
|
||||
|
@ -95,8 +166,10 @@
|
|||
|
||||
vm.updateListMembers = function (item) {
|
||||
//uncheck others lists
|
||||
if (item.isChecked) {
|
||||
if (item && item.isChecked) {
|
||||
vm.activeList = item;
|
||||
vm.errors.noList = false;
|
||||
$state.transitionTo('teams.lists', {id: item.id}, {notify: false});
|
||||
angular.forEach(vm.Lists, function(list){
|
||||
if(item.id != list.id)
|
||||
list.isChecked = false;
|
||||
|
@ -104,52 +177,87 @@
|
|||
|
||||
//getting members info
|
||||
vm.listMembers = [];
|
||||
var membersIds = item.members;
|
||||
angular.forEach(membersIds, function(id){
|
||||
MemberService
|
||||
.get(id)
|
||||
.then(
|
||||
function (data){
|
||||
vm.listMembers.push( data.data );
|
||||
console.log("updateListMembers",vm.activeList, vm.listMembers);
|
||||
},
|
||||
function (error){
|
||||
console.log("Error getting the member");
|
||||
}
|
||||
);
|
||||
var params = (item.members && item.members.length > 0) ? {"ids" : item.members} : {};
|
||||
//angular.forEach(membersIds, function(id){
|
||||
if (item.members.length > 0) {
|
||||
vm.errors.noMember = false;
|
||||
MemberService
|
||||
.list(params)
|
||||
.then(
|
||||
function (data){
|
||||
vm.listMembers = data;
|
||||
console.log("updateListMembers",vm.activeList, vm.listMembers);
|
||||
},
|
||||
function (error){
|
||||
console.log("Error getting the member");
|
||||
}
|
||||
);
|
||||
} else
|
||||
vm.errors.noMember = true;
|
||||
|
||||
|
||||
});
|
||||
} else
|
||||
vm.listMembers = [];
|
||||
//});
|
||||
} else {
|
||||
vm.activeList = {};
|
||||
vm.errors.noList = true;
|
||||
vm.listMembers = [];
|
||||
$state.transitionTo('teams.lists', {notify: false});
|
||||
}
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
vm.getMemberByLabel = function (label) {
|
||||
console.log(label);
|
||||
vm.searchResult = membersList.getMembersByLabel(label);
|
||||
vm.getMemberByLabel = function () {
|
||||
//console.log(vm.selectedLabel);
|
||||
var params = (vm.selectedLabel && vm.selectedLabel != "" && vm.selectedLabel != "listing") ? { "labels" : vm.selectedLabel } : {};
|
||||
MemberService
|
||||
.list(params)
|
||||
.then(
|
||||
function (data){
|
||||
vm.searchResult = data;
|
||||
console.log("getMemberByLabel",data);
|
||||
},
|
||||
function (error){
|
||||
console.log("Error getting the members");
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
};
|
||||
|
||||
vm.updateMembers = function (member, action) {
|
||||
vm.updateMembers = function (members, action, multi = false) {
|
||||
if (confirm("Are you sure?"))
|
||||
{
|
||||
console.log('updateMembers:members', members)
|
||||
var list = vm.activeList;
|
||||
var index = list.members.indexOf(member.id);
|
||||
vm.errors.noList = false;
|
||||
|
||||
if (action == "add") {
|
||||
if (index == -1)
|
||||
list.members.push(member.id);
|
||||
} else {
|
||||
if (index != -1)
|
||||
list.members.splice(index, 1);
|
||||
}
|
||||
for (var i = 0; i < members.length; i++) {
|
||||
if(multi == false || (multi == true && members[i].Selected == true)) {
|
||||
var index = list.members.indexOf(members[i].id);
|
||||
//vm.listMembers = [];
|
||||
if (action == "add") {
|
||||
if (index == -1)
|
||||
list.members.push(members[i].id);
|
||||
} else {
|
||||
if (index != -1)
|
||||
list.members.splice(index, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
vm.activeList.isChecked = true;
|
||||
ListService
|
||||
.edit(list)
|
||||
.then(
|
||||
function (data){
|
||||
loadLists();
|
||||
vm.newList.name = '';
|
||||
//loadLists();
|
||||
|
||||
vm.updateListMembers(vm.activeList);
|
||||
|
||||
},
|
||||
function (error){
|
||||
console.log("Error updating the LIST");
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
function routeConfig($stateProvider,$urlRouterProvider) {
|
||||
$stateProvider
|
||||
.state('teams.lists', {
|
||||
url: '/lists',
|
||||
url: '/lists/:id',
|
||||
//abstract: true,
|
||||
templateUrl: 'app/pages/teams/lists/lists.html',
|
||||
controller: "ListsTabCtrl as vm",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div class="row">
|
||||
<div class="col-xlg-4 col-lg-6 col-md-4 col-xs-12"
|
||||
<div class="col-xlg-6 col-lg-6 col-md-6 col-xs-12 {{ vm.activeList.name ? 'slide-out-blurred-left' : '' }}"
|
||||
ba-panel
|
||||
ba-panel-title="Mailing LISTS"
|
||||
ba-panel-class="xmedium-panel feed-comply-panel with-scroll todo-panel">
|
||||
|
@ -26,61 +26,149 @@
|
|||
|
||||
</div>
|
||||
|
||||
<div class="col-xlg-4 col-lg-6 col-md-4 col-xs-12"
|
||||
<div class="col-xlg-6 col-lg-6 col-md-6 col-xs-12"
|
||||
ba-panel
|
||||
ba-panel-title="List members"
|
||||
ba-panel-title="{{vm.activeList.name}} members"
|
||||
ba-panel-class="xmedium-panel feed-comply-panel with-scroll todo-panel">
|
||||
|
||||
<div class="feed-messages-container" track-width="smallContainerWidth" min-width="360">
|
||||
<div class="feed-message" ng-repeat="m in vm.listMembers">
|
||||
<div class="message-icon">
|
||||
<!--<img class="photo-icon" ng-src="{{m.name.split(' ')[0] | profilePicture}}">-->
|
||||
<img class="photo-icon" ng-src="{{'undefined' | profilePicture}}">
|
||||
|
||||
<div id="members-control" class="mail-messages-control side-message-navigation-item">
|
||||
<div class="toggle-navigation-container">
|
||||
<a href class="collapse-navigation-link ion-navicon"
|
||||
ng-click="tabCtrl.navigationCollapsed=!tabCtrl.navigationCollapsed"></a>
|
||||
</div>
|
||||
<div class="text-block text-message">
|
||||
<div class="message-header">
|
||||
<span class="author">{{m.name}}</span>
|
||||
<span class="email">{{m.email}}</span>
|
||||
</div>
|
||||
<div class="message-content line-clamp">
|
||||
<span>{{m.position}} </span>
|
||||
</div>
|
||||
<button class="btn btn-danger editable-table-button btn-xs pull-right" ng-click="vm.updateMembers(m, 'remove')">Remove</button>
|
||||
|
||||
<label class="checkbox-inline custom-checkbox nowrap">
|
||||
<input type="checkbox" id="members-check" ng-model="vm.selectAllMembers" ng-change="vm.selectAllListMembers()">
|
||||
<span class="select-all-label">Select All</span>
|
||||
</label>
|
||||
<button type="button" class="btn btn-icon refresh-button"><i class="ion-refresh"></i></button>
|
||||
<div class="btn-group" uib-dropdown>
|
||||
<button type="button" class="btn more-button" uib-dropdown-toggle>
|
||||
More <span class="caret"></span>
|
||||
</button>
|
||||
<ul uib-dropdown-menu>
|
||||
<li><a ng-click="vm.updateMembers(vm.listMembers, 'remove', true)">Remove all selected members</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="members" class="messages">
|
||||
<table>
|
||||
<tr ng-repeat="m in vm.listMembers"
|
||||
class="side-message-navigation-item little-human shineHover">
|
||||
<td class="check-td">
|
||||
<div class="mail-checkbox">
|
||||
<label class="checkbox-inline custom-checkbox nowrap">
|
||||
<input type="checkbox" ng-model="m.Selected" ng-change="vm.insertMemberList(m)">
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
<td class="photo-td"><img ng-src="{{m.id | profilePicture}}" class="little-human-picture"></td>
|
||||
<td>
|
||||
<div class="name-container">
|
||||
<div><span class="name">{{m.name}}</span></div>
|
||||
<div>{{m.email}}</div>
|
||||
</div>
|
||||
</td>
|
||||
<td ui-sref="components.mail.detail({id: m.id, label: listCtrl.label})">
|
||||
<div class="additional-info">
|
||||
<span class="subject"> {{m.position}}</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<button class="btn btn-danger btn-xs pull-left" ng-click="vm.updateMembers([m], 'remove')"><span class="glyphicon glyphicon-trash"></span></button>
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr class="side-message-navigation-item {{ vm.errors.noMember ? 'visible' : 'invisible' }}"><td class="check-td"></td><td><span>This list contain no member ! Please start adding some on your right.</span></td></tr>
|
||||
<tr class="side-message-navigation-item {{ vm.errors.noList ? 'visible' : 'invisible' }}"><td class="check-td"></td><td><span>No list is selected ! Please select one on your left.</span></td></tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-xlg-4 col-lg-6 col-md-4 col-xs-12"
|
||||
<div class="col-xlg-6 col-lg-6 col-md-6 col-xs-12 {{ vm.activeList.name ? 'roll-in-blurred-right' : 'invisible' }}"
|
||||
ba-panel
|
||||
ba-panel-title="Add new members"
|
||||
ba-panel-class="xmedium-panel feed-comply-panel with-scroll todo-panel">
|
||||
<input type="text" value="" class="form-control task-todo" placeholder="Search" ng-keyup="vm.addNewList($event)"/>
|
||||
<select class="form-control" selectpicker ng-model="vm.selectedLabel" ng-change="vm.getMemberByLabel(selectedLabel)">
|
||||
<option selected="true" value="listing">Search by tag ...</option>
|
||||
|
||||
<select class="form-control" selectpicker ng-model="vm.selectedLabel" ng-change="vm.getMemberByLabel()">
|
||||
<option selected="true" value="">Search by tag ...</option>
|
||||
<option ng-repeat="t in vm.tabs" value="{{t.label}}">{{t.name}}</option>
|
||||
</select>
|
||||
|
||||
<div class="feed-messages-container" track-width="smallContainerWidth" min-width="360">
|
||||
<div class="feed-message" ng-repeat="m in vm.searchResult">
|
||||
<div class="message-icon">
|
||||
<!--<img class="photo-icon" ng-src="{{m.name.split(' ')[0] | profilePicture}}">-->
|
||||
<img class="photo-icon" ng-src="{{'undefined' | profilePicture}}">
|
||||
</div>
|
||||
<div class="text-block text-message">
|
||||
<div class="message-header">
|
||||
<span class="author">{{m.name}}</span>
|
||||
<span class="email">{{m.email}}</span>
|
||||
</div>
|
||||
<div class="message-content line-clamp">
|
||||
<span>{{m.position}} </span>
|
||||
</div>
|
||||
<button class="btn btn-success editable-table-button btn-xs pull-right" ng-click="vm.updateMembers(m, 'add')">Add</button>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="results-control" class="mail-messages-control side-message-navigation-item">
|
||||
<div class="toggle-navigation-container">
|
||||
<a href class="collapse-navigation-link ion-navicon"
|
||||
ng-click="tabCtrl.navigationCollapsed=!tabCtrl.navigationCollapsed"></a>
|
||||
</div>
|
||||
<label class="checkbox-inline custom-checkbox nowrap">
|
||||
<input type="checkbox" id="results-check" ng-model="vm.selectAllResults" ng-change="vm.selectAllSearchResult()">
|
||||
<span class="select-all-label">Select All</span>
|
||||
</label>
|
||||
<button type="button" class="btn btn-icon refresh-button"><i class="ion-refresh"></i></button>
|
||||
<div class="btn-group" uib-dropdown>
|
||||
<button type="button" class="btn more-button" uib-dropdown-toggle>
|
||||
More <span class="caret"></span>
|
||||
</button>
|
||||
<ul uib-dropdown-menu>
|
||||
<li><a ng-click="vm.updateMembers(vm.searchResult, 'add', true)">Add all selected members</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="results" class="messages">
|
||||
<table>
|
||||
<tr ng-repeat="m in vm.searchResult"
|
||||
class="side-message-navigation-item little-human shineHover">
|
||||
<td class="check-td">
|
||||
<div class="mail-checkbox">
|
||||
<label class="checkbox-inline custom-checkbox nowrap">
|
||||
<input type="checkbox" ng-model="m.Selected" ng-change="vm.insertSearchResult(m)">
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
<td class="photo-td"><img ng-src="{{m.id | profilePicture}}" class="little-human-picture"></td>
|
||||
<td>
|
||||
<div class="name-container">
|
||||
<div><span class="name">{{m.name}}</span></div>
|
||||
<div>{{m.email}}</div>
|
||||
</div>
|
||||
</td>
|
||||
<td ui-sref="components.mail.detail({id: m.id, label: listCtrl.label})">
|
||||
<div class="additional-info">
|
||||
<span class="subject"> {{m.position}}</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<button class="btn btn-success btn-xs pull-left" ng-click="vm.updateMembers([m], 'add')"><span class="glyphicon glyphicon-plus"></span></button>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-xlg-12 col-lg-12 col-md-12 col-xs-12">
|
||||
<div class="btn-group pull-right {{ vm.activeList.name ? 'visible' : 'invisible' }}">
|
||||
<button ng-click="vm.updateListMembers({})" class="btn btn-danger btn-lg">
|
||||
Go back to the lists selection
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -9,13 +9,21 @@
|
|||
.controller('MembersTabCtrl', MembersTabCtrl);
|
||||
|
||||
/** @ngInject */
|
||||
function MembersTabCtrl(composeModal, membersList) {
|
||||
function MembersTabCtrl(composeModal, membersList, MemberService, $log) {
|
||||
|
||||
var vm = this;
|
||||
vm.navigationCollapsed = true;
|
||||
vm.showCompose = function(id){
|
||||
if (id != ''){
|
||||
vm.member = membersList.getMemberById(id);
|
||||
MemberService
|
||||
.get(id)
|
||||
.then(function (data){
|
||||
vm.member = data.data;
|
||||
$log.info("Got the member data",data.data);
|
||||
}, function (error){
|
||||
$log.error(error);
|
||||
});
|
||||
//vm.member = membersList.getMemberById(id);
|
||||
//vm.actualIndex = membersList.getIndexById(id);
|
||||
}
|
||||
else
|
||||
|
@ -27,6 +35,20 @@
|
|||
})
|
||||
};
|
||||
|
||||
vm.removeMember = function(id) {
|
||||
MemberService
|
||||
.remove(id)
|
||||
.then(function (data){
|
||||
$("tr#m-"+id).slideUp();
|
||||
}, function (error){
|
||||
$log.error(error);
|
||||
});
|
||||
}
|
||||
|
||||
vm.selectTab = function (label) {
|
||||
|
||||
};
|
||||
|
||||
vm.tabs = membersList.getTabs();
|
||||
}
|
||||
|
||||
|
|
|
@ -9,11 +9,12 @@
|
|||
.controller('composeBoxCtrl', composeBoxCtrl);
|
||||
|
||||
/** @ngInject */
|
||||
function composeBoxCtrl($scope ,member, membersList,MemberService,fileReader, $filter) {
|
||||
function composeBoxCtrl($scope ,member, membersList,MemberService,fileReader, $filter, toastr, $state) {
|
||||
var vm = this;
|
||||
vm.member = member;
|
||||
//vm.actualIndex = actualIndex;
|
||||
vm.picture = (member.pic && member.pic != "") ? $filter('profilePicture')(member.name.split(' ')[0]) : $filter('appImage')('theme/no-photo.png');
|
||||
//console.log("member",member)
|
||||
vm.picture = $filter('profilePicture')(member.id, "jpeg") ;//: $filter('appImage')('theme/no-photo.png');
|
||||
vm.Labels = membersList.getTabs();
|
||||
|
||||
$scope.removePicture = function () {
|
||||
|
@ -35,11 +36,40 @@
|
|||
};
|
||||
|
||||
vm.updateMember = function () {
|
||||
console.log(membersList.getIndexById(vm.member.id), vm.member);
|
||||
//vm.member.picture = vm.picture;
|
||||
//vm.member.fileExt = "jpeg";
|
||||
|
||||
console.log('composeBoxCtrl.updateMember', membersList.getIndexById(vm.member.id), vm.member);
|
||||
};
|
||||
|
||||
vm.createMember = function () {
|
||||
MemberService.create(vm.member);
|
||||
vm.member.picture = vm.picture.replace(/^data:image\/(png|jpg|jpeg);base64,/, "");
|
||||
vm.member.fileExt = "jpeg";
|
||||
|
||||
MemberService
|
||||
.create(vm.member)
|
||||
.then(function (data){
|
||||
vm.member = {}
|
||||
$state.go('teams.members');
|
||||
|
||||
toastr.info('The member was created successfuly :)', 'Members', {
|
||||
"autoDismiss": true,
|
||||
"positionClass": "toast-bottom-right",
|
||||
"type": "success",
|
||||
"timeOut": "5000",
|
||||
"extendedTimeOut": "2000"
|
||||
})
|
||||
}, function (error){
|
||||
$log.error(error);
|
||||
toastr.error('There were an error creating the memeber', 'Members', {
|
||||
"autoDismiss": true,
|
||||
"positionClass": "toast-bottom-right",
|
||||
"type": "error",
|
||||
"timeOut": "5000",
|
||||
"extendedTimeOut": "2000"
|
||||
})
|
||||
});
|
||||
|
||||
};
|
||||
}
|
||||
})();
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
<div class="labels-container">
|
||||
<div ng-repeat="t in tabCtrl.tabs" ui-sref-active="active" class="label-item"
|
||||
ui-sref="teams.members.label({label: t.label})" ng-click="selectTab(t.label)">
|
||||
ui-sref="teams.members.label({label: t.label})" ng-click="tabCtrl.selectTab(t.label)">
|
||||
<span class="tag label {{t.label}}">{{t.name}}</span>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
$stateProvider
|
||||
.state('teams.members', {
|
||||
url: '/members',
|
||||
abstract: true,
|
||||
//abstract: true,
|
||||
templateUrl: 'app/pages/teams/members/members.html',
|
||||
controller: "MembersTabCtrl",
|
||||
controllerAs: "tabCtrl",
|
||||
|
@ -28,7 +28,7 @@
|
|||
controller: "MembersListCtrl",
|
||||
controllerAs: "listCtrl"
|
||||
}).state('teams.members.detail', {
|
||||
url: '/:label/:id',
|
||||
url: '/:id',
|
||||
templateUrl: 'app/pages/teams/members/detail/memberDetail.html',
|
||||
title: 'Detail',
|
||||
controller: "MemberDetailCtrl",
|
||||
|
|
|
@ -14,8 +14,10 @@
|
|||
//vm.members = ($stateParams.label == "listing") ? membersList.getAllMessages() : membersList.getMembersByLabel($stateParams.label);
|
||||
|
||||
function loadMembers() {
|
||||
var params = ($stateParams.label && $stateParams.label != "listing") ? {"labels":$stateParams.label} : {}
|
||||
console.log("params",params);
|
||||
MemberService
|
||||
.list()
|
||||
.list(params)
|
||||
.then(function (data){
|
||||
vm.members = data;
|
||||
$log.info("Got the members data",data);
|
||||
|
@ -24,6 +26,8 @@
|
|||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
function activate(){
|
||||
vm.members = [];
|
||||
loadMembers();
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
</div>
|
||||
<div class="messages">
|
||||
<table>
|
||||
<tr ng-repeat="m in listCtrl.members track by m.id"
|
||||
<tr id="m-{{m.id}}" ng-repeat="m in listCtrl.members track by m.id"
|
||||
class="side-message-navigation-item little-human shineHover {{m.tag}}">
|
||||
<td class="check-td">
|
||||
<div class="mail-checkbox">
|
||||
|
@ -35,8 +35,8 @@
|
|||
</div>
|
||||
</td>
|
||||
<td class="photo-td" ui-sref="teams.members.detail({id: m.id, label: listCtrl.label})">
|
||||
<!--<img ng-src="{{m.name.split(' ')[0] | profilePicture}}" class="little-human-picture">-->
|
||||
<img ng-src="{{'undefined' | profilePicture}}" class="little-human-picture">
|
||||
<img ng-src="{{m.id | profilePicture}}" class="little-human-picture">
|
||||
|
||||
</td>
|
||||
<td ui-sref="teams.members.detail({id: m.id, label: listCtrl.label})">
|
||||
<div class="name-container">
|
||||
|
@ -54,7 +54,7 @@
|
|||
</td>
|
||||
<td>
|
||||
<button class="btn btn-primary editable-table-button btn-xs" ng-click="tabCtrl.showCompose(m.id)">Edit</button>
|
||||
<button class="btn btn-danger editable-table-button btn-xs" ng-click="removeMember(m.id)">Delete</button>
|
||||
<button class="btn btn-danger editable-table-button btn-xs" ng-click="tabCtrl.removeMember(m.id)">Delete</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -15,8 +15,10 @@
|
|||
function list(params) {
|
||||
params = params || {};
|
||||
|
||||
console.log("labels", params);
|
||||
|
||||
var deferred = $q.defer();
|
||||
$http.get(endpoint)
|
||||
$http.get(endpoint, { params : params})
|
||||
.success(function(data) {
|
||||
deferred.resolve(data);
|
||||
}).error(function(msg, code) {
|
||||
|
@ -49,13 +51,21 @@
|
|||
return $http.delete(endpoint + "/" + id);
|
||||
}
|
||||
|
||||
function getMembersByLabel (label){
|
||||
var members = list();
|
||||
return members.filter(function(m){
|
||||
return m.labels.indexOf(label) != -1;
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
list:list,
|
||||
create:create,
|
||||
edit:edit,
|
||||
get:get,
|
||||
put:put,
|
||||
remove:remove
|
||||
remove:remove,
|
||||
getMembersByLabel:getMembersByLabel
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
angular.module('BlurAdmin.pages.teams', [
|
||||
'BlurAdmin.pages.teams.members',
|
||||
'BlurAdmin.pages.teams.lists',
|
||||
'lr.upload',
|
||||
])
|
||||
.config(routeConfig);
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
|
||||
}
|
||||
|
||||
vm.submit = function(form){
|
||||
vm.test = function(form){
|
||||
//$scope.submitted = true;
|
||||
alert("Angular is Awesome!!!");
|
||||
console.log('submit', form);
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
form: '='
|
||||
},
|
||||
templateUrl: 'app/theme/components/baWizard/baWizardStep.html',
|
||||
link: function($scope, $element, $attrs, wizard) {
|
||||
link: function($scope, $element, $attrs, wizard, AnswerService) {
|
||||
$scope.selected = true;
|
||||
|
||||
var tab = {
|
||||
|
@ -43,6 +43,7 @@
|
|||
|
||||
$scope.form && $scope.form.$setSubmitted(true);
|
||||
if($scope.form && $scope.form.$invalid == false) {
|
||||
|
||||
//console.log("inner", $scope.form.innerForm);
|
||||
angular.forEach($scope.form.innerForm, function(val, key) {
|
||||
if((key.indexOf("_") !== -1) && (key.indexOf("_comment") == -1)) {
|
||||
|
@ -57,7 +58,8 @@
|
|||
"memberEvaluated" : res[1],
|
||||
"memberAsked" : res[2]
|
||||
}
|
||||
console.log(answer);
|
||||
console.log($scope);
|
||||
//AnswerService.create(answer);
|
||||
/*$http.post(endpoint, answer).success(function(data) {
|
||||
console.log(data.data);
|
||||
//return response.data;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<ul class="al-msg-center clearfix">
|
||||
<!--<ul class="al-msg-center clearfix">
|
||||
<li uib-dropdown>
|
||||
<a href uib-dropdown-toggle>
|
||||
<i class="fa fa-bell-o"></i><span>5</span>
|
||||
|
@ -50,4 +50,4 @@
|
|||
<a href>See all messages</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>-->
|
|
@ -1,6 +1,7 @@
|
|||
<div class="page-top clearfix" scroll-position="scrolled" max-height="50" ng-class="{'scrolled': scrolled}">
|
||||
<a href="#/dashboard" class="al-logo clearfix"><span>Blur</span>Admin</a>
|
||||
<a href class="collapse-menu-link ion-navicon" ba-sidebar-toggle-menu></a>
|
||||
<a href="#/dashboard" class="al-logo clearfix"><span>Avito</span> Survey Admin</a>
|
||||
|
||||
|
||||
<div class="search">
|
||||
<i class="ion-ios-search-strong" ng-click="startSearch()"></i>
|
||||
|
@ -8,7 +9,8 @@
|
|||
</div>
|
||||
|
||||
<div class="user-profile clearfix">
|
||||
<div class="al-user-profile" uib-dropdown>
|
||||
|
||||
<!--<div class="al-user-profile" uib-dropdown>
|
||||
<a uib-dropdown-toggle class="profile-toggle-link">
|
||||
<img ng-src="{{::( 'Nasta' | profilePicture )}}">
|
||||
</a>
|
||||
|
@ -18,7 +20,8 @@
|
|||
<li><a href><i class="fa fa-cog"></i>Settings</a></li>
|
||||
<li><a href class="signout"><i class="fa fa-power-off"></i>Sign out</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>-->
|
||||
|
||||
<msg-center></msg-center>
|
||||
</div>
|
||||
</div>
|
|
@ -11,8 +11,9 @@
|
|||
/** @ngInject */
|
||||
function profilePicture(layoutPaths) {
|
||||
return function(input, ext) {
|
||||
ext = ext || 'png';
|
||||
return layoutPaths.images.profile + input + '.' + ext;
|
||||
ext = ext || 'jpeg';
|
||||
//return layoutPaths.images.profile + input + '.' + ext;
|
||||
return layoutPaths.images.pictures + input + '.' + ext;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
images: {
|
||||
root: IMAGES_ROOT,
|
||||
profile: IMAGES_ROOT + 'app/profile/',
|
||||
pictures: 'assets/pictures/',
|
||||
amMap: 'assets/img/theme/vendor/ammap//dist/ammap/images/',
|
||||
amChart: 'assets/img/theme/vendor/amcharts/dist/amcharts/images/'
|
||||
}
|
||||
|
|
|
@ -191,14 +191,14 @@
|
|||
|
||||
.little-human {
|
||||
cursor: pointer;
|
||||
transition: border-left 1.5s ease;
|
||||
/*transition: border-left 1.5s ease;*/
|
||||
font-weight: 300;
|
||||
.little-human-picture {
|
||||
width: 45px;
|
||||
height: 45px;
|
||||
border-radius: 23px;
|
||||
margin: 7px 0px 7px 7px;
|
||||
transition: all .2s ease-in-out;
|
||||
/*transition: all .2s ease-in-out;*/
|
||||
}
|
||||
.name {
|
||||
font-size: 14px;
|
||||
|
|
|
@ -0,0 +1,178 @@
|
|||
#surveys .photo-icon {
|
||||
margin-right:5px;
|
||||
width: 45px;
|
||||
height: 45px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.roll-in-blurred-right {
|
||||
-webkit-animation: roll-in-blurred-right 0.65s cubic-bezier(0.230, 1.000, 0.320, 1.000) 1s both;
|
||||
animation: roll-in-blurred-right 0.65s cubic-bezier(0.230, 1.000, 0.320, 1.000) 1s both;
|
||||
}
|
||||
.roll-in-blurred-left {
|
||||
-webkit-animation: roll-in-blurred-left 0.65s cubic-bezier(0.230, 1.000, 0.320, 1.000) both;
|
||||
animation: roll-in-blurred-left 0.65s cubic-bezier(0.230, 1.000, 0.320, 1.000) both;
|
||||
}
|
||||
.slide-out-blurred-left {
|
||||
-webkit-animation: slide-out-blurred-left 0.45s cubic-bezier(0.755, 0.050, 0.855, 0.060) both;
|
||||
animation: slide-out-blurred-left 0.45s cubic-bezier(0.755, 0.050, 0.855, 0.060) both;
|
||||
}
|
||||
.slide-out-blurred-right {
|
||||
-webkit-animation: slide-out-blurred-right 0.45s cubic-bezier(0.755, 0.050, 0.855, 0.060) both;
|
||||
animation: slide-out-blurred-right 0.45s cubic-bezier(0.755, 0.050, 0.855, 0.060) both;
|
||||
}
|
||||
|
||||
@-webkit-keyframes roll-in-blurred-right {
|
||||
0% {
|
||||
-webkit-transform: translateX(1000px) rotate(720deg);
|
||||
transform: translateX(1000px) rotate(720deg);
|
||||
-webkit-filter: blur(50px);
|
||||
filter: blur(50px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(0) rotate(0deg);
|
||||
transform: translateX(0) rotate(0deg);
|
||||
-webkit-filter: blur(0);
|
||||
filter: blur(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
@keyframes roll-in-blurred-right {
|
||||
0% {
|
||||
-webkit-transform: translateX(1000px) rotate(720deg);
|
||||
transform: translateX(1000px) rotate(720deg);
|
||||
-webkit-filter: blur(50px);
|
||||
filter: blur(50px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(0) rotate(0deg);
|
||||
transform: translateX(0) rotate(0deg);
|
||||
-webkit-filter: blur(0);
|
||||
filter: blur(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@-webkit-keyframes roll-in-blurred-left {
|
||||
0% {
|
||||
-webkit-transform: translateX(-1000px) rotate(-720deg);
|
||||
transform: translateX(-1000px) rotate(-720deg);
|
||||
-webkit-filter: blur(50px);
|
||||
filter: blur(50px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(0) rotate(0deg);
|
||||
transform: translateX(0) rotate(0deg);
|
||||
-webkit-filter: blur(0);
|
||||
filter: blur(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
@keyframes roll-in-blurred-left {
|
||||
0% {
|
||||
-webkit-transform: translateX(-1000px) rotate(-720deg);
|
||||
transform: translateX(-1000px) rotate(-720deg);
|
||||
-webkit-filter: blur(50px);
|
||||
filter: blur(50px);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(0) rotate(0deg);
|
||||
transform: translateX(0) rotate(0deg);
|
||||
-webkit-filter: blur(0);
|
||||
filter: blur(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes slide-out-blurred-left {
|
||||
0% {
|
||||
-webkit-transform: translateX(0) scaleY(1) scaleX(1);
|
||||
transform: translateX(0) scaleY(1) scaleX(1);
|
||||
-webkit-transform-origin: 50% 50%;
|
||||
transform-origin: 50% 50%;
|
||||
-webkit-filter: blur(0);
|
||||
filter: blur(0);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(-1000px) scaleX(2) scaleY(0.2);
|
||||
transform: translateX(-1000px) scaleX(2) scaleY(0.2);
|
||||
-webkit-transform-origin: 100% 50%;
|
||||
transform-origin: 100% 50%;
|
||||
-webkit-filter: blur(40px);
|
||||
filter: blur(40px);
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
}
|
||||
}
|
||||
@keyframes slide-out-blurred-left {
|
||||
0% {
|
||||
-webkit-transform: translateX(0) scaleY(1) scaleX(1);
|
||||
transform: translateX(0) scaleY(1) scaleX(1);
|
||||
-webkit-transform-origin: 50% 50%;
|
||||
transform-origin: 50% 50%;
|
||||
-webkit-filter: blur(0);
|
||||
filter: blur(0);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(-1000px) scaleX(2) scaleY(0.2);
|
||||
transform: translateX(-1000px) scaleX(2) scaleY(0.2);
|
||||
-webkit-transform-origin: 100% 50%;
|
||||
transform-origin: 100% 50%;
|
||||
-webkit-filter: blur(40px);
|
||||
filter: blur(40px);
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@-webkit-keyframes slide-out-blurred-right {
|
||||
0% {
|
||||
-webkit-transform: translateX(0) scaleY(1) scaleX(1);
|
||||
transform: translateX(0) scaleY(1) scaleX(1);
|
||||
-webkit-transform-origin: 50% 50%;
|
||||
transform-origin: 50% 50%;
|
||||
-webkit-filter: blur(0);
|
||||
filter: blur(0);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(1000px) scaleX(2) scaleY(0.2);
|
||||
transform: translateX(1000px) scaleX(2) scaleY(0.2);
|
||||
-webkit-transform-origin: 0% 50%;
|
||||
transform-origin: 0% 50%;
|
||||
-webkit-filter: blur(40px);
|
||||
filter: blur(40px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
@keyframes slide-out-blurred-right {
|
||||
0% {
|
||||
-webkit-transform: translateX(0) scaleY(1) scaleX(1);
|
||||
transform: translateX(0) scaleY(1) scaleX(1);
|
||||
-webkit-transform-origin: 50% 50%;
|
||||
transform-origin: 50% 50%;
|
||||
-webkit-filter: blur(0);
|
||||
filter: blur(0);
|
||||
opacity: 1;
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: translateX(1000px) scaleX(2) scaleY(0.2);
|
||||
transform: translateX(1000px) scaleX(2) scaleY(0.2);
|
||||
-webkit-transform-origin: 0% 50%;
|
||||
transform-origin: 0% 50%;
|
||||
-webkit-filter: blur(40px);
|
||||
filter: blur(40px);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -77,7 +77,7 @@ a.collapse-menu-link {
|
|||
color: $sidebar-text;
|
||||
padding: 0;
|
||||
float: left;
|
||||
margin: 11px 0 0 25px;
|
||||
margin: 11px 10px 0 0px;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
|
@ -159,7 +159,7 @@ a.collapse-menu-link {
|
|||
margin-right: 10px;
|
||||
}
|
||||
a.collapse-menu-link {
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.al-skin-dropdown {
|
||||
|
|
Loading…
Reference in New Issue