You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
202 lines
8.7 KiB
202 lines
8.7 KiB
6 months ago
|
/* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
var FLOWABLE_EDITOR_TOUR = {
|
||
|
|
||
|
/*
|
||
|
* General 'getting started' tutorial for the Editor.
|
||
|
*/
|
||
|
gettingStarted: function($scope, $translate, $q, useLocalStorage) {
|
||
|
var userName;
|
||
|
if ($scope.account.firstName) {
|
||
|
userName = $scope.account.firstName;
|
||
|
} else {
|
||
|
userName = $scope.account.fullname;
|
||
|
}
|
||
|
|
||
|
$q.all([
|
||
|
$translate('TOUR.WELCOME-TITLE', {userName: userName}), $translate('TOUR.WELCOME-CONTENT'),
|
||
|
$translate('TOUR.PALETTE-TITLE'), $translate('TOUR.PALETTE-CONTENT'),
|
||
|
$translate('TOUR.CANVAS-TITLE'), $translate('TOUR.CANVAS-CONTENT'),
|
||
|
$translate('TOUR.DRAGDROP-TITLE'), $translate('TOUR.DRAGDROP-CONTENT'),
|
||
|
$translate('TOUR.PROPERTIES-TITLE'), $translate('TOUR.PROPERTIES-CONTENT'),
|
||
|
$translate('TOUR.TOOLBAR-TITLE'), $translate('TOUR.TOOLBAR-CONTENT'),
|
||
|
$translate('TOUR.END-TITLE'), $translate('TOUR.END-CONTENT')
|
||
|
]).then(function(translations) {
|
||
|
|
||
|
// We're using a hack here due to https://github.com/sorich87/bootstrap-tour/issues/85:
|
||
|
// when clicking next in the tour, it always sets the 'display' css property to 'none'
|
||
|
// The hack is simple: before the next step is shown, we reset the 'display' property to 'block'
|
||
|
|
||
|
var tourStepDomElements = ['body', '#paletteHelpWrapper', '#canvasHelpWrapper', '#propertiesHelpWrapper', '#editor-header'];
|
||
|
|
||
|
var tour = new Tour({
|
||
|
name: 'activitiEditorTour',
|
||
|
storage: (useLocalStorage ? window.localStorage : false),
|
||
|
container: 'body',
|
||
|
backdrop: true,
|
||
|
keyboard: true,
|
||
|
steps: [
|
||
|
{
|
||
|
orphan: true,
|
||
|
title: translations[0],
|
||
|
content: translations[1],
|
||
|
template: FLOWABLE_EDITOR_TOUR._buildStepTemplate(false, true, false, 300),
|
||
|
onNext: FLOWABLE_EDITOR_TOUR._buildOnNextFunction(tourStepDomElements[0])
|
||
|
},
|
||
|
{
|
||
|
element: tourStepDomElements[1],
|
||
|
title: translations[2],
|
||
|
content: translations[3],
|
||
|
template: FLOWABLE_EDITOR_TOUR._buildStepTemplate(false, true, false, 400, 'images/tour/open-group.gif'),
|
||
|
onNext: FLOWABLE_EDITOR_TOUR._buildOnNextFunction(tourStepDomElements[1])
|
||
|
},
|
||
|
{
|
||
|
element: tourStepDomElements[2],
|
||
|
title: translations[4],
|
||
|
content: translations[5],
|
||
|
placement: 'left',
|
||
|
template: FLOWABLE_EDITOR_TOUR._buildStepTemplate(false, true, false),
|
||
|
onNext: FLOWABLE_EDITOR_TOUR._buildOnNextFunction(tourStepDomElements[2])
|
||
|
},
|
||
|
{
|
||
|
orphan: true,
|
||
|
title: translations[6],
|
||
|
content: translations[7],
|
||
|
template: FLOWABLE_EDITOR_TOUR._buildStepTemplate(false, true, false, 720, 'images/tour/tour-dnd.gif'),
|
||
|
onNext: FLOWABLE_EDITOR_TOUR._buildOnNextFunction(tourStepDomElements[0])
|
||
|
},
|
||
|
{
|
||
|
element: tourStepDomElements[3],
|
||
|
title: translations[8],
|
||
|
content: translations[9],
|
||
|
placement: 'top',
|
||
|
template: FLOWABLE_EDITOR_TOUR._buildStepTemplate(false, true, false, 400),
|
||
|
onNext: FLOWABLE_EDITOR_TOUR._buildOnNextFunction(tourStepDomElements[3])
|
||
|
},
|
||
|
{
|
||
|
element: tourStepDomElements[4],
|
||
|
title: translations[10],
|
||
|
content: translations[11],
|
||
|
placement: 'bottom',
|
||
|
template: FLOWABLE_EDITOR_TOUR._buildStepTemplate(false, true, false, 400),
|
||
|
onNext: FLOWABLE_EDITOR_TOUR._buildOnNextFunction(tourStepDomElements[4])
|
||
|
},
|
||
|
{
|
||
|
orphan: true,
|
||
|
title: translations[12],
|
||
|
content: translations[13],
|
||
|
template: FLOWABLE_EDITOR_TOUR._buildStepTemplate(false, false, true, 400),
|
||
|
onNext: FLOWABLE_EDITOR_TOUR._buildOnNextFunction(tourStepDomElements[0])
|
||
|
}
|
||
|
],
|
||
|
|
||
|
onEnd: FLOWABLE_EDITOR_TOUR._buildOnEndFunction(tourStepDomElements)
|
||
|
});
|
||
|
|
||
|
tour.init();
|
||
|
tour.start();
|
||
|
})
|
||
|
},
|
||
|
|
||
|
/*
|
||
|
* Tutorial showing how to use the bendpoint functionality for sequenceflow
|
||
|
*/
|
||
|
sequenceFlowBendpoint: function($scope, $translate, $q, useLocalStorage) {
|
||
|
|
||
|
$q.all([
|
||
|
$translate('FEATURE-TOUR.BENDPOINT.TITLE'), $translate('FEATURE-TOUR.BENDPOINT.DESCRIPTION')
|
||
|
]).then(function(translations) {
|
||
|
|
||
|
// We're using a hack here due to https://github.com/sorich87/bootstrap-tour/issues/85:
|
||
|
// when clicking next in the tour, it always sets the 'display' css property to 'none'
|
||
|
// The hack is simple: before the next step is shown, we reset the 'display' property to 'block'
|
||
|
|
||
|
var tourStepDomElements = ['body'];
|
||
|
|
||
|
var tour = new Tour({
|
||
|
name: 'bendpointTour',
|
||
|
storage: (useLocalStorage ? window.localStorage : false),
|
||
|
container: 'body',
|
||
|
backdrop: true,
|
||
|
keyboard: true,
|
||
|
steps: [
|
||
|
{
|
||
|
orphan: true,
|
||
|
title: translations[0],
|
||
|
content: translations[1],
|
||
|
template: FLOWABLE_EDITOR_TOUR._buildStepTemplate(false, false, true, 500, 'images/tour/sequenceflow-bendpoint.gif'),
|
||
|
onNext: FLOWABLE_EDITOR_TOUR._buildOnNextFunction(tourStepDomElements[0])
|
||
|
}
|
||
|
],
|
||
|
|
||
|
onEnd: FLOWABLE_EDITOR_TOUR._buildOnEndFunction(tourStepDomElements)
|
||
|
});
|
||
|
|
||
|
tour.init();
|
||
|
tour.start();
|
||
|
})
|
||
|
},
|
||
|
|
||
|
|
||
|
|
||
|
_buildStepTemplate : function (addPrevButton, addNextButton, addEndTourButton, optionalForcedWidth, image) {
|
||
|
|
||
|
var width = 200;
|
||
|
if (optionalForcedWidth) {
|
||
|
width = optionalForcedWidth;
|
||
|
}
|
||
|
|
||
|
var template =
|
||
|
'<div class=\'popover tour\' style=\'max-width:' + width + 'px\'>' +
|
||
|
'<div class=\'arrow\'></div>' +
|
||
|
'<h3 class=\'popover-title\'></h3>' +
|
||
|
'<div class=\'popover-content\'></div>' +
|
||
|
'<div class=\'popover-navigation\'>';
|
||
|
if (image) {
|
||
|
template = template + '<div><img src=\'' + image + '\' style=\'border 1px solid black;margin:5px 0 5px 0;\'></img></div>';
|
||
|
}
|
||
|
if (addPrevButton) {
|
||
|
template = template + '<button class=\'btn btn-sm btn-default \' data-role=\'prev\'>« Prev</button>';
|
||
|
}
|
||
|
if (addNextButton) {
|
||
|
template = template + '<button class=\'btn btn-sm btn-default\' data-role=\'next\' style=\'float:right\'">Next »</button>';
|
||
|
}
|
||
|
if (addEndTourButton) {
|
||
|
template = template + '<button class=\'btn btn-warning btn-sm\' data-role=\'end\' style=\'float:right\'">Got it!</button>';
|
||
|
}
|
||
|
|
||
|
template = template + '</div>' + '</nav>' + '</div>';
|
||
|
return template;
|
||
|
},
|
||
|
|
||
|
_buildOnNextFunction: function(selector) {
|
||
|
return function () {
|
||
|
jQuery(selector).each(function (i, obj) {
|
||
|
obj.style.display = 'block';
|
||
|
})
|
||
|
};
|
||
|
},
|
||
|
|
||
|
_buildOnEndFunction: function(selectors) {
|
||
|
return function () {
|
||
|
for (var elementsToResetIndex = 0; elementsToResetIndex < selectors.length; elementsToResetIndex++) {
|
||
|
jQuery(selectors[elementsToResetIndex]).each(function (i, obj) {
|
||
|
obj.style.display = 'block';
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
};
|