mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
79 lines
2.5 KiB
TypeScript
79 lines
2.5 KiB
TypeScript
|
import {makeT} from 'app/client/lib/localization';
|
||
|
import {markdown} from 'app/client/lib/markdown';
|
||
|
import {Computed, Disposable, dom, makeTestId} from "grainjs";
|
||
|
import {commonUrls} from "app/common/gristUrls";
|
||
|
import {ToggleEnterpriseModel} from 'app/client/models/ToggleEnterpriseModel';
|
||
|
import {
|
||
|
cssOptInButton,
|
||
|
cssOptOutButton,
|
||
|
cssParagraph,
|
||
|
cssSection,
|
||
|
} from 'app/client/ui/AdminTogglesCss';
|
||
|
|
||
|
|
||
|
const t = makeT('ToggleEnterprsiePage');
|
||
|
const testId = makeTestId('test-toggle-enterprise-page-');
|
||
|
|
||
|
export class ToggleEnterpriseWidget extends Disposable {
|
||
|
private readonly _model: ToggleEnterpriseModel = new ToggleEnterpriseModel();
|
||
|
private readonly _isEnterprise = Computed.create(this, this._model.edition, (_use, edition) => {
|
||
|
return edition === 'enterprise';
|
||
|
}).onWrite(async (enabled) => {
|
||
|
await this._model.updateEnterpriseToggle(enabled ? 'enterprise' : 'core');
|
||
|
});
|
||
|
|
||
|
constructor() {
|
||
|
super();
|
||
|
this._model.fetchEnterpriseToggle().catch(reportError);
|
||
|
}
|
||
|
|
||
|
public getEnterpriseToggleObservable() {
|
||
|
return this._isEnterprise;
|
||
|
}
|
||
|
|
||
|
public buildEnterpriseSection() {
|
||
|
return cssSection(
|
||
|
dom.domComputed(this._isEnterprise, (enterpriseEnabled) => {
|
||
|
return [
|
||
|
enterpriseEnabled ?
|
||
|
cssParagraph(
|
||
|
markdown(t('Grist Enterprise is **enabled**.')),
|
||
|
testId('enterprise-opt-out-message'),
|
||
|
) : null,
|
||
|
cssParagraph(
|
||
|
markdown(t(`An activation key is used to run Grist Enterprise after a trial period
|
||
|
of 30 days has expired. Get an activation key by [signing up for Grist
|
||
|
Enterprise]({{signupLink}}). You do not need an activation key to run
|
||
|
Grist Core.
|
||
|
|
||
|
Learn more in our [Help Center]({{helpCenter}}).`, {
|
||
|
signupLink: commonUrls.plans,
|
||
|
helpCenter: commonUrls.helpEnterpriseOptIn
|
||
|
}))
|
||
|
),
|
||
|
this._buildEnterpriseSectionButtons(),
|
||
|
];
|
||
|
}),
|
||
|
testId('enterprise-opt-in-section'),
|
||
|
);
|
||
|
}
|
||
|
|
||
|
public _buildEnterpriseSectionButtons() {
|
||
|
return dom.domComputed(this._isEnterprise, (enterpriseEnabled) => {
|
||
|
if (enterpriseEnabled) {
|
||
|
return [
|
||
|
cssOptOutButton(t('Disable Grist Enterprise'),
|
||
|
dom.on('click', () => this._isEnterprise.set(false)),
|
||
|
),
|
||
|
];
|
||
|
} else {
|
||
|
return [
|
||
|
cssOptInButton(t('Enable Grist Enterprise'),
|
||
|
dom.on('click', () => this._isEnterprise.set(true)),
|
||
|
),
|
||
|
];
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|