'use strict'; import { remote, ipcRenderer } from 'electron'; import BaseComponent = require('../../components/base'); import DomainUtil = require('../../utils/domain-util'); import Messages = require('./../../../../resources/messages'); const { dialog } = remote; class ServerInfoForm extends BaseComponent { // TODO: TypeScript - Here props should be object type props: any; $serverInfoForm: Element; $serverInfoAlias: Element; $serverIcon: Element; $deleteServerButton: Element; $openServerButton: Element; constructor(props: any) { super(); this.props = props; } template(): string { return `
${this.props.server.alias} open_in_new
${this.props.server.url}
Disconnect
`; } init(): void { this.initForm(); this.initActions(); } initForm(): void { this.$serverInfoForm = this.generateNodeFromTemplate(this.template()); this.$serverInfoAlias = this.$serverInfoForm.querySelectorAll('.server-info-alias')[0]; this.$serverIcon = this.$serverInfoForm.querySelectorAll('.server-info-icon')[0]; this.$deleteServerButton = this.$serverInfoForm.querySelectorAll('.server-delete-action')[0]; this.$openServerButton = this.$serverInfoForm.querySelectorAll('.open-tab-button')[0]; this.props.$root.append(this.$serverInfoForm); } initActions(): void { this.$deleteServerButton.addEventListener('click', () => { dialog.showMessageBox({ type: 'warning', buttons: ['YES', 'NO'], defaultId: 0, message: 'Are you sure you want to disconnect this organization?' }, response => { if (response === 0) { if (DomainUtil.removeDomain(this.props.index)) { ipcRenderer.send('reload-full-app'); } else { const { title, content } = Messages.orgRemovalError(DomainUtil.getDomain(this.props.index).url); dialog.showErrorBox(title, content); } } }); }); this.$openServerButton.addEventListener('click', () => { ipcRenderer.send('forward-message', 'switch-server-tab', this.props.index); }); this.$serverInfoAlias.addEventListener('click', () => { ipcRenderer.send('forward-message', 'switch-server-tab', this.props.index); }); this.$serverIcon.addEventListener('click', () => { ipcRenderer.send('forward-message', 'switch-server-tab', this.props.index); }); } } export = ServerInfoForm;