修改了updateManager中的小bug

This commit is contained in:
Xu Chang 2025-02-07 15:50:19 +08:00
parent 00213d8787
commit 6a959ce6ad
18 changed files with 29 additions and 69 deletions

View File

@ -116,7 +116,7 @@ class UpdateLogManager {
// 插入到最后一次update中
const { action, filter, data } = oper2;
let ids = action === 'create' ? [data.id] : (0, filter_1.getRelevantIds)(filter);
const key = JSON.stringify(ids.length > 0 ? { ids } : filter);
const key = JSON.stringify(ids.length > 0 ? ids : filter);
if (this.logs.length > 0) {
const update = this.logs[this.logs.length - 1];
(0, assert_1.assert)(update.lsn <= lsn);
@ -158,7 +158,8 @@ class UpdateLogManager {
}
}
undo(filter) {
const key = JSON.stringify(filter);
const ids = (0, filter_1.getRelevantIds)(filter);
const key = JSON.stringify(ids.length > 0 ? ids : filter);
this.logs.forEach((log) => {
const { operations } = log;
(0, lodash_1.unset)(operations, key);

View File

@ -1,4 +1,3 @@
import React from 'react';
import { Aspect, EntityDict } from 'oak-domain/lib/types';
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
import { BasicFeatures } from './features';
@ -6,4 +5,4 @@ import { Feature } from './types/Feature';
import { DataOption, OakComponentOption } from './types/Page';
import { SyncContext } from 'oak-domain/lib/store/SyncRowStore';
import { AsyncContext } from 'oak-domain/lib/store/AsyncRowStore';
export declare function createComponent<IsList extends boolean, ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>, FrontCxt extends SyncContext<ED>, AD extends Record<string, Aspect<ED, AsyncContext<ED>>>, FD extends Record<string, Feature>, FormedData extends Record<string, any>, TData extends Record<string, any> = {}, TProperty extends DataOption = {}, TMethod extends Record<string, Function> = {}>(option: OakComponentOption<IsList, ED, T, Cxt, FrontCxt, AD, FD, FormedData, TData, TProperty, TMethod>, features: BasicFeatures<ED> & FD): React.ForwardRefExoticComponent<React.RefAttributes<unknown>>;
export declare function createComponent<IsList extends boolean, ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>, FrontCxt extends SyncContext<ED>, AD extends Record<string, Aspect<ED, AsyncContext<ED>>>, FD extends Record<string, Feature>, FormedData extends Record<string, any>, TData extends Record<string, any> = {}, TProperty extends DataOption = {}, TMethod extends Record<string, Function> = {}>(option: OakComponentOption<IsList, ED, T, Cxt, FrontCxt, AD, FD, FormedData, TData, TProperty, TMethod>, features: BasicFeatures<ED> & FD): any;

21
lib/page.react.d.ts vendored
View File

@ -1,10 +1,9 @@
import React from 'react';
import { Aspect, CheckerType, EntityDict, OpRecord } from 'oak-domain/lib/types';
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
import { BasicFeatures } from './features';
import { NamedFilterItem, NamedSorterItem } from './types/NamedCondition';
import { Feature } from './types/Feature';
import { DataOption, ComponentData, ComponentProps, OakComponentOption, OakNavigateToParameters } from './types/Page';
import { DataOption, ComponentProps, OakComponentOption, OakNavigateToParameters } from './types/Page';
import { MessageProps } from './types/Message';
import { NotificationProps } from './types/Notification';
import { SyncContext } from 'oak-domain/lib/store/SyncRowStore';
@ -104,23 +103,5 @@ export declare function createComponent<IsList extends boolean, ED extends Entit
setPageSize(pageSize: number, path?: string | undefined): void;
setCurrentPage(currentPage: number, path?: string | undefined): void;
subDataEvents(events: string[], callback: (event: string, opRecords: OpRecord<ED>[]) => void): Promise<() => void>;
context: unknown;
setState<K extends keyof TData | keyof FormedData | keyof import("./types/Page").OakComponentData<ED, T>>(state: ComponentData<ED, T, FormedData, TData> | ((prevState: Readonly<ComponentData<ED, T, FormedData, TData>>, props: Readonly<ComponentProps<ED, T, TProperty>>) => ComponentData<ED, T, FormedData, TData> | Pick<ComponentData<ED, T, FormedData, TData>, K> | null) | Pick<ComponentData<ED, T, FormedData, TData>, K> | null, callback?: (() => void) | undefined): void;
forceUpdate(callback?: (() => void) | undefined): void;
readonly props: Readonly<ComponentProps<ED, T, TProperty>>;
state: Readonly<ComponentData<ED, T, FormedData, TData>>;
refs: {
[key: string]: React.ReactInstance;
};
shouldComponentUpdate?(nextProps: Readonly<ComponentProps<ED, T, TProperty>>, nextState: Readonly<ComponentData<ED, T, FormedData, TData>>, nextContext: any): boolean;
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
getSnapshotBeforeUpdate?(prevProps: Readonly<ComponentProps<ED, T, TProperty>>, prevState: Readonly<ComponentData<ED, T, FormedData, TData>>): any;
componentWillMount?(): void;
UNSAFE_componentWillMount?(): void;
componentWillReceiveProps?(nextProps: Readonly<ComponentProps<ED, T, TProperty>>, nextContext: any): void;
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<ComponentProps<ED, T, TProperty>>, nextContext: any): void;
componentWillUpdate?(nextProps: Readonly<ComponentProps<ED, T, TProperty>>, nextState: Readonly<ComponentData<ED, T, FormedData, TData>>, nextContext: any): void;
UNSAFE_componentWillUpdate?(nextProps: Readonly<ComponentProps<ED, T, TProperty>>, nextState: Readonly<ComponentData<ED, T, FormedData, TData>>, nextContext: any): void;
};
contextType?: React.Context<any> | undefined;
};

3
lib/page.web.d.ts vendored
View File

@ -1,4 +1,3 @@
import React from 'react';
import { Aspect, EntityDict } from 'oak-domain/lib/types';
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
import { BasicFeatures } from './features';
@ -6,4 +5,4 @@ import { Feature } from './types/Feature';
import { DataOption, OakComponentOption } from './types/Page';
import { SyncContext } from 'oak-domain/lib/store/SyncRowStore';
import { AsyncContext } from 'oak-domain/lib/store/AsyncRowStore';
export declare function createComponent<IsList extends boolean, ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>, FrontCxt extends SyncContext<ED>, AD extends Record<string, Aspect<ED, AsyncContext<ED>>>, FD extends Record<string, Feature>, FormedData extends Record<string, any>, TData extends Record<string, any> = {}, TProperty extends DataOption = {}, TMethod extends Record<string, Function> = {}>(option: OakComponentOption<IsList, ED, T, Cxt, FrontCxt, AD, FD, FormedData, TData, TProperty, TMethod>, features: BasicFeatures<ED> & FD): React.ForwardRefExoticComponent<React.RefAttributes<unknown>>;
export declare function createComponent<IsList extends boolean, ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>, FrontCxt extends SyncContext<ED>, AD extends Record<string, Aspect<ED, AsyncContext<ED>>>, FD extends Record<string, Feature>, FormedData extends Record<string, any>, TData extends Record<string, any> = {}, TProperty extends DataOption = {}, TMethod extends Record<string, Function> = {}>(option: OakComponentOption<IsList, ED, T, Cxt, FrontCxt, AD, FD, FormedData, TData, TProperty, TMethod>, features: BasicFeatures<ED> & FD): any;

View File

@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.createComponent = void 0;
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = tslib_1.__importDefault(require("react"));
const withRouter_1 = tslib_1.__importDefault(require("./platforms/web/router/withRouter"));
const PullToRefresh_1 = tslib_1.__importDefault(require("./platforms/web/PullToRefresh"));
const page_react_1 = require("./page.react");

View File

@ -4,6 +4,6 @@ type Props = {
features: Record<string, Feature>;
children: React.ReactNode;
};
declare const FeaturesProvider: (props: Props) => import("react/jsx-runtime").JSX.Element;
declare const useFeatures: <FD2 extends Record<string, Feature>>() => FD2;
declare const FeaturesProvider: (props: Props) => any;
declare const useFeatures: <FD2 extends Record<string, Feature>>() => any;
export { FeaturesProvider, useFeatures };

View File

@ -1,7 +1,6 @@
import React from 'react';
type OakComponentProperties = {
path?: string;
properties?: Record<string, any>;
};
declare const withRouter: (Component: React.ComponentType<any>, { path, properties }: OakComponentProperties) => React.ForwardRefExoticComponent<React.RefAttributes<unknown>>;
declare const withRouter: (Component: React.ComponentType<any>, { path, properties }: OakComponentProperties) => any;
export default withRouter;

View File

@ -1,4 +1,3 @@
import React from 'react';
import 'nprogress/nprogress.css';
declare const _default: React.MemoExoticComponent<() => null>;
declare const _default: any;
export default _default;

View File

@ -2,6 +2,7 @@
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = tslib_1.__importDefault(require("react"));
const rmc_pull_to_refresh_1 = tslib_1.__importDefault(require("rmc-pull-to-refresh"));
require("./PullToRefresh.css");
const OakPullToRefresh = (props) => {

View File

@ -4,5 +4,5 @@ declare const FeaturesProvider: React.FC<{
features: Record<string, Feature>;
children: React.ReactNode;
}>;
declare const useFeatures: <FD2 extends Record<string, Feature>>() => FD2;
declare const useFeatures: <FD2 extends Record<string, Feature>>() => any;
export { FeaturesProvider, useFeatures };

View File

@ -2,5 +2,5 @@ import React from 'react';
type AppContainerProps = {
children?: React.ReactNode;
};
declare const AppContainer: (props: AppContainerProps) => import("react/jsx-runtime").JSX.Element;
declare const AppContainer: (props: AppContainerProps) => any;
export default AppContainer;

View File

@ -5,5 +5,5 @@ interface ErrorProps<ED extends EntityDict & BaseEntityDict> {
error: any;
features: BasicFeatures<ED>;
}
declare function Error<ED extends EntityDict & BaseEntityDict>(props: ErrorProps<ED>): import("react/jsx-runtime").JSX.Element;
declare function Error<ED extends EntityDict & BaseEntityDict>(props: ErrorProps<ED>): any;
export default Error;

View File

@ -1,34 +1,12 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const react_1 = tslib_1.__importStar(require("react"));
const antd_1 = require("antd");
const Exception_1 = require("oak-domain/lib/types/Exception");
const ErrorPage_1 = require("../../../types/ErrorPage");
const ErrorPage = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../../../components/errorPage'))));
const ErrorPage = (0, react_1.lazy)(() => Promise.resolve().then(() => tslib_1.__importStar(require('../../../components/errorPage'))));
function Error(props) {
const { error, features } = props;
const { locales } = features;

View File

@ -5,5 +5,5 @@ declare const AppRouter: <ED extends BaseEntityDict>(props: {
routers: IRouter[];
appName: string;
features: BasicFeatures<ED>;
}) => import("react/jsx-runtime").JSX.Element;
}) => any;
export default AppRouter;

View File

@ -2,11 +2,14 @@
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
// @ts-nocheck
const react_1 = tslib_1.__importDefault(require("react"));
const client_1 = tslib_1.__importDefault(require("react-dom/client"));
const history_1 = require("history");
const react_router_dom_1 = require("react-router-dom");
const antd_1 = require("antd");
const cssinjs_1 = require("@ant-design/cssinjs");
const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
const responsive_1 = require("../responsive");
const features_1 = require("../features");
const AppError_1 = tslib_1.__importDefault(require("./AppError"));
@ -23,6 +26,8 @@ const en_US_1 = tslib_1.__importDefault(require("antd/locale/en_US"));
function initialize(features, appName, routers, locales, error, format) {
const history = (0, history_1.createBrowserHistory)();
features.navigator.setHistory(history);
const { language } = window.navigator;
dayjs_1.default.locale(locales?.dayJs || ['zh-CN', 'zh_CN'].includes(language) ? 'zh-cn' : 'en-us');
const Main = error ? ((0, jsx_runtime_1.jsx)(react_router_dom_1.unstable_HistoryRouter, { history: history, children: (0, jsx_runtime_1.jsx)(AppError_1.default, { error: error, features: features }) })) : ((0, jsx_runtime_1.jsx)(react_router_dom_1.unstable_HistoryRouter, { history: history, children: (0, jsx_runtime_1.jsx)(responsive_1.ResponsiveProvider, { children: (0, jsx_runtime_1.jsx)(features_1.FeaturesProvider, { features: features, children: (0, jsx_runtime_1.jsx)(antd_1.ConfigProvider, { locale: locales?.dayJs || ['zh-CN', 'zh_CN'].includes(language) ? zh_CN_1.default : en_US_1.default, theme: {
cssVar: {
prefix: 'adm', // 和antd-mobile共享

View File

@ -1,4 +1,3 @@
import React from 'react';
export type Width = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
export type Keys = Width[];
export type Values = {
@ -16,6 +15,4 @@ export type Breakpoints = {
export declare const keys: Keys;
export declare const values: Values;
export declare const defaultBreakpoints: Breakpoints;
export declare const ResponsiveContext: React.Context<{
breakpoints?: Breakpoints | undefined;
}>;
export declare const ResponsiveContext: any;

View File

@ -1,7 +1,6 @@
import React from 'react';
type OakComponentProperties = {
path?: string;
properties?: Record<string, any>;
};
declare const withRouter: (Component: React.ComponentType<any>, { path, properties }: OakComponentProperties) => React.ForwardRefExoticComponent<React.RefAttributes<unknown>>;
declare const withRouter: (Component: React.ComponentType<any>, { path, properties }: OakComponentProperties) => any;
export default withRouter;

View File

@ -154,7 +154,7 @@ class UpdateLogManager<ED extends EntityDict & BaseEntityDict, T extends keyof E
const { action, filter, data } = oper2;
let ids = action === 'create' ? [data.id] : getRelevantIds(filter);
const key = JSON.stringify(ids.length > 0 ? { ids } : filter);
const key = JSON.stringify(ids.length > 0 ? ids : filter);
if (this.logs.length > 0) {
const update = this.logs[this.logs.length - 1];
assert(update.lsn <= lsn);
@ -198,7 +198,8 @@ class UpdateLogManager<ED extends EntityDict & BaseEntityDict, T extends keyof E
}
undo(filter: ED[T]['Update']['filter']) {
const key = JSON.stringify(filter);
const ids = getRelevantIds(filter);
const key = JSON.stringify(ids.length > 0 ? ids : filter);
this.logs.forEach(
(log) => {
const { operations } = log;