some cleanup

This commit is contained in:
Paul Fitzpatrick
2023-10-06 21:38:37 -04:00
parent fd1734de69
commit 4f3d0d41a0
18 changed files with 305 additions and 438 deletions

View File

@@ -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);
}