/*- * ============LICENSE_START======================================================= * SDC * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ * 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. * ============LICENSE_END========================================================= */ /// module Sdc.ViewModels { 'use strict'; export interface IWelcomeViewMode { slides:Array; onCloseButton():void; onCloseVideoButton():void; video_mp4: string; video_ogg: string; } export class WelcomeViewModel { firstLoad:boolean = true; alreadyAnimated:Array = []; static '$inject' = [ '$scope', '$sce', 'sdcConfig', '$state', '$filter' ]; constructor( private $scope:IWelcomeViewMode, private $sce:any, private sdcConfig: Models.IAppConfigurtaion, private $state:ng.ui.IStateService, private $filter:ng.IFilterService ){ /*this.init(); this.initScope(); window.setTimeout(():void => { this.loadImages(():void=> { window.setTimeout(():void =>{ $(".sdc-welcome-new-page").addClass("animated fadeIn"); this.animateGeneral(); this.animate1(); },1000); }); },0);*/ } private initScope = ():void => { this.$scope.onCloseButton = ():void => { //console.log("onCloseButton"); this.$state.go("dashboard", {}); }; this.$scope.onCloseVideoButton = ():void => { //console.log("onCloseVideoButton"); $("#sdc-page-scroller").removeClass("animated fadeOut"); $("#sdc-page-scroller").addClass("animated fadeIn"); window.setTimeout(()=>{$("#sdc-page-scroller").css("display","block");},0); $("#sdc-welcome-video-wrapper").removeClass("animated fadeIn"); $("#sdc-welcome-video-wrapper").addClass("animated fadeOut"); window.setTimeout(()=>{$("#sdc-welcome-video-wrapper").css("display","none");},500); let videoElement:any = $("#asdc-welcome-video")[0]; videoElement.pause(); }; let url: string = this.sdcConfig.api.welcome_page_video_url; this.$scope.video_mp4 = this.$sce.trustAsResourceUrl(url + ".mp4"); this.$scope.video_ogg = this.$sce.trustAsResourceUrl(url + ".ogg"); }; private init = ():void => { let viewModelsHtmlBasePath:string = '/app/scripts/view-models/'; this.$scope.slides = [ {"url": viewModelsHtmlBasePath + 'welcome/slide0.html', "id": "slide-0", "index": 0, "callback": () => {this.animate0();}}, {"url": viewModelsHtmlBasePath + 'welcome/slide1.html', "id": "slide-1", "index": 1, "callback": () => {}}, {"url": viewModelsHtmlBasePath + 'welcome/slide2.html', "id": "slide-2", "index": 2, "callback": () => {this.animate2();}}, {"url": viewModelsHtmlBasePath + 'welcome/slide3.html', "id": "slide-3", "index": 3, "callback": () => {this.animate3();}}, {"url": viewModelsHtmlBasePath + 'welcome/slide4.html', "id": "slide-4", "index": 4, "callback": () => {this.animate4();}}, {"url": viewModelsHtmlBasePath + 'welcome/slide5.html', "id": "slide-5", "index": 5, "callback": () => {this.animate5();}}, {"url": viewModelsHtmlBasePath + 'welcome/slide6.html', "id": "slide-6", "index": 6, "callback": () => {this.animate6();}} ]; $('body').keyup((e):void=> { if (e.keyCode == 27) { // escape key maps to keycode `27` this.$state.go('dashboard'); } }); }; private animateGeneral = ():void => { //console.log("animateGeneral"); /*// Animate the right navigation if (this.firstLoad===true) { //TODO: Israel //TweenLite.from('.page-nav', 2, {x: "100px", delay: 2}); } */ this.firstLoad = false; }; /*private loadImages = (callback: Function):void => { let src = $('#slide-1 .asdc-welcome-frame').css('background-image'); let url = src.match(/\((.*?)\)/)[1].replace(/('|")/g,''); let img = new Image(); img.onload = function() { callback(); //alert('image loaded'); }; img.src = url; /!*if (img.complete){ callback; }*!/ };*/ private animate = (element:any, animation:string, when:number):void => { window.setTimeout(()=>{ element.addClass("animated " + animation); if (element[0]) { element[0].style = "visibility: visible;"; } },when); }; private hide = (element:any, animation:string, animationToHide:string, when:number):void => { element.addClass("animated " + animation); element[0].style="visibility: hidden;"; }; private animate0 = ():void => { if (this.alreadyAnimated.indexOf(0)!==-1){ return; } else { this.alreadyAnimated.push(0); } //console.log("slide 0 - animate"); this.animate($('#slide-0 .bg-1'),'fadeInDown',500); this.animate($('#slide-0 .bg-2'),'fadeInDown',1000); this.animate($('#slide-0 .bg-3'),'fadeInDown',1500); this.animate($('#slide-0 .bg-4'),'fadeInDown',2000); this.animate($('#slide-0 .bg-5'),'fadeInDown',2500); this.animate($('#slide-0 .bg-6'),'fadeInDown',3000); this.animate($('#slide-0 .bg-7'),'fadeInDown',3500); this.animate($('#slide-0 .bg-8'),'fadeInDown',4000); }; private animate1 = ():void => { if (this.alreadyAnimated.indexOf(1)!==-1){ return; } else { this.alreadyAnimated.push(1); } //console.log("slide 1 - animate"); this.animate($('#slide-1 .asdc-welcome-main-title'),'fadeInUp',1000); this.animate($('#slide-1 .asdc-welcome-main-message'),'fadeInUp',2000); this.animate($('#slide-1 .asdc-welcome-main-back-btn'),'fadeIn',3000); this.animate($('#slide-1 .asdc-welcome-video-icon'),'zoomIn',3000); this.animate($('#slide-1 .asdc-welcome-inner-circle'),'zoomIn',3000); this.animate($('.welcome-nav'),'slideInRight',2000); }; private animate2 = ():void => { if (this.alreadyAnimated.indexOf(2)!==-1){ return; } else { this.alreadyAnimated.push(2); } //console.log("slide 2 - animate"); this.animate($('#slide-2 .asdc-welcome-frame-shape'),'zoomIn',500); this.animate($('#slide-2 .asdc-welcome-slide-text-box-content'),'fadeInUp',2000); this.animate($('#slide-2 .asdc-welcome-slide-text-box-title'),'fadeInUp',1000); }; private animate3 = ():void => { if (this.alreadyAnimated.indexOf(3)!==-1){ return; } else { this.alreadyAnimated.push(3); } //console.log("slide 3 - animate"); this.animate($('#slide-3 .asdc-welcome-frame-shape'),'zoomIn',500); this.animate($('#slide-3 .asdc-welcome-slide-text-box-content'),'fadeInUp',2000); this.animate($('#slide-3 .asdc-welcome-slide-text-box-title'),'fadeInUp',1000); }; private animate4 = ():void => { if (this.alreadyAnimated.indexOf(4)!==-1){ return; } else { this.alreadyAnimated.push(4); } //console.log("slide 4 - animate"); this.animate($('#slide-4 .asdc-welcome-frame-shape'),'zoomIn',500); this.animate($('#slide-4 .asdc-welcome-slide-text-box-content'),'fadeInUp',2000); this.animate($('#slide-4 .asdc-welcome-slide-text-box-title'),'fadeInUp',1000); }; private animate5 = ():void => { if (this.alreadyAnimated.indexOf(5)!==-1){ return; } else { this.alreadyAnimated.push(5); } //console.log("slide 5 - animate"); this.animate($('#slide-5 .asdc-welcome-frame-shape'),'zoomIn',500); this.animate($('#slide-5 .asdc-welcome-slide-text-box-content'),'fadeInUp',2000); this.animate($('#slide-5 .asdc-welcome-slide-text-box-title'),'fadeInUp',1000); }; private animate6 = ():void => { if (this.alreadyAnimated.indexOf(6)!==-1){ return; } else { this.alreadyAnimated.push(6); } //console.log("slide 6 - animate"); this.animate($('#slide-6 .asdc-welcome-main-message'),'fadeInUp',2000); this.animate($('#slide-6 .asdc-welcome-main-title'),'fadeInUp',1000); this.animate($('#slide-6 .asdc-welcome-main-back-btn'),'fadeInUp',3000); }; private animateCss = (element:JQuery, animationName:string):void => { let animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend'; element.addClass('animated ' + animationName).one(animationEnd, function() { element.removeClass('animated ' + animationName); }); }; private unAnimateCss = (element:JQuery, animationName:string):void => { let animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend'; element.addClass('animated ' + animationName).one(animationEnd, function() { element.removeClass('animated ' + animationName); }); }; } }