text: /*
   * Copyright 2015-present Open Networking Laboratory
   *
   * 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.
   */
  
  /*
   Sample Demo module. This contains the "business logic" for the topology
   overlay that we are implementing.
   */
  
  (function () {
      'use strict';
  
      // injected refs
      var $log, fs, flash, wss;
  
      // constants
      var displayStart = 'sampleTopovDisplayStart',
          displayUpdate = 'sampleTopovDisplayUpdate',
          displayStop = 'sampleTopovDisplayStop';
  
      // internal state
      var currentMode = null;
  
  
      // === ---------------------------
      // === Helper functions
  
      function sendDisplayStart(mode) {
          wss.sendEvent(displayStart, {
              mode: mode
          });
      }
  
      function sendDisplayUpdate(what) {
          wss.sendEvent(displayUpdate, {
              id: what ? what.id : ''
          });
      }
  
      function sendDisplayStop() {
          wss.sendEvent(displayStop);
      }
  
      // === ---------------------------
      // === Main API functions
  
      function startDisplay(mode) {
          if (currentMode === mode) {
              $log.debug('(in mode', mode, 'already)');
          } else {
              currentMode = mode;
              sendDisplayStart(mode);
              flash.flash('Starting display mode: ' + mode);
          }
      }
  
      function updateDisplay(m) {
          if (currentMode) {
              sendDisplayUpdate(m);
          }
      }
  
      function stopDisplay() {
          if (currentMode) {
              currentMode = null;
              sendDisplayStop();
              flash.flash('Canceling display mode');
              return true;
          }
          return false;
      }
  
      // === ---------------------------
      // === Module Factory Definition
  
      angular.module('ovSampleTopov', [])
          .factory('SampleTopovDemoService',
          ['$log', 'FnService', 'FlashService', 'WebSocketService',
  
          function (_$log_, _fs_, _flash_, _wss_) {
              $log = _$log_;
              fs = _fs_;
              flash = _flash_;
              wss = _wss_;
  
              return {
                  startDisplay: startDisplay,
                  updateDisplay: updateDisplay,
                  stopDisplay: stopDisplay
              };
          }]);
  }());
  