mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
some cleanup
This commit is contained in:
@@ -15,7 +15,7 @@ import {IconName} from 'app/client/ui2018/IconList';
|
||||
import {icon} from 'app/client/ui2018/icons';
|
||||
import {cssLink} from 'app/client/ui2018/links';
|
||||
import {IOptionFull, menu, menuItem, menuText, select} from 'app/client/ui2018/menus';
|
||||
import { AccessLevel, ICustomWidget, isSatisfied, matchWidget } from 'app/common/CustomWidget';
|
||||
import {AccessLevel, ICustomWidget, isSatisfied, matchWidget} from 'app/common/CustomWidget';
|
||||
import {GristLoadConfig} from 'app/common/gristUrls';
|
||||
import {unwrap} from 'app/common/gutil';
|
||||
import {
|
||||
@@ -322,8 +322,7 @@ export class CustomSectionConfig extends Disposable {
|
||||
|
||||
// Test if we can offer widget list.
|
||||
const gristConfig: GristLoadConfig = (window as any).gristConfig || {};
|
||||
console.log("Ignoring gristConfig now", {gristConfig});
|
||||
this._canSelect = true; // gristConfig.enableWidgetRepository ?? true;
|
||||
this._canSelect = gristConfig.enableWidgetRepository ?? true;
|
||||
|
||||
// Array of available widgets - will be updated asynchronously.
|
||||
this._widgets = Observable.create(this, []);
|
||||
@@ -335,13 +334,12 @@ export class CustomSectionConfig extends Disposable {
|
||||
const widgetId = use(_section.customDef.widgetId);
|
||||
const pluginId = use(_section.customDef.pluginId);
|
||||
if (widgetId) {
|
||||
console.log("_selectedId", {widgetId, pluginId});
|
||||
return (pluginId||'') + ':' + widgetId;
|
||||
// selection id is "pluginId:widgetId"
|
||||
return (pluginId || '') + ':' + widgetId;
|
||||
}
|
||||
return CUSTOM_ID;
|
||||
});
|
||||
this._selectedId.onWrite(async value => {
|
||||
console.log("_selectedId onWrite", {value});
|
||||
if (value === CUSTOM_ID) {
|
||||
// Select Custom URL
|
||||
bundleChanges(() => {
|
||||
@@ -351,9 +349,8 @@ export class CustomSectionConfig extends Disposable {
|
||||
_section.customDef.url(null);
|
||||
// Clear widgetId
|
||||
_section.customDef.widgetId(null);
|
||||
// Clear pluginId
|
||||
_section.customDef.pluginId('');
|
||||
// Clear widget definition.
|
||||
// _section.customDef.widgetDef(null);
|
||||
// Reset access level to none.
|
||||
_section.customDef.access(AccessLevel.none);
|
||||
// Clear all saved options.
|
||||
@@ -369,13 +366,10 @@ export class CustomSectionConfig extends Disposable {
|
||||
} else {
|
||||
const [pluginId, widgetId] = value?.split(':') || [];
|
||||
// Select Widget
|
||||
console.log("Start match");
|
||||
const selectedWidget = matchWidget(this._widgets.get(), {
|
||||
widgetId,
|
||||
pluginId,
|
||||
});
|
||||
console.log("Started match");
|
||||
console.log("SETTING", {pluginId, widgetId, selectedWidget});
|
||||
if (!selectedWidget) {
|
||||
// should not happen
|
||||
throw new Error('Error accessing widget from the list');
|
||||
@@ -383,12 +377,6 @@ export class CustomSectionConfig extends Disposable {
|
||||
// If user selected the same one, do nothing.
|
||||
if (_section.customDef.widgetId.peek() === widgetId &&
|
||||
_section.customDef.pluginId.peek() === pluginId) {
|
||||
console.log("DO NOTHING", {
|
||||
widgetId,
|
||||
pluginId,
|
||||
owidgetId: _section.customDef.widgetId.peek(),
|
||||
opluginId: _section.customDef.pluginId.peek(),
|
||||
});
|
||||
return;
|
||||
}
|
||||
bundleChanges(() => {
|
||||
@@ -398,18 +386,11 @@ export class CustomSectionConfig extends Disposable {
|
||||
_section.customDef.access(AccessLevel.none);
|
||||
// When widget wants some access, set desired access level.
|
||||
this._desiredAccess.set(selectedWidget.accessLevel || AccessLevel.none);
|
||||
// Update widget definition.
|
||||
// _section.customDef.widgetDef(selectedWidget);
|
||||
// Update widgetId.
|
||||
_section.customDef.widgetId(selectedWidget.widgetId);
|
||||
_section.customDef.pluginId(selectedWidget.fromPlugin || '');
|
||||
console.log({
|
||||
setty: 1,
|
||||
widgetId: selectedWidget.widgetId,
|
||||
pluginId: selectedWidget.fromPlugin || '',
|
||||
selectedWidget
|
||||
});
|
||||
// Update widget URL.
|
||||
// Update pluginId.
|
||||
_section.customDef.pluginId(selectedWidget.source?.pluginId || '');
|
||||
// Update widget URL. Leave blank when widgetId is set.
|
||||
_section.customDef.url(null);
|
||||
// Clear options.
|
||||
_section.customDef.widgetOptions(null);
|
||||
@@ -420,7 +401,6 @@ export class CustomSectionConfig extends Disposable {
|
||||
_section.columnsToMap(null);
|
||||
});
|
||||
await _section.saveCustomDef();
|
||||
console.log("CustomSectionConfig saved");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -431,11 +411,12 @@ export class CustomSectionConfig extends Disposable {
|
||||
bundleChanges(() => {
|
||||
_section.customDef.renderAfterReady(false);
|
||||
if (newUrl) {
|
||||
console.log("ZAP widgetId and pluginId");
|
||||
// When a URL is set explicitly, make sure widgetId/pluginId
|
||||
// is empty.
|
||||
_section.customDef.widgetId(null);
|
||||
_section.customDef.pluginId('');
|
||||
}
|
||||
//_section.customDef.url(newUrl);
|
||||
_section.customDef.url(newUrl);
|
||||
});
|
||||
await _section.saveCustomDef();
|
||||
});
|
||||
@@ -460,11 +441,6 @@ export class CustomSectionConfig extends Disposable {
|
||||
const holder = new MultiHolder();
|
||||
|
||||
// Show prompt, when desired access level is different from actual one.
|
||||
function makeLabel(widget: ICustomWidget) {
|
||||
if (!widget.fromPlugin) { return widget.name; }
|
||||
const group = widget.fromPlugin.replace('builtIn/', '');
|
||||
return `${widget.name} (${group})`;
|
||||
}
|
||||
const prompt = Computed.create(holder, use =>
|
||||
use(this._desiredAccess)
|
||||
&& !isSatisfied(use(this._currentAccess), use(this._desiredAccess)!));
|
||||
@@ -476,7 +452,8 @@ export class CustomSectionConfig extends Disposable {
|
||||
const options = Computed.create(holder, use => [
|
||||
{label: 'Custom URL', value: 'custom'},
|
||||
...use(this._widgets).map(w => ({
|
||||
label: makeLabel(w), value: ((w.fromPlugin||'') + ':' + w.widgetId)
|
||||
label: w.source?.name ? `${w.name} (${w.source.name})` : w.name,
|
||||
value: (w.source?.pluginId || '') + ':' + w.widgetId,
|
||||
})),
|
||||
]);
|
||||
function buildPrompt(level: AccessLevel|null) {
|
||||
@@ -583,21 +560,6 @@ export class CustomSectionConfig extends Disposable {
|
||||
|
||||
protected async _getWidgets() {
|
||||
const widgets = await this._gristDoc.app.topAppModel.getWidgets();
|
||||
/*
|
||||
const widgets = filterWidgets(widgets1, {
|
||||
keepWidgetIdUnique: true,
|
||||
preferPlugin: false,
|
||||
});
|
||||
*/
|
||||
// const wigets = await api.getWidgets();
|
||||
// Request for rest of the widgets.
|
||||
if (this._canSelect) {
|
||||
// From the start we will provide single widget definition
|
||||
// that was chosen previously.
|
||||
// if (this._section.customDef.widgetDef.peek()) {
|
||||
// wigets.push(this._section.customDef.widgetDef.peek()!);
|
||||
// }
|
||||
}
|
||||
this._widgets.set(widgets);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user