77 lines
4.1 KiB
TypeScript
77 lines
4.1 KiB
TypeScript
|
import * as plugins from '../../../plugins.js';
|
||
|
import * as shared from '../../shared/index.js';
|
||
|
|
||
|
import {
|
||
|
DeesElement,
|
||
|
customElement,
|
||
|
html,
|
||
|
state,
|
||
|
css,
|
||
|
cssManager,
|
||
|
} from '@design.estate/dees-element';
|
||
|
|
||
|
import * as appstate from '../../../appstate.js';
|
||
|
|
||
|
@customElement('cloudly-view-secretbundles')
|
||
|
export class CloudlyViewSecretBundles extends DeesElement {
|
||
|
@state()
|
||
|
private data: appstate.IDataState = {} as any;
|
||
|
|
||
|
constructor() {
|
||
|
super();
|
||
|
const subscription = appstate.dataState.select((stateArg) => stateArg).subscribe((dataArg) => { this.data = dataArg; });
|
||
|
this.rxSubscriptions.push(subscription);
|
||
|
}
|
||
|
|
||
|
public static styles = [ cssManager.defaultStyles, shared.viewHostCss, css`` ];
|
||
|
|
||
|
public render() {
|
||
|
return html`
|
||
|
<cloudly-sectionheading>SecretBundles</cloudly-sectionheading>
|
||
|
<dees-table
|
||
|
.heading1=${'SecretBundles'}
|
||
|
.heading2=${'decoded in client'}
|
||
|
.data=${this.data.secretBundles || []}
|
||
|
.displayFunction=${(itemArg: plugins.interfaces.data.ISecretBundle) => {
|
||
|
return {
|
||
|
name: itemArg.data.name,
|
||
|
secretGroups: (() => {
|
||
|
const secretGroupIds = itemArg.data.includedSecretGroupIds;
|
||
|
let secretGroupNames: string[] = [];
|
||
|
for (const secretGroupId of secretGroupIds) {
|
||
|
const secretGroup = this.data.secretGroups.find((secretGroupArg: any) => secretGroupArg.id === secretGroupId);
|
||
|
if (secretGroup) { secretGroupNames.push(secretGroup.data.name); }
|
||
|
}
|
||
|
return secretGroupNames.join(', ');
|
||
|
})(),
|
||
|
tags: html`<dees-chips .selectionMode=${'none'} .selectableChips=${itemArg.data.includedTags}></dees-chips>`,
|
||
|
};
|
||
|
}}
|
||
|
.dataActions=${[
|
||
|
{ name: 'add SecretBundle', iconName: 'plus', type: ['header', 'footer'], actionFunc: async () => {
|
||
|
await plugins.deesCatalog.DeesModal.createAndShow({ heading: 'Add SecretBundle', content: html`
|
||
|
<dees-form>
|
||
|
<dees-input-text .key=${'id'} .label=${'ID'} .value=${''}></dees-input-text>
|
||
|
<dees-input-text .key=${'data.secretGroupIds'} .label=${'secretGroupIds'} .value=${''}></dees-input-text>
|
||
|
<dees-input-text .key=${'data.includedTags'} .label=${'includedTags'} .value=${''}></dees-input-text>
|
||
|
</dees-form>
|
||
|
`, menuOptions: [ { name: 'create', action: async (modalArg: any) => {} }, { name: 'cancel', action: async (modalArg: any) => { modalArg.destroy(); } } ] });
|
||
|
} },
|
||
|
{ name: 'delete', iconName: 'trash', type: ['contextmenu', 'inRow'], actionFunc: async (actionDataArg: any) => {
|
||
|
plugins.deesCatalog.DeesModal.createAndShow({ heading: `Delete ConfigBundle ${actionDataArg.item.id}`, content: html`
|
||
|
<div style="text-align:center">Do you really want to delete the ConfigBundle?</div>
|
||
|
<div style="font-size: 0.8em; color: red; text-align:center; padding: 16px; margin-top: 24px; border: 1px solid #444; font-family: Intel One Mono; font-size: 16px;">${actionDataArg.item.id}</div>
|
||
|
`, menuOptions: [ { name: 'cancel', action: async (modalArg: any) => { await modalArg.destroy(); } }, { name: 'delete', action: async (modalArg: any) => { appstate.dataState.dispatchAction(appstate.deleteSecretBundleAction, { configBundleId: actionDataArg.item.id, }); await modalArg.destroy(); } } ] });
|
||
|
} },
|
||
|
{ name: 'edit', iconName: 'penToSquare', type: ['doubleClick', 'contextmenu', 'inRow'], actionFunc: async () => {
|
||
|
await plugins.deesCatalog.DeesModal.createAndShow({ heading: 'Edit SecretBundle', content: html`<dees-form><dees-input-text .label=${'purpose'}></dees-input-text></dees-form>`, menuOptions: [ { name: 'save', action: async (modalArg: any) => {} }, { name: 'cancel', action: async (modalArg: any) => { modalArg.destroy(); } } ] });
|
||
|
} },
|
||
|
] as plugins.deesCatalog.ITableAction[]}
|
||
|
></dees-table>
|
||
|
`;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
declare global { interface HTMLElementTagNameMap { 'cloudly-view-secretbundles': CloudlyViewSecretBundles; } }
|
||
|
|