xref: /openbmc/phosphor-webui/app/common/services/toastService.js (revision 339db9a4c8610c5ecb92993c0bbc2219933bc858)
127ce84d2Sbeccabroek/**
227ce84d2Sbeccabroek * data service
327ce84d2Sbeccabroek *
427ce84d2Sbeccabroek * @module app/common/services/toastService
527ce84d2Sbeccabroek * @exports toastService
627ce84d2Sbeccabroek * @name toastService
727ce84d2Sbeccabroek
827ce84d2Sbeccabroek */
927ce84d2Sbeccabroek
1027ce84d2Sbeccabroekwindow.angular && (function(angular) {
1127ce84d2Sbeccabroek  'use strict';
1227ce84d2Sbeccabroek
1327ce84d2Sbeccabroek  angular.module('app.common.services').service('toastService', [
1427ce84d2Sbeccabroek    'ngToast', '$sce',
1527ce84d2Sbeccabroek    function(ngToast, $sce) {
165e930c0aSYoshie Muranaka      function initToast(
175e930c0aSYoshie Muranaka          type = 'create', title = '', message = '', dismissOnTimeout = false) {
18*339db9a4SPatrick Williams        const iconStatus = type === 'success' ? 'on' :
19*339db9a4SPatrick Williams            type === 'danger'                 ? 'error' :
20*339db9a4SPatrick Williams            type === 'warning'                ? 'warn' :
21*339db9a4SPatrick Williams                                                null;
225e930c0aSYoshie Muranaka        const content = $sce.trustAsHtml(`
235e930c0aSYoshie Muranaka          <div role="alert" class="alert-content-container">
245e930c0aSYoshie Muranaka            <status-icon ng-if="${iconStatus !== null}"
255e930c0aSYoshie Muranaka                         status="${iconStatus}"
265e930c0aSYoshie Muranaka                         class="status-icon">
275e930c0aSYoshie Muranaka            </status-icon>
285e930c0aSYoshie Muranaka            <div class="alert-content">
295e930c0aSYoshie Muranaka              <h2 class="alert-content__header">${title}</h2>
305e930c0aSYoshie Muranaka              <p class="alert-content__body">${message}</p>
315e930c0aSYoshie Muranaka            </div>
325e930c0aSYoshie Muranaka          </div>`);
335e930c0aSYoshie Muranaka        ngToast[type]({content, dismissOnTimeout, compileContent: true});
3427ce84d2Sbeccabroek      };
355e930c0aSYoshie Muranaka
365e930c0aSYoshie Muranaka      this.error = function(message) {
375e930c0aSYoshie Muranaka        initToast('danger', 'Error', message);
385e930c0aSYoshie Muranaka      };
395e930c0aSYoshie Muranaka
4027ce84d2Sbeccabroek      this.success = function(message) {
415e930c0aSYoshie Muranaka        initToast('success', 'Success!', message, true);
425e930c0aSYoshie Muranaka      };
435e930c0aSYoshie Muranaka
445e930c0aSYoshie Muranaka      this.warn = function(message) {
455e930c0aSYoshie Muranaka        initToast('warning', 'Warning', message);
465e930c0aSYoshie Muranaka      };
475e930c0aSYoshie Muranaka
485e930c0aSYoshie Muranaka      this.info = function(title, message) {
495e930c0aSYoshie Muranaka        initToast('info', title, message);
5027ce84d2Sbeccabroek      };
5127ce84d2Sbeccabroek    }
5227ce84d2Sbeccabroek  ]);
5327ce84d2Sbeccabroek})(window.angular);
54