///
declare var apiHost: string;
import * as ko from "knockout";
import { _ } from "../languagemanager";
import * as runtimeSettings from "../table/runtimesettings";
import * as timeService from "../timeservice";
import { PopupBase } from "../ui/popupbase";
export class SlowConnectionPopup extends PopupBase {
public allowRetry: KnockoutObservable;
public caption: KnockoutObservable;
public message: KnockoutObservable;
public index: KnockoutObservable;
public retryCaption: KnockoutObservable;
public onretry: () => void;
public handle: number = null;
constructor() {
super();
this.index = ko.observable(0);
this.message = ko.observable(_("connection.slow"));
this.retryCaption = ko.observable(_("connection.retry"));
this.onretry = null;
this.caption = ko.computed(() => {
return _("connection.caption" + this.index().toString());
});
this.allowRetry = ko.observable(false);
}
public shown(): void {
super.shown();
this.startUpdatingCaption();
this.reset();
}
public close(): void {
this.stopUpdatingCaption();
super.close();
}
public startUpdatingCaption() {
if (this.handle !== null) {
this.stopUpdatingCaption();
}
this.handle = timeService.setInterval(() => {
if (runtimeSettings.updateTimer) {
this.index((this.index() + 1) % 4);
}
}, 300);
}
public stopUpdatingCaption() {
timeService.clearInterval(this.handle);
this.handle = null;
}
public reset() {
this.index();
this.allowRetry(false);
this.message(_("connection.slow"));
// this.retryCaption(_("connection.retry"));
}
public reconnectFailed() {
this.allowRetry(true);
this.message(_("connection.reconnectfailed"));
this.retryCaption(_("connection.retry"));
}
public duplicatedConnection() {
this.allowRetry(true);
this.message(_("connection.duplicateconnectiondetected"));
this.retryCaption(_("connection.reestablishConnection"));
}
public noConnection() {
this.allowRetry(false);
this.message(_("connection.noconnection"));
}
public connectionPresent() {
this.allowRetry(true);
this.message(_("connection.connectionpresent"));
this.retryCaption(_("connection.reconnect"));
}
public retry() {
this.reset();
if (this.onretry !== null) {
this.onretry();
}
}
}