"use strict"; /** * Licensed Materials - Property of IBM * IBM Cognos Products: admin * Copyright IBM Corp. 2015, 2018 * US Government Users Restricted Rights - Use, duplication or * disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ define(['jquery', 'underscore', 'doT', 'bi/commons/utils/BidiUtil', 'bi/commons/i18n/Formatter', 'bi/glass/app/ContentView', 'bi/admin/system/services/ApiSvc', 'bi/admin/nls/StringResource', 'text!bi/admin/system/templates/BackupTabTemplate.html'], function ($, _, dot, BidiUtil, Formatter, View, Api, StringResource, template) { 'use strict'; //NOSONAR: meant to be strict var BackupTab = View.extend({ init: function init(options) { BackupTab.inherited('init', this, arguments); _.extend(this, options); }, _getNewDate: function _getNewDate(sDate) { return new Date(sDate); }, render: function render() { return Promise.try(function () { var backupItem = _.max(this.items, function (item) { var date = new Date(item.lastModified); return date; }); var lastModified = backupItem.lastModified ? this._formatDate(backupItem.lastModified) : StringResource.get('invalidDate'); var templateData = { existingLastBackup: !_.isEmpty(this.items), strings: { lastModified: lastModified, name: backupItem.name || '', typeNameToBackup: StringResource.get('typeNameToBackup'), typePassToEncry: StringResource.get('typePassToEncry'), confirmPass: StringResource.get('confirmPass'), success: StringResource.get('success'), lastBackup: StringResource.get('lastBackup'), backupBtn: StringResource.get('backupBtn'), backupNameLabel: StringResource.get('backupNameLabel'), newBackupLabel: StringResource.get('newBackupLabel') } }; this.$el.html(dot.template(template)(templateData)); BidiUtil.initElementForBidi(this.$el.find('#backupName')[0]); this._bindEvents(); }.bind(this)); }, _bindEvents: function _bindEvents() { this.$el.find('#backupBtn').on('primaryaction', this._backupAction.bind(this)); this.$el.find('[required]').on({ keyup: function keyup(e) { $(e.target.parentNode).find('.invalid').remove(); } }); }, _formatDate: function _formatDate(date) { return Formatter.format(this._getNewDate(date), { type: 'datetime', formatLength: 'short', locale: this.glassContext.services.userProfile.preferences.contentLocale, timezone: this.glassContext.services.userProfile.preferences.timeZoneID }); }, _backupAction: function _backupAction() { this.$el.find('.invalid').remove(); if (this.validate()) { this.glassContext.appController.showToast(StringResource.get('backupInprogress'), { 'type': 'info', 'timeOut': 3000 }); this.parentView.hide(); var backupData = { password: this.$el.find('#backupPwd').val(), type: 'exports', packageName: this.$el.find('#backupName').val().replace(/\\/g, '').replace(/\//g, '') }; return Api.generateExportImportDefinition('exports', backupData).then(function (response) { backupData = response; return Api.executeExportImportDefinition('exports', backupData.id); }.bind(this)).then(function () { var dfd = $.Deferred(); var int; var func = function () { Api.queryStatus('exports', backupData.id).then(function (data) { clearInterval(int); this.glassContext.appController.showToast(StringResource.get('backedupSucceeded', { 'name': data.packageName }), { 'type': 'success', 'timeOut': 3000 }); dfd.resolve(); }.bind(this)).fail(function (failDfd, jqXHR) { clearInterval(int); dfd.reject(failDfd, jqXHR); }.bind(this)); }.bind(this); int = setInterval(func, 10000); return dfd.promise(); }.bind(this)).fail(function (dfd, jqXHR) { this.logger.error(jqXHR); this.glassContext.appController.showErrorMessage(jqXHR.responseJSON.messages, StringResource.get('error')); this.glassContext.appController.showToast(StringResource.get('backedupFailed', { 'name': backupData.packageName }), { 'type': 'fail', 'timeOut': 3000 }); }.bind(this)); } }, _checkSpace: function _checkSpace(el) { var reg = /^\s*$/; $(el.parentNode).find('.invalid').remove(); var value = $(el).val(); return !(value && reg.test(value)); }, _checkPassword: function _checkPassword() { this.$el.find('.invalid').remove(); var passWords = this.$el.find(':password'); $(passWords[1].parentNode).find('.invalid').remove(); var returnValue = true; if (passWords[0].value !== passWords[1].value && passWords[0].value !== '' && passWords[1].value !== '') { $(passWords[1].parentNode).append($("