mirror of https://github.com/portainer/portainer
fix(templates): separate template views filters [EE-6397] (#10711)
parent
82951093b5
commit
4c226d7a17
|
@ -5,4 +5,5 @@
|
||||||
on-select="($ctrl.selectTemplate)"
|
on-select="($ctrl.selectTemplate)"
|
||||||
on-delete="($ctrl.confirmDelete)"
|
on-delete="($ctrl.confirmDelete)"
|
||||||
selected-id="$ctrl.state.selectedTemplate.Id"
|
selected-id="$ctrl.state.selectedTemplate.Id"
|
||||||
|
storage-key="'kube-custom-templates'"
|
||||||
></custom-templates-list>
|
></custom-templates-list>
|
||||||
|
|
|
@ -47,6 +47,7 @@ export const ngModule = angular
|
||||||
'selectedId',
|
'selectedId',
|
||||||
'disabledTypes',
|
'disabledTypes',
|
||||||
'fixedCategories',
|
'fixedCategories',
|
||||||
|
'storageKey',
|
||||||
])
|
])
|
||||||
)
|
)
|
||||||
.component(
|
.component(
|
||||||
|
@ -57,6 +58,7 @@ export const ngModule = angular
|
||||||
'templates',
|
'templates',
|
||||||
'selectedId',
|
'selectedId',
|
||||||
'templateLinkParams',
|
'templateLinkParams',
|
||||||
|
'storageKey',
|
||||||
])
|
])
|
||||||
)
|
)
|
||||||
.component(
|
.component(
|
||||||
|
|
|
@ -68,4 +68,5 @@
|
||||||
on-select="($ctrl.selectTemplate)"
|
on-select="($ctrl.selectTemplate)"
|
||||||
on-delete="($ctrl.confirmDelete)"
|
on-delete="($ctrl.confirmDelete)"
|
||||||
selected-id="$ctrl.state.selectedTemplate.Id"
|
selected-id="$ctrl.state.selectedTemplate.Id"
|
||||||
|
storage-key="'docker-custom-templates'"
|
||||||
></custom-templates-list>
|
></custom-templates-list>
|
||||||
|
|
|
@ -270,4 +270,10 @@
|
||||||
<!-- container-form -->
|
<!-- container-form -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<app-templates-list templates="templates" on-select="(selectTemplate)" selected-id="state.selectedTemplate.Id" disabled-types="disabledTypes"></app-templates-list>
|
<app-templates-list
|
||||||
|
storage-key="'docker-app-templates'"
|
||||||
|
templates="templates"
|
||||||
|
on-select="(selectTemplate)"
|
||||||
|
selected-id="state.selectedTemplate.Id"
|
||||||
|
disabled-types="disabledTypes"
|
||||||
|
></app-templates-list>
|
||||||
|
|
|
@ -34,6 +34,7 @@ export function AppTemplatesView() {
|
||||||
onSelect={(template) => setSelectedTemplateId(template.Id)}
|
onSelect={(template) => setSelectedTemplateId(template.Id)}
|
||||||
disabledTypes={[TemplateType.Container]}
|
disabledTypes={[TemplateType.Container]}
|
||||||
fixedCategories={['edge']}
|
fixedCategories={['edge']}
|
||||||
|
storageKey="edge-app-templates"
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
|
@ -26,6 +26,7 @@ export function ListView() {
|
||||||
to: 'edge.stacks.new',
|
to: 'edge.stacks.new',
|
||||||
params: { templateId: template.Id },
|
params: { templateId: template.Id },
|
||||||
})}
|
})}
|
||||||
|
storageKey="edge-custom-templates"
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
|
@ -14,21 +14,15 @@ import { ListState, TemplateType } from './types';
|
||||||
import { useSortAndFilterTemplates } from './useSortAndFilter';
|
import { useSortAndFilterTemplates } from './useSortAndFilter';
|
||||||
import { Filters } from './Filters';
|
import { Filters } from './Filters';
|
||||||
|
|
||||||
const tableKey = 'app-templates-list';
|
|
||||||
const store = createPersistedStore<ListState>(tableKey, undefined, (set) => ({
|
|
||||||
category: null,
|
|
||||||
setCategory: (category: ListState['category']) => set({ category }),
|
|
||||||
types: [],
|
|
||||||
setTypes: (types: ListState['types']) => set({ types }),
|
|
||||||
}));
|
|
||||||
|
|
||||||
export function AppTemplatesList({
|
export function AppTemplatesList({
|
||||||
templates: initialTemplates,
|
templates: initialTemplates,
|
||||||
onSelect,
|
onSelect,
|
||||||
selectedId,
|
selectedId,
|
||||||
disabledTypes,
|
disabledTypes,
|
||||||
fixedCategories,
|
fixedCategories,
|
||||||
|
storageKey,
|
||||||
}: {
|
}: {
|
||||||
|
storageKey: string;
|
||||||
templates?: TemplateViewModel[];
|
templates?: TemplateViewModel[];
|
||||||
onSelect: (template: TemplateViewModel) => void;
|
onSelect: (template: TemplateViewModel) => void;
|
||||||
selectedId?: TemplateViewModel['Id'];
|
selectedId?: TemplateViewModel['Id'];
|
||||||
|
@ -36,8 +30,15 @@ export function AppTemplatesList({
|
||||||
fixedCategories?: Array<string>;
|
fixedCategories?: Array<string>;
|
||||||
}) {
|
}) {
|
||||||
const [page, setPage] = useState(0);
|
const [page, setPage] = useState(0);
|
||||||
|
const [store] = useState(() =>
|
||||||
const listState = useTableState(store, tableKey);
|
createPersistedStore<ListState>(storageKey, undefined, (set) => ({
|
||||||
|
category: null,
|
||||||
|
setCategory: (category: ListState['category']) => set({ category }),
|
||||||
|
types: [],
|
||||||
|
setTypes: (types: ListState['types']) => set({ types }),
|
||||||
|
}))
|
||||||
|
);
|
||||||
|
const listState = useTableState(store, storageKey);
|
||||||
|
|
||||||
const templates = useMemo(() => {
|
const templates = useMemo(() => {
|
||||||
if (!initialTemplates) {
|
if (!initialTemplates) {
|
||||||
|
|
|
@ -14,15 +14,13 @@ import { Link } from '@@/Link';
|
||||||
|
|
||||||
import { CustomTemplatesListItem } from './CustomTemplatesListItem';
|
import { CustomTemplatesListItem } from './CustomTemplatesListItem';
|
||||||
|
|
||||||
const tableKey = 'custom-templates-list';
|
|
||||||
const store = createPersistedStore(tableKey);
|
|
||||||
|
|
||||||
export function CustomTemplatesList({
|
export function CustomTemplatesList({
|
||||||
templates,
|
templates,
|
||||||
onSelect,
|
onSelect,
|
||||||
onDelete,
|
onDelete,
|
||||||
selectedId,
|
selectedId,
|
||||||
templateLinkParams,
|
templateLinkParams,
|
||||||
|
storageKey,
|
||||||
}: {
|
}: {
|
||||||
templates?: CustomTemplate[];
|
templates?: CustomTemplate[];
|
||||||
onSelect?: (template: CustomTemplate['Id']) => void;
|
onSelect?: (template: CustomTemplate['Id']) => void;
|
||||||
|
@ -32,10 +30,11 @@ export function CustomTemplatesList({
|
||||||
to: string;
|
to: string;
|
||||||
params: object;
|
params: object;
|
||||||
};
|
};
|
||||||
|
storageKey: string;
|
||||||
}) {
|
}) {
|
||||||
const [page, setPage] = useState(0);
|
const [page, setPage] = useState(0);
|
||||||
|
const [store] = useState(() => createPersistedStore(storageKey));
|
||||||
const listState = useTableState(store, tableKey);
|
const listState = useTableState(store, storageKey);
|
||||||
|
|
||||||
const filterBySearch = useCallback(
|
const filterBySearch = useCallback(
|
||||||
(item: CustomTemplate) =>
|
(item: CustomTemplate) =>
|
||||||
|
|
Loading…
Reference in New Issue