mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-01-17 06:52:27 +01:00
machines tour
This commit is contained in:
parent
c13ba85230
commit
76c1b69b7a
@ -82,8 +82,8 @@ Application.Controllers.controller('HomeController', ['$scope', '$stateParams',
|
||||
selector: 'body',
|
||||
stepId: 'welcome',
|
||||
order: 0,
|
||||
title: _t('app.public.tour.welcome.title'),
|
||||
content: _t('app.public.tour.welcome.content'),
|
||||
title: _t('app.public.tour.welcome.welcome.title'),
|
||||
content: _t('app.public.tour.welcome.welcome.content'),
|
||||
placement: 'bottom',
|
||||
orphan: true
|
||||
});
|
||||
@ -91,24 +91,24 @@ Application.Controllers.controller('HomeController', ['$scope', '$stateParams',
|
||||
selector: '.nav-primary li.home-link',
|
||||
stepId: 'home',
|
||||
order: 1,
|
||||
title: _t('app.public.tour.home.title'),
|
||||
content: _t('app.public.tour.home.content'),
|
||||
title: _t('app.public.tour.welcome.home.title'),
|
||||
content: _t('app.public.tour.welcome.home.content'),
|
||||
placement: 'right'
|
||||
});
|
||||
uitour.createStep({
|
||||
selector: '.nav-primary li.reserve-machine-link',
|
||||
stepId: 'machines',
|
||||
order: 2,
|
||||
title: _t('app.public.tour.machines.title'),
|
||||
content: _t('app.public.tour.machines.content'),
|
||||
title: _t('app.public.tour.welcome.machines.title'),
|
||||
content: _t('app.public.tour.welcome.machines.content'),
|
||||
placement: 'right'
|
||||
});
|
||||
uitour.createStep({
|
||||
selector: '.nav-primary li.reserve-training-link',
|
||||
stepId: 'trainings',
|
||||
order: 3,
|
||||
title: _t('app.public.tour.trainings.title'),
|
||||
content: _t('app.public.tour.trainings.content'),
|
||||
title: _t('app.public.tour.welcome.trainings.title'),
|
||||
content: _t('app.public.tour.welcome.trainings.content'),
|
||||
placement: 'right'
|
||||
});
|
||||
if (!Fablab.withoutSpaces) {
|
||||
@ -116,8 +116,8 @@ Application.Controllers.controller('HomeController', ['$scope', '$stateParams',
|
||||
selector: '.nav-primary li.reserve-space-link',
|
||||
stepId: 'spaces',
|
||||
order: 4,
|
||||
title: _t('app.public.tour.spaces.title'),
|
||||
content: _t('app.public.tour.spaces.content'),
|
||||
title: _t('app.public.tour.welcome.spaces.title'),
|
||||
content: _t('app.public.tour.welcome.spaces.content'),
|
||||
placement: 'right'
|
||||
});
|
||||
}
|
||||
@ -125,72 +125,72 @@ Application.Controllers.controller('HomeController', ['$scope', '$stateParams',
|
||||
selector: '.nav-primary li.reserve-event-link',
|
||||
stepId: 'events',
|
||||
order: 5,
|
||||
title: _t('app.public.tour.events.title'),
|
||||
content: _t('app.public.tour.events.content'),
|
||||
title: _t('app.public.tour.welcome.events.title'),
|
||||
content: _t('app.public.tour.welcome.events.content'),
|
||||
placement: 'right'
|
||||
});
|
||||
uitour.createStep({
|
||||
selector: '.nav-primary li.public-calendar-link',
|
||||
stepId: 'calendar',
|
||||
order: 6,
|
||||
title: _t('app.public.tour.calendar.title'),
|
||||
content: _t('app.public.tour.calendar.content'),
|
||||
title: _t('app.public.tour.welcome.calendar.title'),
|
||||
content: _t('app.public.tour.welcome.calendar.content'),
|
||||
placement: 'right'
|
||||
});
|
||||
uitour.createStep({
|
||||
selector: '.nav-primary li.projects-gallery-link',
|
||||
stepId: 'projects',
|
||||
order: 7,
|
||||
title: _t('app.public.tour.projects.title'),
|
||||
content: _t('app.public.tour.projects.content'),
|
||||
title: _t('app.public.tour.welcome.projects.title'),
|
||||
content: _t('app.public.tour.welcome.projects.content'),
|
||||
placement: 'right'
|
||||
});
|
||||
uitour.createStep({
|
||||
selector: '.nav-primary li.plans-link',
|
||||
stepId: 'plans',
|
||||
order: 8,
|
||||
title: _t('app.public.tour.plans.title'),
|
||||
content: _t('app.public.tour.plans.content'),
|
||||
title: _t('app.public.tour.welcome.plans.title'),
|
||||
content: _t('app.public.tour.welcome.plans.content'),
|
||||
placement: 'right'
|
||||
});
|
||||
uitour.createStep({
|
||||
selector: '.nav-primary .admin-section',
|
||||
stepId: 'admin',
|
||||
order: 9,
|
||||
title: _t('app.public.tour.admin.title'),
|
||||
content: _t('app.public.tour.admin.content'),
|
||||
title: _t('app.public.tour.welcome.admin.title'),
|
||||
content: _t('app.public.tour.welcome.admin.content'),
|
||||
placement: 'right'
|
||||
});
|
||||
uitour.createStep({
|
||||
selector: '.navbar.header li.about-page-link',
|
||||
stepId: 'about',
|
||||
order: 10,
|
||||
title: _t('app.public.tour.about.title'),
|
||||
content: _t('app.public.tour.about.content'),
|
||||
title: _t('app.public.tour.welcome.about.title'),
|
||||
content: _t('app.public.tour.welcome.about.content'),
|
||||
placement: 'bottom'
|
||||
});
|
||||
uitour.createStep({
|
||||
selector: '.navbar.header li.notification-center-link',
|
||||
stepId: 'notifications',
|
||||
order: 11,
|
||||
title: _t('app.public.tour.notifications.title'),
|
||||
content: _t('app.public.tour.notifications.content'),
|
||||
title: _t('app.public.tour.welcome.notifications.title'),
|
||||
content: _t('app.public.tour.welcome.notifications.content'),
|
||||
placement: 'bottom'
|
||||
});
|
||||
uitour.createStep({
|
||||
selector: '.navbar.header li.user-menu-dropdown',
|
||||
stepId: 'profile',
|
||||
order: 12,
|
||||
title: _t('app.public.tour.profile.title'),
|
||||
content: _t('app.public.tour.profile.content'),
|
||||
title: _t('app.public.tour.welcome.profile.title'),
|
||||
content: _t('app.public.tour.welcome.profile.content'),
|
||||
placement: 'bottom'
|
||||
});
|
||||
uitour.createStep({
|
||||
selector: '.app-generator .app-version',
|
||||
stepId: 'version',
|
||||
order: 13,
|
||||
title: _t('app.public.tour.version.title'),
|
||||
content: _t('app.public.tour.version.content'),
|
||||
title: _t('app.public.tour.welcome.version.title'),
|
||||
content: _t('app.public.tour.welcome.version.content'),
|
||||
placement: 'top'
|
||||
});
|
||||
uitour.createStep({
|
||||
|
@ -180,8 +180,8 @@ const _reserveMachine = function (machine, e) {
|
||||
/**
|
||||
* Controller used in the public listing page, allowing everyone to see the list of machines
|
||||
*/
|
||||
Application.Controllers.controller('MachinesController', ['$scope', '$state', '_t', 'Machine', '$uibModal', 'machinesPromise',
|
||||
function ($scope, $state, _t, Machine, $uibModal, machinesPromise) {
|
||||
Application.Controllers.controller('MachinesController', ['$scope', '$state', '_t', 'Machine', '$uibModal', 'machinesPromise', 'Member', 'uiTourService',
|
||||
function ($scope, $state, _t, Machine, $uibModal, machinesPromise, Member, uiTourService) {
|
||||
// Retrieve the list of machines
|
||||
$scope.machines = machinesPromise;
|
||||
|
||||
@ -205,11 +205,93 @@ Application.Controllers.controller('MachinesController', ['$scope', '$state', '_
|
||||
$scope.machineFiltering = 'enabled';
|
||||
|
||||
// Available options for filtering machines by status
|
||||
return $scope.filterDisabled = [
|
||||
$scope.filterDisabled = [
|
||||
'enabled',
|
||||
'disabled',
|
||||
'all'
|
||||
];
|
||||
|
||||
/**
|
||||
* Setup the feature-tour for the machines page. (admins only)
|
||||
* This is intended as a contextual help (when pressing F1)
|
||||
*/
|
||||
$scope.setupMachinesTour = function () {
|
||||
// setup the tour for admins only
|
||||
if ($scope.currentUser && $scope.currentUser.role === 'admin') {
|
||||
// get the tour defined by the ui-tour directive
|
||||
const uitour = uiTourService.getTourByName('machines');
|
||||
// TODO add the steps
|
||||
uitour.createStep({
|
||||
selector: 'body',
|
||||
stepId: 'welcome',
|
||||
order: 0,
|
||||
title: _t('app.public.tour.machines.welcome.title'),
|
||||
content: _t('app.public.tour.machines.welcome.content'),
|
||||
placement: 'bottom',
|
||||
orphan: true
|
||||
});
|
||||
if ($scope.machines.length > 0) {
|
||||
uitour.createStep({
|
||||
selector: '.machines-list .show-button',
|
||||
stepId: 'machines',
|
||||
order: 1,
|
||||
title: _t('app.public.tour.machines.view.title'),
|
||||
content: _t('app.public.tour.machines.view.content'),
|
||||
placement: 'top'
|
||||
});
|
||||
}
|
||||
uitour.createStep({
|
||||
selector: 'body',
|
||||
stepId: 'conclusion',
|
||||
order: 2,
|
||||
title: _t('app.public.tour.conclusion.title'),
|
||||
content: _t('app.public.tour.conclusion.content'),
|
||||
placement: 'bottom',
|
||||
orphan: true
|
||||
});
|
||||
// on tour end, save the status in database
|
||||
uitour.on('ended', function () {
|
||||
if (uitour.getStatus() === uitour.Status.ON && $scope.currentUser.profile.tours.indexOf('machines') < 0) {
|
||||
Member.completeTour({ id: $scope.currentUser.id }, { tour: 'machines' }, function (res) {
|
||||
$scope.currentUser.profile.tours = res.tours;
|
||||
});
|
||||
}
|
||||
});
|
||||
// if the user has never seen the tour, show him now
|
||||
if ($scope.currentUser.profile.tours.indexOf('machines') < 0) {
|
||||
uitour.start();
|
||||
}
|
||||
// start this tour when an user press F1 - this is contextual help
|
||||
window.addEventListener('keydown', handleF1);
|
||||
}
|
||||
}
|
||||
|
||||
/* PRIVATE SCOPE */
|
||||
|
||||
/**
|
||||
* Kind of constructor: these actions will be realized first when the controller is loaded
|
||||
*/
|
||||
const initialize = function () {
|
||||
// listen the $destroy event of the controller to remove the F1 key binding
|
||||
$scope.$on('$destroy', function () {
|
||||
window.removeEventListener('keydown', handleF1);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback used to trigger the feature tour when the user press the F1 key.
|
||||
* @param e {KeyboardEvent}
|
||||
*/
|
||||
const handleF1 = function (e) {
|
||||
if (e.key === 'F1') {
|
||||
e.preventDefault();
|
||||
const tour = uiTourService.getTourByName('machines');
|
||||
if (tour) { tour.start(); }
|
||||
}
|
||||
};
|
||||
|
||||
// !!! MUST BE CALLED AT THE END of the controller
|
||||
return initialize();
|
||||
}
|
||||
]);
|
||||
|
||||
|
@ -20,7 +20,12 @@
|
||||
</section>
|
||||
|
||||
|
||||
<section class="m-lg">
|
||||
<section class="m-lg machines-list"
|
||||
ui-tour="machines"
|
||||
ui-tour-backdrop="true"
|
||||
ui-tour-template-url="'<%= asset_path "shared/tour-step-template.html" %>'"
|
||||
ui-tour-use-hotkeys="true"
|
||||
post-render="setupMachinesTour">
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="input-group col-md-3 m-l-lg m-b">
|
||||
@ -52,7 +57,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="no-padder" ng-class="{'col-sm-6': !machine.disabled}">
|
||||
<div class="btn btn-default btn-block padder-v no-b red" ng-click="showMachine(machine)">
|
||||
<div class="btn btn-default btn-block padder-v no-b red show-button" ng-click="showMachine(machine)">
|
||||
<i class="fa fa-eye m-r-xs"></i>
|
||||
<span class="hidden-sm" translate>{{ 'app.shared.buttons.consult' }}</span>
|
||||
</div>
|
||||
|
@ -380,49 +380,65 @@ fr:
|
||||
projects_using_the_space: "Projets utilisant l'espace"
|
||||
|
||||
tour:
|
||||
welcome:
|
||||
title: "Bienvenue dans Fab-Manager"
|
||||
content: "Afin de vous aider à bien prendre en main l'application, nous allons procéder à une rapide visite guidée des fonctionnalités."
|
||||
home:
|
||||
title: "Page d'accueil"
|
||||
content: "Un clic ici vous ramènera vers la page d'accueil où vous vous situez actuellement."
|
||||
machines:
|
||||
title: "Les machines"
|
||||
content: "Ici, vous pourrez consulter la liste de toutes les machines et réserver un créneau pour l'une d'entre elle."
|
||||
trainings:
|
||||
title: "Les formations"
|
||||
content: "Cette page vous permettra d'inscrire un membre à une formation. Certaines formations peuvent être un préalable à la réservation de certaines machines."
|
||||
spaces:
|
||||
title: "Les espaces"
|
||||
content: "Consultez et réservez les espaces disponibles. Leur particularité est qu'ils peuvent être réservés par plusieurs personnes en même temps. Ce peut-être, par exemple, un atelier bois ou une salle de réunion."
|
||||
events:
|
||||
title: "Les évènements"
|
||||
content: "Une soirée porte ouverte ou un stage pour fabriquer sa lampe de bureau ? C'est par ici !"
|
||||
calendar:
|
||||
title: "Le calendrier publique"
|
||||
content: "Visualisez en un clin d'oeil tout ce qui est prévu au programme des prochaines semaines."
|
||||
projects:
|
||||
title: "Les projets"
|
||||
content: "Documentez et partagez avec la communauté toutes vos réalisations."
|
||||
plans:
|
||||
title: "Les abonnements"
|
||||
content: "Les abonnements offrent un moyen de segmenter vos tarifs et d'accorder des avantages aux utilisateurs réguliers."
|
||||
admin:
|
||||
title: "Section administrateur"
|
||||
content: "L'ensemble des éléments ci-dessous ne sont accessibles qu'aux administrateurs. Ils permettent de gérer et de configurer Fab-Manager. À la fin de cette visite, cliquez sur l'un d'entre eux pour en savoir plus."
|
||||
about:
|
||||
title: "À propos"
|
||||
content: "Une page que vous pouvez entièrement personnaliser, pour y présenter votre activité."
|
||||
notifications:
|
||||
title: "Centre de notifications"
|
||||
content: "Chaque fois qu'il se passe quelque chose d'important, vous serez notifié ici."
|
||||
profile:
|
||||
title: "Menu utilisateur"
|
||||
content: "Retrouvez ici vos informations personnelles ainsi que toute votre activité sur Fab-Manager."
|
||||
version:
|
||||
title: "Version de l'application"
|
||||
content: "Passez votre curseur sur cette icône pour connaître la version de Fab-Manager. Si vous n'êtes pas à jour, cela vous sera signalé ici et vous pourrez alors obtenir des détails en cliquant dessus."
|
||||
conclusion:
|
||||
title: "Merci de votre attention"
|
||||
content: "Affichez de l'aide en appuyant sur <strong>F1</strong> à n'importe quel moment.<br> Bonne continuation avec Fab-Manager."
|
||||
welcome:
|
||||
welcome:
|
||||
title: "Bienvenue dans Fab-Manager"
|
||||
content: "Afin de vous aider à bien prendre en main l'application, nous allons procéder à une rapide visite guidée des fonctionnalités."
|
||||
home:
|
||||
title: "Page d'accueil"
|
||||
content: "Un clic ici vous ramènera vers la page d'accueil où vous vous situez actuellement."
|
||||
machines:
|
||||
title: "Les machines"
|
||||
content: "Ici, vous pourrez consulter la liste de toutes les machines et réserver un créneau pour l'une d'entre elle."
|
||||
trainings:
|
||||
title: "Les formations"
|
||||
content: "Cette page vous permettra d'inscrire un membre à une formation. Certaines formations peuvent être un préalable à la réservation de certaines machines."
|
||||
spaces:
|
||||
title: "Les espaces"
|
||||
content: "Consultez et réservez les espaces disponibles. Leur particularité est qu'ils peuvent être réservés par plusieurs personnes en même temps. Ce peut-être, par exemple, un atelier bois ou une salle de réunion."
|
||||
events:
|
||||
title: "Les évènements"
|
||||
content: "Une soirée porte ouverte ou un stage pour fabriquer sa lampe de bureau ? C'est par ici !"
|
||||
calendar:
|
||||
title: "Le calendrier publique"
|
||||
content: "Visualisez en un clin d'oeil tout ce qui est prévu au programme des prochaines semaines."
|
||||
projects:
|
||||
title: "Les projets"
|
||||
content: "Documentez et partagez avec la communauté toutes vos réalisations."
|
||||
plans:
|
||||
title: "Les abonnements"
|
||||
content: "Les abonnements offrent un moyen de segmenter vos tarifs et d'accorder des avantages aux utilisateurs réguliers."
|
||||
admin:
|
||||
title: "Section administrateur"
|
||||
content: "L'ensemble des éléments ci-dessous ne sont accessibles qu'aux administrateurs. Ils permettent de gérer et de configurer Fab-Manager. À la fin de cette visite, cliquez sur l'un d'entre eux pour en savoir plus."
|
||||
about:
|
||||
title: "À propos"
|
||||
content: "Une page que vous pouvez entièrement personnaliser, pour y présenter votre activité."
|
||||
notifications:
|
||||
title: "Centre de notifications"
|
||||
content: "Chaque fois qu'il se passe quelque chose d'important, vous serez notifié ici."
|
||||
profile:
|
||||
title: "Menu utilisateur"
|
||||
content: "Retrouvez ici vos informations personnelles ainsi que toute votre activité sur Fab-Manager."
|
||||
version:
|
||||
title: "Version de l'application"
|
||||
content: "Passez votre curseur sur cette icône pour connaître la version de Fab-Manager. Si vous n'êtes pas à jour, cela vous sera signalé ici et vous pourrez alors obtenir des détails en cliquant dessus."
|
||||
machines:
|
||||
welcome:
|
||||
title: "Gérer les machines"
|
||||
content: "<p>Les machines sont les outils que vous mettez à disposition de vos utilisateurs. Vous devez créer ici les machines qui pourront ensuite être réservées par les membres.</p><p>Vous pouvez également créer des entrées pour des machines non réservables ou en libre accès, il vous suffira ensuite de ne pas associer de créneaux de disponibilités à celles-ci.</p>"
|
||||
view:
|
||||
title: "Consulter"
|
||||
content: "Pour modifier ou supprimer une machine, cliquez tout d'abord ici. Vous ne pourrez par supprimer une machine qui a déjà été associée à des créneaux de disponibilité, mais vous pourrez la désactiver."
|
||||
spaces:
|
||||
welcome:
|
||||
title: "Gérer les espaces"
|
||||
content: "<p>Les espaces sont des lieux que vous mettez à disposition de vos utilisateurs. Par exemple, une salle de réunion ou un atelier bois. Vous devez créer ici les espaces qui pourront ensuite être réservées par les membres.</p><p>La spécificité des espaces est qu'ils peuvent être réservés par plusieurs utilisateurs en même temps.</p>"
|
||||
view:
|
||||
title: "Consulter"
|
||||
content: "Pour modifier ou supprimer un espace, cliquez tout d'abord ici. Vous ne pourrez par supprimer un espace qui a déjà été associée à des créneaux de disponibilité, mais vous pourrez le désactiver."
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user