@kelpie/ui 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/resources/importJobs.d.ts +3 -1
- package/dist/api/resources/importJobs.d.ts.map +1 -1
- package/dist/api/resources/importJobs.js +1 -0
- package/dist/api/resources/importJobs.js.map +1 -1
- package/dist/api/resources/publicConfig.d.ts +8 -0
- package/dist/api/resources/publicConfig.d.ts.map +1 -0
- package/dist/api/resources/publicConfig.js +22 -0
- package/dist/api/resources/publicConfig.js.map +1 -0
- package/dist/app/KelpieApp.d.ts.map +1 -1
- package/dist/app/KelpieApp.js +2 -1
- package/dist/app/KelpieApp.js.map +1 -1
- package/dist/components/EnvironmentBanner.d.ts +14 -0
- package/dist/components/EnvironmentBanner.d.ts.map +1 -0
- package/dist/components/EnvironmentBanner.js +23 -0
- package/dist/components/EnvironmentBanner.js.map +1 -0
- package/dist/pages/admin/DataPage.d.ts.map +1 -1
- package/dist/pages/admin/DataPage.js +17 -5
- package/dist/pages/admin/DataPage.js.map +1 -1
- package/package.json +2 -2
- package/src/api/resources/importJobs.ts +4 -0
- package/src/api/resources/publicConfig.ts +33 -0
- package/src/app/KelpieApp.tsx +7 -0
- package/src/components/EnvironmentBanner.tsx +30 -0
- package/src/pages/admin/DataPage.tsx +83 -23
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import type { ImportColumnMap, ImportConflictMode, ImportJob, ImportObject, ImportSource } from '@kelpie/schemas';
|
|
1
|
+
import type { ImportColumnMap, ImportConflictMode, ImportJob, ImportObject, ImportSource, OnMissingCompany } from '@kelpie/schemas';
|
|
2
2
|
import type { MutationResult, RecordResult } from '../resource.ts';
|
|
3
3
|
export interface CreateImportJobInput {
|
|
4
4
|
readonly file: File;
|
|
5
5
|
readonly source: ImportSource;
|
|
6
6
|
readonly object: ImportObject;
|
|
7
7
|
readonly conflictMode: ImportConflictMode;
|
|
8
|
+
/** People import only: what to do with a row naming a company that is not here yet. */
|
|
9
|
+
readonly onMissingCompany: OnMissingCompany;
|
|
8
10
|
readonly matchKeyId: string;
|
|
9
11
|
/**
|
|
10
12
|
* Absent on the first upload, so the server derives one from the source preset
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importJobs.d.ts","sourceRoot":"","sources":["../../../src/api/resources/importJobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,YAAY,
|
|
1
|
+
{"version":3,"file":"importJobs.d.ts","sourceRoot":"","sources":["../../../src/api/resources/importJobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,gBAAgB,EACjB,MAAM,iBAAiB,CAAA;AAKxB,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAelE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAA;IACzC,uFAAuF;IACvF,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAA;CACrC;AAyBD,wBAAgB,kBAAkB,IAAI,cAAc,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAgBpF;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAwBpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAcjE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAoB5E;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,cAAc,CAC5C;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,EAC3C,WAAW,CACZ,CAqBA;AAED,4DAA4D;AAC5D,wBAAgB,OAAO,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAQnD"}
|
|
@@ -19,6 +19,7 @@ function jobForm(input) {
|
|
|
19
19
|
form.set('source', input.source);
|
|
20
20
|
form.set('object', input.object);
|
|
21
21
|
form.set('conflict_mode', input.conflictMode);
|
|
22
|
+
form.set('on_missing_company', input.onMissingCompany);
|
|
22
23
|
form.set('match_key', input.matchKeyId);
|
|
23
24
|
form.set('dry_run', 'true');
|
|
24
25
|
if (input.columnMap !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importJobs.js","sourceRoot":"","sources":["../../../src/api/resources/importJobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"importJobs.js","sourceRoot":"","sources":["../../../src/api/resources/importJobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PublicConfig } from '@kelpie/schemas';
|
|
2
|
+
export interface PublicConfigState {
|
|
3
|
+
readonly config: PublicConfig | undefined;
|
|
4
|
+
readonly isLoading: boolean;
|
|
5
|
+
readonly error: Error | null;
|
|
6
|
+
}
|
|
7
|
+
export declare function usePublicConfig(): PublicConfigState;
|
|
8
|
+
//# sourceMappingURL=publicConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publicConfig.d.ts","sourceRoot":"","sources":["../../../src/api/resources/publicConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAgBnD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAC7B;AAED,wBAAgB,eAAe,IAAI,iBAAiB,CASnD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { publicConfigSchema } from '@kelpie/schemas';
|
|
2
|
+
import { useQuery } from '@tanstack/react-query';
|
|
3
|
+
import { useApiClient } from '../context.js';
|
|
4
|
+
import { toError } from '../errors.js';
|
|
5
|
+
/**
|
|
6
|
+
* The deployment metadata `GET /v1/public/config` reports.
|
|
7
|
+
*
|
|
8
|
+
* Read once, cached forever: neither `runtimeMode` nor `siteName` changes
|
|
9
|
+
* while the app is open. The endpoint is public, so this hook works before a
|
|
10
|
+
* session exists (the sign-in page reads it too).
|
|
11
|
+
*/
|
|
12
|
+
const PUBLIC_CONFIG_KEY = ['public-config'];
|
|
13
|
+
export function usePublicConfig() {
|
|
14
|
+
const client = useApiClient();
|
|
15
|
+
const result = useQuery({
|
|
16
|
+
queryKey: PUBLIC_CONFIG_KEY,
|
|
17
|
+
queryFn: () => client.get('/public/config', publicConfigSchema.parse),
|
|
18
|
+
staleTime: Infinity,
|
|
19
|
+
});
|
|
20
|
+
return { config: result.data, isLoading: result.isPending, error: toError(result.error) };
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=publicConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publicConfig.js","sourceRoot":"","sources":["../../../src/api/resources/publicConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC;;;;;;GAMG;AAEH,MAAM,iBAAiB,GAAG,CAAC,eAAe,CAAU,CAAA;AAQpD,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC;QACtB,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,CAAC;QACrE,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAA;IAEF,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AAC3F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KelpieApp.d.ts","sourceRoot":"","sources":["../../src/app/KelpieApp.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"KelpieApp.d.ts","sourceRoot":"","sources":["../../src/app/KelpieApp.tsx"],"names":[],"mappings":"AAwDA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAG3D;;;;;;;;;GASG;AAEH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAA;IACjC,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgBpF"}
|
package/dist/app/KelpieApp.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { BrowserRouter, Navigate, Route, Routes } from 'react-router';
|
|
3
3
|
import { ApiProvider } from '../api/ApiProvider.js';
|
|
4
|
+
import { EnvironmentBanner } from '../components/EnvironmentBanner.js';
|
|
4
5
|
import { Shell } from '../components/Shell.js';
|
|
5
6
|
import { CompaniesPage } from '../pages/CompaniesPage.js';
|
|
6
7
|
import { CompanyDetail } from '../pages/CompanyDetail.js';
|
|
@@ -54,7 +55,7 @@ import { UiExtensionProvider } from '../registry/UiExtensionProvider.js';
|
|
|
54
55
|
import { useModuleRoutes } from '../registry/context.js';
|
|
55
56
|
import { SessionGate } from './SessionGate.js';
|
|
56
57
|
export function KelpieApp({ extensions, baseUrl }) {
|
|
57
|
-
return (_jsx(ApiProvider, { baseUrl: baseUrl, children: _jsx(UiExtensionProvider, { extensions: extensions, children:
|
|
58
|
+
return (_jsx(ApiProvider, { baseUrl: baseUrl, children: _jsx(UiExtensionProvider, { extensions: extensions, children: _jsxs(BrowserRouter, { children: [_jsx(EnvironmentBanner, {}), _jsx(AppRoutes, {})] }) }) }));
|
|
58
59
|
}
|
|
59
60
|
/**
|
|
60
61
|
* A module route under `account/` renders inside `AccountLayout`, everything
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KelpieApp.js","sourceRoot":"","sources":["../../src/app/KelpieApp.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"KelpieApp.js","sourceRoot":"","sources":["../../src/app/KelpieApp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A thin strip above the app that names the site.
|
|
3
|
+
*
|
|
4
|
+
* Renders nothing on production, whether or not a site name was set: the
|
|
5
|
+
* banner exists to tell dev, demo, and any other non-production install
|
|
6
|
+
* apart. Renders nothing while the metadata is loading or on error either,
|
|
7
|
+
* so a slow config request never pushes the app down half a second after
|
|
8
|
+
* boot.
|
|
9
|
+
*
|
|
10
|
+
* Mounted at the top of `KelpieApp`, above the router, so it shows on the
|
|
11
|
+
* sign-in and onboarding pages as well as the main app.
|
|
12
|
+
*/
|
|
13
|
+
export declare function EnvironmentBanner(): React.JSX.Element | null;
|
|
14
|
+
//# sourceMappingURL=EnvironmentBanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnvironmentBanner.d.ts","sourceRoot":"","sources":["../../src/components/EnvironmentBanner.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,wBAAgB,iBAAiB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAc5D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { usePublicConfig } from '../api/resources/publicConfig.js';
|
|
3
|
+
/**
|
|
4
|
+
* A thin strip above the app that names the site.
|
|
5
|
+
*
|
|
6
|
+
* Renders nothing on production, whether or not a site name was set: the
|
|
7
|
+
* banner exists to tell dev, demo, and any other non-production install
|
|
8
|
+
* apart. Renders nothing while the metadata is loading or on error either,
|
|
9
|
+
* so a slow config request never pushes the app down half a second after
|
|
10
|
+
* boot.
|
|
11
|
+
*
|
|
12
|
+
* Mounted at the top of `KelpieApp`, above the router, so it shows on the
|
|
13
|
+
* sign-in and onboarding pages as well as the main app.
|
|
14
|
+
*/
|
|
15
|
+
export function EnvironmentBanner() {
|
|
16
|
+
const { config } = usePublicConfig();
|
|
17
|
+
if (config === undefined || config.runtimeMode === 'production') {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
const label = config.siteName ?? config.runtimeMode;
|
|
21
|
+
return (_jsx("div", { className: "flex h-5 shrink-0 items-center justify-center bg-accent px-2 text-[11px] font-medium tracking-wide text-accent-fg uppercase", children: label }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=EnvironmentBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnvironmentBanner.js","sourceRoot":"","sources":["../../src/components/EnvironmentBanner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAElE;;;;;;;;;;;GAWG;AAEH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAA;IAEpC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;QAChE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAA;IAEnD,OAAO,CACL,cAAK,SAAS,EAAC,6HAA6H,YACzI,KAAK,GACF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataPage.d.ts","sourceRoot":"","sources":["../../../src/pages/admin/DataPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DataPage.d.ts","sourceRoot":"","sources":["../../../src/pages/admin/DataPage.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAA0B,SAAS,EAAE,MAAM,OAAO,CAAA;AAkC9D,wBAAgB,QAAQ,IAAI,SAAS,CA8VpC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { CONFLICT_MODE_LABELS, IMPORT_OBJECTS, IMPORT_SOURCES, MATCH_KEYS, OBJECT_COLUMNS, OBJECT_LABELS, SOURCE_LABELS, defaultMatchKeyId, findMatchKey, isImportJobSettled, requiredColumns, } from '@kelpie/schemas';
|
|
2
|
+
import { CONFLICT_MODE_LABELS, IMPORT_OBJECTS, IMPORT_SOURCES, MATCH_KEYS, OBJECT_COLUMNS, OBJECT_LABELS, ON_MISSING_COMPANY_LABELS, SOURCE_LABELS, defaultMatchKeyId, findMatchKey, isImportJobSettled, requiredColumns, } from '@kelpie/schemas';
|
|
3
3
|
import { useState } from 'react';
|
|
4
4
|
import { saveCsv, useCommitImportJob, useCreateImportJob, useDeleteImportJob, useExportCsv, useImportJob, } from '../../api/resources/importJobs.js';
|
|
5
5
|
import { PageHeader } from '../../components/PageHeader.js';
|
|
@@ -17,6 +17,7 @@ export function DataPage() {
|
|
|
17
17
|
const [file, setFile] = useState(null);
|
|
18
18
|
const [columnMap, setColumnMap] = useState({});
|
|
19
19
|
const [conflictMode, setConflictMode] = useState('skip');
|
|
20
|
+
const [onMissingCompany, setOnMissingCompany] = useState('skip');
|
|
20
21
|
const [matchKeyId, setMatchKeyId] = useState(() => defaultMatchKeyId('companies'));
|
|
21
22
|
const [jobId, setJobId] = useState(undefined);
|
|
22
23
|
const [problem, setProblem] = useState(null);
|
|
@@ -63,6 +64,7 @@ export function DataPage() {
|
|
|
63
64
|
setFile(null);
|
|
64
65
|
setColumnMap({});
|
|
65
66
|
setConflictMode('skip');
|
|
67
|
+
setOnMissingCompany('skip');
|
|
66
68
|
setMatchKeyId(defaultMatchKeyId(object));
|
|
67
69
|
setJobId(undefined);
|
|
68
70
|
setProblem(null);
|
|
@@ -79,6 +81,7 @@ export function DataPage() {
|
|
|
79
81
|
source,
|
|
80
82
|
object,
|
|
81
83
|
conflictMode,
|
|
84
|
+
onMissingCompany,
|
|
82
85
|
matchKeyId,
|
|
83
86
|
...(map === undefined ? {} : { columnMap: map }),
|
|
84
87
|
});
|
|
@@ -139,7 +142,7 @@ export function DataPage() {
|
|
|
139
142
|
const next = event.target.value;
|
|
140
143
|
setObject(next);
|
|
141
144
|
setMatchKeyId(defaultMatchKeyId(next));
|
|
142
|
-
}, className: "w-full max-w-md rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent", children: IMPORT_OBJECTS.map((item) => (_jsx("option", { value: item, children: OBJECT_LABELS[item] }, item))) }) }), _jsxs("div", { className: "rounded-md border border-border px-4 py-3", children: [_jsx("div", { className: "text-[13px] font-medium text-ink", children: "Need a blank file?" }), _jsxs("p", { className: "mt-0.5 text-[12px] text-ink-muted", children: ["Download a Kelpie CSV template for ", OBJECT_LABELS[object].toLowerCase(), ", fill it in, then continue."] }), _jsx("button", { type: "button", onClick: () => runStep(onDownload(object, true)), className: "mt-3 rounded-md border border-border bg-surface px-3.5 py-2 text-[12px] font-semibold text-ink transition hover:border-accent", children: "Download template" })] }), _jsx("p", { className: "text-[12px] text-ink-muted", children: "Import order for linked data: Companies \u2192 People \u2192 Positions \u2192 Deals." }), _jsx("button", { type: "submit", className: "rounded-md bg-accent px-3.5 py-2 text-[12px] font-semibold text-accent-fg transition hover:bg-accent-hover", children: "Continue" })] })) : null, step === 'upload' ? (_jsxs("div", { className: "space-y-4", children: [_jsxs("p", { className: "text-[13px] text-ink-muted", children: [SOURCE_LABELS[source], " \u2192 ", OBJECT_LABELS[object]] }), _jsxs("label", { className: "flex cursor-pointer flex-col items-center justify-center rounded-lg border border-dashed border-border bg-surface-raised px-6 py-10 transition hover:border-accent", children: [_jsx("span", { className: "text-[13px] font-medium text-ink", children: createJob.isPending ? 'Reading the file…' : 'Drop a CSV here or click to browse' }), _jsx("span", { className: "mt-1 text-[12px] text-ink-muted", children: "UTF-8 CSV \u00B7 max 10 MB \u00B7 max 10,000 rows" }), _jsx("input", { type: "file", accept: ".csv,text/csv", className: "sr-only", disabled: createJob.isPending, onChange: (event) => runStep(onFileChange(event)) })] }), _jsx("button", { type: "button", onClick: () => setStep('source'), className: "rounded-md px-3 py-2 text-[12px] font-medium text-ink-muted hover:text-ink", children: "Back" })] })) : null, step === 'map' && job !== undefined ? (_jsx(MappingForm, { job: job, object: object, columnMap: columnMap, conflictMode: conflictMode, matchKeyId: matchKeyId, isPending: createJob.isPending, onColumnMapChange: setColumnMap, onConflictModeChange: setConflictMode, onMatchKeyChange: setMatchKeyId, onSubmit: (event) => runStep(onRerun(event)), onBack: () => {
|
|
145
|
+
}, className: "w-full max-w-md rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent", children: IMPORT_OBJECTS.map((item) => (_jsx("option", { value: item, children: OBJECT_LABELS[item] }, item))) }) }), _jsxs("div", { className: "rounded-md border border-border px-4 py-3", children: [_jsx("div", { className: "text-[13px] font-medium text-ink", children: "Need a blank file?" }), _jsxs("p", { className: "mt-0.5 text-[12px] text-ink-muted", children: ["Download a Kelpie CSV template for ", OBJECT_LABELS[object].toLowerCase(), ", fill it in, then continue."] }), _jsx("button", { type: "button", onClick: () => runStep(onDownload(object, true)), className: "mt-3 rounded-md border border-border bg-surface px-3.5 py-2 text-[12px] font-semibold text-ink transition hover:border-accent", children: "Download template" })] }), _jsx("p", { className: "text-[12px] text-ink-muted", children: "Import order for linked data: Companies \u2192 People \u2192 Positions \u2192 Deals." }), _jsx("button", { type: "submit", className: "rounded-md bg-accent px-3.5 py-2 text-[12px] font-semibold text-accent-fg transition hover:bg-accent-hover", children: "Continue" })] })) : null, step === 'upload' ? (_jsxs("div", { className: "space-y-4", children: [_jsxs("p", { className: "text-[13px] text-ink-muted", children: [SOURCE_LABELS[source], " \u2192 ", OBJECT_LABELS[object]] }), _jsxs("label", { className: "flex cursor-pointer flex-col items-center justify-center rounded-lg border border-dashed border-border bg-surface-raised px-6 py-10 transition hover:border-accent", children: [_jsx("span", { className: "text-[13px] font-medium text-ink", children: createJob.isPending ? 'Reading the file…' : 'Drop a CSV here or click to browse' }), _jsx("span", { className: "mt-1 text-[12px] text-ink-muted", children: "UTF-8 CSV \u00B7 max 10 MB \u00B7 max 10,000 rows" }), _jsx("input", { type: "file", accept: ".csv,text/csv", className: "sr-only", disabled: createJob.isPending, onChange: (event) => runStep(onFileChange(event)) })] }), _jsx("button", { type: "button", onClick: () => setStep('source'), className: "rounded-md px-3 py-2 text-[12px] font-medium text-ink-muted hover:text-ink", children: "Back" })] })) : null, step === 'map' && job !== undefined ? (_jsx(MappingForm, { job: job, object: object, columnMap: columnMap, conflictMode: conflictMode, onMissingCompany: onMissingCompany, matchKeyId: matchKeyId, isPending: createJob.isPending, onColumnMapChange: setColumnMap, onConflictModeChange: setConflictMode, onMissingCompanyChange: setOnMissingCompany, onMatchKeyChange: setMatchKeyId, onSubmit: (event) => runStep(onRerun(event)), onBack: () => {
|
|
143
146
|
discardJob(jobId);
|
|
144
147
|
setFile(null);
|
|
145
148
|
setJobId(undefined);
|
|
@@ -149,9 +152,14 @@ export function DataPage() {
|
|
|
149
152
|
function MappingForm(props) {
|
|
150
153
|
const matchKey = findMatchKey(props.object, props.matchKeyId);
|
|
151
154
|
const keyColumns = new Set(matchKey?.columns ?? []);
|
|
152
|
-
|
|
155
|
+
// People rows can carry a company and title that drive a Position, so only a
|
|
156
|
+
// People import has a company to be missing.
|
|
157
|
+
const showMissingCompany = props.object === 'people';
|
|
158
|
+
return (_jsxs("form", { className: "space-y-4", onSubmit: props.onSubmit, children: [_jsxs("p", { className: "text-[13px] text-ink-muted", children: ["Mapping ", _jsx("span", { className: "font-medium text-ink", children: props.job.fileName ?? 'the file' }), " (", props.job.counts.total, " rows). Match Kelpie fields to CSV columns."] }), _jsxs("div", { className: "grid gap-3 sm:grid-cols-2", children: [_jsx(Field, { label: "On match", children: _jsx("select", { value: props.conflictMode, onChange: (event) => props.onConflictModeChange(event.target.value), className: "w-full rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent", children: Object.entries(CONFLICT_MODE_LABELS).map(([mode, label]) => (_jsx("option", { value: mode, children: label }, mode))) }) }), _jsx(Field, { label: "Key column", children: _jsx("select", { value: props.matchKeyId, onChange: (event) => props.onMatchKeyChange(event.target.value), className: "w-full rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent", children: MATCH_KEYS[props.object].map((key) => (_jsx("option", { value: key.id, children: key.label }, key.id))) }) }), showMissingCompany ? (_jsx(Field, { label: "Missing company", children: _jsx("select", { value: props.onMissingCompany, onChange: (event) => props.onMissingCompanyChange(event.target.value), className: "w-full rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent", children: Object.entries(ON_MISSING_COMPANY_LABELS).map(([mode, label]) => (_jsx("option", { value: mode, children: label }, mode))) }) })) : null] }), _jsxs("p", { className: "text-[12px] text-ink-muted", children: [props.conflictMode === 'update'
|
|
153
159
|
? 'Rows matching an existing record on the key column overwrite the fields you map below. A blank cell changes nothing.'
|
|
154
|
-
: 'Rows matching an existing record on the key column are skipped.', ' ', "Key columns must be mapped."] }),
|
|
160
|
+
: 'Rows matching an existing record on the key column are skipped.', ' ', "Key columns must be mapped."] }), showMissingCompany ? (_jsxs("p", { className: "text-[12px] text-ink-muted", children: ["Map ", _jsx("span", { className: "font-mono text-[11px]", children: "company_domain" }), " or", ' ', _jsx("span", { className: "font-mono text-[11px]", children: "company_name" }), " and", ' ', _jsx("span", { className: "font-mono text-[11px]", children: "title" }), " to link a position for each person.", ' ', props.onMissingCompany === 'create'
|
|
161
|
+
? 'A company that is not here yet is created from the row.'
|
|
162
|
+
: 'A company that is not here yet is left unlinked and reported as a warning.'] })) : null, _jsx("div", { className: "overflow-hidden rounded-md border border-border", children: _jsxs("table", { className: "w-full text-left text-[13px]", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-surface text-[11px] font-semibold tracking-wide text-ink-muted uppercase", children: [_jsx("th", { className: "px-4 py-2.5", children: "Kelpie field" }), _jsx("th", { className: "px-4 py-2.5", children: "CSV column" })] }) }), _jsx("tbody", { children: OBJECT_COLUMNS[props.object].map((column) => {
|
|
155
163
|
const isKey = keyColumns.has(column.key);
|
|
156
164
|
return (_jsxs("tr", { className: "border-b border-border last:border-0", children: [_jsxs("td", { className: "px-4 py-2.5", children: [_jsx("span", { className: "font-medium", children: column.label }), _jsx("span", { className: "ml-2 font-mono text-[11px] text-ink-faint", children: column.key }), column.required || isKey ? (_jsx("span", { className: "ml-2 text-[11px] text-danger", children: isKey ? 'key' : 'required' })) : null] }), _jsx("td", { className: "px-4 py-2.5", children: _jsxs("select", { value: props.columnMap[column.key] ?? '', onChange: (event) => props.onColumnMapChange({
|
|
157
165
|
...props.columnMap,
|
|
@@ -163,7 +171,11 @@ function ResultPanel({ job, object, isCommitting, onCommit, onBack }) {
|
|
|
163
171
|
const working = !isImportJobSettled(job.status);
|
|
164
172
|
const done = job.status === 'completed';
|
|
165
173
|
const nothingToDo = job.counts.create === 0 && job.counts.update === 0;
|
|
166
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("p", { className: "text-[13px] text-ink-muted", children: ["Job ", _jsx("span", { className: "font-mono text-[12px] text-ink", children: job.id }), " \u00B7 status ", job.status, working ? ' · working…' : null] }), _jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-5", children: [_jsx(Stat, { label: "Total", value: job.counts.total }), _jsx(Stat, { label: "Create", value: job.counts.create }), _jsx(Stat, { label: "Update", value: job.counts.update }), _jsx(Stat, { label: "Skip", value: job.counts.skip }), _jsx(Stat, { label: "Error", value: job.counts.error, danger: true })] }), _jsxs("p", { className: "text-[12px] text-ink-muted", children: ["On match: ", CONFLICT_MODE_LABELS[job.conflictMode].toLowerCase(), ". Key column:", ' ', _jsx("span", { className: "font-mono text-[11px] text-ink", children: findMatchKey(object, job.matchKey)?.label ?? job.matchKey })] }), job.preview.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-[13px] font-semibold text-ink", children: "Mapping preview" }), _jsxs("p", { className: "mt-0.5 text-[12px] text-ink-muted", children: ["The first ", job.preview.length, " row", job.preview.length === 1 ? '' : 's', " as Kelpie read them. Go back to mapping if a column looks wrong."] })] }), _jsx(PreviewTable, { object: object, rows: job.preview })] })) : null, job.errors.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsx(
|
|
174
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("p", { className: "text-[13px] text-ink-muted", children: ["Job ", _jsx("span", { className: "font-mono text-[12px] text-ink", children: job.id }), " \u00B7 status ", job.status, working ? ' · working…' : null] }), _jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-5", children: [_jsx(Stat, { label: "Total", value: job.counts.total }), _jsx(Stat, { label: "Create", value: job.counts.create }), _jsx(Stat, { label: "Update", value: job.counts.update }), _jsx(Stat, { label: "Skip", value: job.counts.skip }), _jsx(Stat, { label: "Error", value: job.counts.error, danger: true })] }), _jsxs("p", { className: "text-[12px] text-ink-muted", children: ["On match: ", CONFLICT_MODE_LABELS[job.conflictMode].toLowerCase(), ". Key column:", ' ', _jsx("span", { className: "font-mono text-[11px] text-ink", children: findMatchKey(object, job.matchKey)?.label ?? job.matchKey })] }), job.preview.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-[13px] font-semibold text-ink", children: "Mapping preview" }), _jsxs("p", { className: "mt-0.5 text-[12px] text-ink-muted", children: ["The first ", job.preview.length, " row", job.preview.length === 1 ? '' : 's', " as Kelpie read them. Go back to mapping if a column looks wrong."] })] }), _jsx(PreviewTable, { object: object, rows: job.preview })] })) : null, job.errors.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsx(IssueTable, { rows: job.errors }), job.counts.error > job.errors.length ? (_jsxs("p", { className: "text-[12px] text-ink-muted", children: ["Showing ", job.errors.length, " of ", job.counts.error, " failing rows."] })) : null] })) : (_jsx("p", { className: "text-[13px] text-ink-muted", children: "No row errors." })), job.warnings.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-[13px] font-semibold text-ink", children: "Warnings" }), _jsx("p", { className: "mt-0.5 text-[12px] text-ink-muted", children: "These rows were imported. Each note says what was left out, such as a person whose company was not here to link a position to." })] }), _jsx(IssueTable, { rows: job.warnings })] })) : null, _jsxs("div", { className: "flex flex-wrap gap-3", children: [_jsx("button", { type: "button", onClick: onCommit, disabled: done || working || isCommitting || nothingToDo, className: "rounded-md bg-accent px-3.5 py-2 text-[12px] font-semibold text-accent-fg transition hover:bg-accent-hover disabled:cursor-not-allowed disabled:opacity-50", children: done ? 'Committed' : isCommitting || working ? 'Working…' : 'Commit import' }), _jsx("button", { type: "button", onClick: onBack, className: "rounded-md px-3 py-2 text-[12px] font-medium text-ink-muted hover:text-ink", children: "Back to mapping" })] })] }));
|
|
175
|
+
}
|
|
176
|
+
/** The row / field / message table shared by the error and warning lists. */
|
|
177
|
+
function IssueTable({ rows }) {
|
|
178
|
+
return (_jsx("div", { className: "overflow-hidden rounded-md border border-border", children: _jsxs("table", { className: "w-full text-left text-[13px]", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-surface text-[11px] font-semibold tracking-wide text-ink-muted uppercase", children: [_jsx("th", { className: "px-4 py-2.5", children: "Row" }), _jsx("th", { className: "px-4 py-2.5", children: "Field" }), _jsx("th", { className: "px-4 py-2.5", children: "Message" })] }) }), _jsx("tbody", { children: rows.map((issue, index) => (_jsxs("tr", { className: "border-b border-border last:border-0", children: [_jsx("td", { className: "px-4 py-2.5 font-mono text-[12px]", children: issue.row }), _jsx("td", { className: "px-4 py-2.5 font-mono text-[12px]", children: issue.field }), _jsx("td", { className: "px-4 py-2.5 text-ink-muted", children: issue.message })] }, `${String(issue.row)}-${issue.field}-${String(index)}`))) })] }) }));
|
|
167
179
|
}
|
|
168
180
|
function PreviewTable({ object, rows, }) {
|
|
169
181
|
const keys = OBJECT_COLUMNS[object]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataPage.js","sourceRoot":"","sources":["../../../src/pages/admin/DataPage.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataPage.js","sourceRoot":"","sources":["../../../src/pages/admin/DataPage.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kelpie/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "React UI for Kelpie: components, pages, API client, and the extension registry an assembly composes modules through.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"kelpie",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@dnd-kit/core": "^6.3.1",
|
|
49
49
|
"@dnd-kit/sortable": "^10.0.0",
|
|
50
50
|
"@dnd-kit/utilities": "^3.2.2",
|
|
51
|
-
"@kelpie/schemas": "^0.
|
|
51
|
+
"@kelpie/schemas": "^0.7.0",
|
|
52
52
|
"@tanstack/react-query": "^5.101.4",
|
|
53
53
|
"react-markdown": "^10.1.0",
|
|
54
54
|
"react-router": "^8.3.0",
|
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
ImportJob,
|
|
6
6
|
ImportObject,
|
|
7
7
|
ImportSource,
|
|
8
|
+
OnMissingCompany,
|
|
8
9
|
} from '@kelpie/schemas'
|
|
9
10
|
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
|
|
10
11
|
|
|
@@ -30,6 +31,8 @@ export interface CreateImportJobInput {
|
|
|
30
31
|
readonly source: ImportSource
|
|
31
32
|
readonly object: ImportObject
|
|
32
33
|
readonly conflictMode: ImportConflictMode
|
|
34
|
+
/** People import only: what to do with a row naming a company that is not here yet. */
|
|
35
|
+
readonly onMissingCompany: OnMissingCompany
|
|
33
36
|
readonly matchKeyId: string
|
|
34
37
|
/**
|
|
35
38
|
* Absent on the first upload, so the server derives one from the source preset
|
|
@@ -46,6 +49,7 @@ function jobForm(input: CreateImportJobInput): FormData {
|
|
|
46
49
|
form.set('source', input.source)
|
|
47
50
|
form.set('object', input.object)
|
|
48
51
|
form.set('conflict_mode', input.conflictMode)
|
|
52
|
+
form.set('on_missing_company', input.onMissingCompany)
|
|
49
53
|
form.set('match_key', input.matchKeyId)
|
|
50
54
|
form.set('dry_run', 'true')
|
|
51
55
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { publicConfigSchema } from '@kelpie/schemas'
|
|
2
|
+
import type { PublicConfig } from '@kelpie/schemas'
|
|
3
|
+
import { useQuery } from '@tanstack/react-query'
|
|
4
|
+
|
|
5
|
+
import { useApiClient } from '../context.ts'
|
|
6
|
+
import { toError } from '../errors.ts'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The deployment metadata `GET /v1/public/config` reports.
|
|
10
|
+
*
|
|
11
|
+
* Read once, cached forever: neither `runtimeMode` nor `siteName` changes
|
|
12
|
+
* while the app is open. The endpoint is public, so this hook works before a
|
|
13
|
+
* session exists (the sign-in page reads it too).
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
const PUBLIC_CONFIG_KEY = ['public-config'] as const
|
|
17
|
+
|
|
18
|
+
export interface PublicConfigState {
|
|
19
|
+
readonly config: PublicConfig | undefined
|
|
20
|
+
readonly isLoading: boolean
|
|
21
|
+
readonly error: Error | null
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function usePublicConfig(): PublicConfigState {
|
|
25
|
+
const client = useApiClient()
|
|
26
|
+
const result = useQuery({
|
|
27
|
+
queryKey: PUBLIC_CONFIG_KEY,
|
|
28
|
+
queryFn: () => client.get('/public/config', publicConfigSchema.parse),
|
|
29
|
+
staleTime: Infinity,
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
return { config: result.data, isLoading: result.isPending, error: toError(result.error) }
|
|
33
|
+
}
|
package/src/app/KelpieApp.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BrowserRouter, Navigate, Route, Routes } from 'react-router'
|
|
2
2
|
|
|
3
3
|
import { ApiProvider } from '../api/ApiProvider.tsx'
|
|
4
|
+
import { EnvironmentBanner } from '../components/EnvironmentBanner.tsx'
|
|
4
5
|
import { Shell } from '../components/Shell.tsx'
|
|
5
6
|
import { CompaniesPage } from '../pages/CompaniesPage.tsx'
|
|
6
7
|
import { CompanyDetail } from '../pages/CompanyDetail.tsx'
|
|
@@ -78,6 +79,12 @@ export function KelpieApp({ extensions, baseUrl }: KelpieAppProps): React.JSX.El
|
|
|
78
79
|
<ApiProvider baseUrl={baseUrl}>
|
|
79
80
|
<UiExtensionProvider extensions={extensions}>
|
|
80
81
|
<BrowserRouter>
|
|
82
|
+
{/* Above the router so the strip renders on the sign-in page as
|
|
83
|
+
well as the main app. Nothing forces a height here: on
|
|
84
|
+
production the banner returns null, and the Shell (or the sign-
|
|
85
|
+
in layout) fills the viewport as it did before. On non-
|
|
86
|
+
production the 20px strip stacks above them. */}
|
|
87
|
+
<EnvironmentBanner />
|
|
81
88
|
<AppRoutes />
|
|
82
89
|
</BrowserRouter>
|
|
83
90
|
</UiExtensionProvider>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { usePublicConfig } from '../api/resources/publicConfig.ts'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A thin strip above the app that names the site.
|
|
5
|
+
*
|
|
6
|
+
* Renders nothing on production, whether or not a site name was set: the
|
|
7
|
+
* banner exists to tell dev, demo, and any other non-production install
|
|
8
|
+
* apart. Renders nothing while the metadata is loading or on error either,
|
|
9
|
+
* so a slow config request never pushes the app down half a second after
|
|
10
|
+
* boot.
|
|
11
|
+
*
|
|
12
|
+
* Mounted at the top of `KelpieApp`, above the router, so it shows on the
|
|
13
|
+
* sign-in and onboarding pages as well as the main app.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export function EnvironmentBanner(): React.JSX.Element | null {
|
|
17
|
+
const { config } = usePublicConfig()
|
|
18
|
+
|
|
19
|
+
if (config === undefined || config.runtimeMode === 'production') {
|
|
20
|
+
return null
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const label = config.siteName ?? config.runtimeMode
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<div className="flex h-5 shrink-0 items-center justify-center bg-accent px-2 text-[11px] font-medium tracking-wide text-accent-fg uppercase">
|
|
27
|
+
{label}
|
|
28
|
+
</div>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
MATCH_KEYS,
|
|
6
6
|
OBJECT_COLUMNS,
|
|
7
7
|
OBJECT_LABELS,
|
|
8
|
+
ON_MISSING_COMPANY_LABELS,
|
|
8
9
|
SOURCE_LABELS,
|
|
9
10
|
defaultMatchKeyId,
|
|
10
11
|
findMatchKey,
|
|
@@ -18,7 +19,9 @@ import type {
|
|
|
18
19
|
ImportObject,
|
|
19
20
|
ImportPreviewRow,
|
|
20
21
|
ImportRowAction,
|
|
22
|
+
ImportRowError,
|
|
21
23
|
ImportSource,
|
|
24
|
+
OnMissingCompany,
|
|
22
25
|
} from '@kelpie/schemas'
|
|
23
26
|
import { useState } from 'react'
|
|
24
27
|
import type { ChangeEvent, FormEvent, ReactNode } from 'react'
|
|
@@ -64,6 +67,7 @@ export function DataPage(): ReactNode {
|
|
|
64
67
|
const [file, setFile] = useState<File | null>(null)
|
|
65
68
|
const [columnMap, setColumnMap] = useState<ImportColumnMap>({})
|
|
66
69
|
const [conflictMode, setConflictMode] = useState<ImportConflictMode>('skip')
|
|
70
|
+
const [onMissingCompany, setOnMissingCompany] = useState<OnMissingCompany>('skip')
|
|
67
71
|
const [matchKeyId, setMatchKeyId] = useState<string>(() => defaultMatchKeyId('companies'))
|
|
68
72
|
const [jobId, setJobId] = useState<string | undefined>(undefined)
|
|
69
73
|
const [problem, setProblem] = useState<string | null>(null)
|
|
@@ -115,6 +119,7 @@ export function DataPage(): ReactNode {
|
|
|
115
119
|
setFile(null)
|
|
116
120
|
setColumnMap({})
|
|
117
121
|
setConflictMode('skip')
|
|
122
|
+
setOnMissingCompany('skip')
|
|
118
123
|
setMatchKeyId(defaultMatchKeyId(object))
|
|
119
124
|
setJobId(undefined)
|
|
120
125
|
setProblem(null)
|
|
@@ -133,6 +138,7 @@ export function DataPage(): ReactNode {
|
|
|
133
138
|
source,
|
|
134
139
|
object,
|
|
135
140
|
conflictMode,
|
|
141
|
+
onMissingCompany,
|
|
136
142
|
matchKeyId,
|
|
137
143
|
...(map === undefined ? {} : { columnMap: map }),
|
|
138
144
|
})
|
|
@@ -373,10 +379,12 @@ export function DataPage(): ReactNode {
|
|
|
373
379
|
object={object}
|
|
374
380
|
columnMap={columnMap}
|
|
375
381
|
conflictMode={conflictMode}
|
|
382
|
+
onMissingCompany={onMissingCompany}
|
|
376
383
|
matchKeyId={matchKeyId}
|
|
377
384
|
isPending={createJob.isPending}
|
|
378
385
|
onColumnMapChange={setColumnMap}
|
|
379
386
|
onConflictModeChange={setConflictMode}
|
|
387
|
+
onMissingCompanyChange={setOnMissingCompany}
|
|
380
388
|
onMatchKeyChange={setMatchKeyId}
|
|
381
389
|
onSubmit={(event) => runStep(onRerun(event))}
|
|
382
390
|
onBack={() => {
|
|
@@ -407,10 +415,12 @@ interface MappingFormProps {
|
|
|
407
415
|
readonly object: ImportObject
|
|
408
416
|
readonly columnMap: ImportColumnMap
|
|
409
417
|
readonly conflictMode: ImportConflictMode
|
|
418
|
+
readonly onMissingCompany: OnMissingCompany
|
|
410
419
|
readonly matchKeyId: string
|
|
411
420
|
readonly isPending: boolean
|
|
412
421
|
readonly onColumnMapChange: (map: ImportColumnMap) => void
|
|
413
422
|
readonly onConflictModeChange: (mode: ImportConflictMode) => void
|
|
423
|
+
readonly onMissingCompanyChange: (mode: OnMissingCompany) => void
|
|
414
424
|
readonly onMatchKeyChange: (id: string) => void
|
|
415
425
|
readonly onSubmit: (event: FormEvent) => void
|
|
416
426
|
readonly onBack: () => void
|
|
@@ -419,6 +429,9 @@ interface MappingFormProps {
|
|
|
419
429
|
function MappingForm(props: MappingFormProps): ReactNode {
|
|
420
430
|
const matchKey = findMatchKey(props.object, props.matchKeyId)
|
|
421
431
|
const keyColumns = new Set(matchKey?.columns ?? [])
|
|
432
|
+
// People rows can carry a company and title that drive a Position, so only a
|
|
433
|
+
// People import has a company to be missing.
|
|
434
|
+
const showMissingCompany = props.object === 'people'
|
|
422
435
|
|
|
423
436
|
return (
|
|
424
437
|
<form className="space-y-4" onSubmit={props.onSubmit}>
|
|
@@ -453,6 +466,23 @@ function MappingForm(props: MappingFormProps): ReactNode {
|
|
|
453
466
|
))}
|
|
454
467
|
</select>
|
|
455
468
|
</Field>
|
|
469
|
+
{showMissingCompany ? (
|
|
470
|
+
<Field label="Missing company">
|
|
471
|
+
<select
|
|
472
|
+
value={props.onMissingCompany}
|
|
473
|
+
onChange={(event) =>
|
|
474
|
+
props.onMissingCompanyChange(event.target.value as OnMissingCompany)
|
|
475
|
+
}
|
|
476
|
+
className="w-full rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent"
|
|
477
|
+
>
|
|
478
|
+
{Object.entries(ON_MISSING_COMPANY_LABELS).map(([mode, label]) => (
|
|
479
|
+
<option key={mode} value={mode}>
|
|
480
|
+
{label}
|
|
481
|
+
</option>
|
|
482
|
+
))}
|
|
483
|
+
</select>
|
|
484
|
+
</Field>
|
|
485
|
+
) : null}
|
|
456
486
|
</div>
|
|
457
487
|
<p className="text-[12px] text-ink-muted">
|
|
458
488
|
{props.conflictMode === 'update'
|
|
@@ -460,6 +490,16 @@ function MappingForm(props: MappingFormProps): ReactNode {
|
|
|
460
490
|
: 'Rows matching an existing record on the key column are skipped.'}{' '}
|
|
461
491
|
Key columns must be mapped.
|
|
462
492
|
</p>
|
|
493
|
+
{showMissingCompany ? (
|
|
494
|
+
<p className="text-[12px] text-ink-muted">
|
|
495
|
+
Map <span className="font-mono text-[11px]">company_domain</span> or{' '}
|
|
496
|
+
<span className="font-mono text-[11px]">company_name</span> and{' '}
|
|
497
|
+
<span className="font-mono text-[11px]">title</span> to link a position for each person.{' '}
|
|
498
|
+
{props.onMissingCompany === 'create'
|
|
499
|
+
? 'A company that is not here yet is created from the row.'
|
|
500
|
+
: 'A company that is not here yet is left unlinked and reported as a warning.'}
|
|
501
|
+
</p>
|
|
502
|
+
) : null}
|
|
463
503
|
<div className="overflow-hidden rounded-md border border-border">
|
|
464
504
|
<table className="w-full text-left text-[13px]">
|
|
465
505
|
<thead>
|
|
@@ -576,29 +616,7 @@ function ResultPanel({ job, object, isCommitting, onCommit, onBack }: ResultPane
|
|
|
576
616
|
|
|
577
617
|
{job.errors.length > 0 ? (
|
|
578
618
|
<div className="space-y-2">
|
|
579
|
-
<
|
|
580
|
-
<table className="w-full text-left text-[13px]">
|
|
581
|
-
<thead>
|
|
582
|
-
<tr className="border-b border-border bg-surface text-[11px] font-semibold tracking-wide text-ink-muted uppercase">
|
|
583
|
-
<th className="px-4 py-2.5">Row</th>
|
|
584
|
-
<th className="px-4 py-2.5">Field</th>
|
|
585
|
-
<th className="px-4 py-2.5">Message</th>
|
|
586
|
-
</tr>
|
|
587
|
-
</thead>
|
|
588
|
-
<tbody>
|
|
589
|
-
{job.errors.map((error, index) => (
|
|
590
|
-
<tr
|
|
591
|
-
key={`${String(error.row)}-${error.field}-${String(index)}`}
|
|
592
|
-
className="border-b border-border last:border-0"
|
|
593
|
-
>
|
|
594
|
-
<td className="px-4 py-2.5 font-mono text-[12px]">{error.row}</td>
|
|
595
|
-
<td className="px-4 py-2.5 font-mono text-[12px]">{error.field}</td>
|
|
596
|
-
<td className="px-4 py-2.5 text-ink-muted">{error.message}</td>
|
|
597
|
-
</tr>
|
|
598
|
-
))}
|
|
599
|
-
</tbody>
|
|
600
|
-
</table>
|
|
601
|
-
</div>
|
|
619
|
+
<IssueTable rows={job.errors} />
|
|
602
620
|
{job.counts.error > job.errors.length ? (
|
|
603
621
|
<p className="text-[12px] text-ink-muted">
|
|
604
622
|
Showing {job.errors.length} of {job.counts.error} failing rows.
|
|
@@ -609,6 +627,19 @@ function ResultPanel({ job, object, isCommitting, onCommit, onBack }: ResultPane
|
|
|
609
627
|
<p className="text-[13px] text-ink-muted">No row errors.</p>
|
|
610
628
|
)}
|
|
611
629
|
|
|
630
|
+
{job.warnings.length > 0 ? (
|
|
631
|
+
<div className="space-y-2">
|
|
632
|
+
<div>
|
|
633
|
+
<h3 className="text-[13px] font-semibold text-ink">Warnings</h3>
|
|
634
|
+
<p className="mt-0.5 text-[12px] text-ink-muted">
|
|
635
|
+
These rows were imported. Each note says what was left out, such as a person whose
|
|
636
|
+
company was not here to link a position to.
|
|
637
|
+
</p>
|
|
638
|
+
</div>
|
|
639
|
+
<IssueTable rows={job.warnings} />
|
|
640
|
+
</div>
|
|
641
|
+
) : null}
|
|
642
|
+
|
|
612
643
|
<div className="flex flex-wrap gap-3">
|
|
613
644
|
<button
|
|
614
645
|
type="button"
|
|
@@ -630,6 +661,35 @@ function ResultPanel({ job, object, isCommitting, onCommit, onBack }: ResultPane
|
|
|
630
661
|
)
|
|
631
662
|
}
|
|
632
663
|
|
|
664
|
+
/** The row / field / message table shared by the error and warning lists. */
|
|
665
|
+
function IssueTable({ rows }: { readonly rows: readonly ImportRowError[] }): ReactNode {
|
|
666
|
+
return (
|
|
667
|
+
<div className="overflow-hidden rounded-md border border-border">
|
|
668
|
+
<table className="w-full text-left text-[13px]">
|
|
669
|
+
<thead>
|
|
670
|
+
<tr className="border-b border-border bg-surface text-[11px] font-semibold tracking-wide text-ink-muted uppercase">
|
|
671
|
+
<th className="px-4 py-2.5">Row</th>
|
|
672
|
+
<th className="px-4 py-2.5">Field</th>
|
|
673
|
+
<th className="px-4 py-2.5">Message</th>
|
|
674
|
+
</tr>
|
|
675
|
+
</thead>
|
|
676
|
+
<tbody>
|
|
677
|
+
{rows.map((issue, index) => (
|
|
678
|
+
<tr
|
|
679
|
+
key={`${String(issue.row)}-${issue.field}-${String(index)}`}
|
|
680
|
+
className="border-b border-border last:border-0"
|
|
681
|
+
>
|
|
682
|
+
<td className="px-4 py-2.5 font-mono text-[12px]">{issue.row}</td>
|
|
683
|
+
<td className="px-4 py-2.5 font-mono text-[12px]">{issue.field}</td>
|
|
684
|
+
<td className="px-4 py-2.5 text-ink-muted">{issue.message}</td>
|
|
685
|
+
</tr>
|
|
686
|
+
))}
|
|
687
|
+
</tbody>
|
|
688
|
+
</table>
|
|
689
|
+
</div>
|
|
690
|
+
)
|
|
691
|
+
}
|
|
692
|
+
|
|
633
693
|
function PreviewTable({
|
|
634
694
|
object,
|
|
635
695
|
rows,
|