171 lines
5.5 KiB
TypeScript
171 lines
5.5 KiB
TypeScript
import * as plugins from '../plugins.js';
|
|
import * as shared from '../elements/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 = {
|
|
secretGroups: [],
|
|
secretBundles: [],
|
|
};
|
|
|
|
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) => 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 (dataActionArg) => {
|
|
const modal = 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) => {} },
|
|
{
|
|
name: 'cancel',
|
|
action: async (modalArg) => {
|
|
modalArg.destroy();
|
|
},
|
|
},
|
|
],
|
|
});
|
|
},
|
|
},
|
|
{
|
|
name: 'delete',
|
|
iconName: 'trash',
|
|
type: ['contextmenu', 'inRow'],
|
|
actionFunc: async (actionDataArg) => {
|
|
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) => {
|
|
await modalArg.destroy();
|
|
},
|
|
},
|
|
{
|
|
name: 'delete',
|
|
action: async (modalArg) => {
|
|
appstate.dataState.dispatchAction(appstate.deleteSecretBundleAction, {
|
|
configBundleId: actionDataArg.item.id,
|
|
});
|
|
await modalArg.destroy();
|
|
},
|
|
},
|
|
],
|
|
});
|
|
},
|
|
},
|
|
{
|
|
name: 'edit',
|
|
iconName: 'penToSquare',
|
|
type: ['doubleClick', 'contextmenu', 'inRow'],
|
|
actionFunc: async (actionDataArg) => {
|
|
const modal = 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) => {} },
|
|
{
|
|
name: 'cancel',
|
|
action: async (modalArg) => {
|
|
modalArg.destroy();
|
|
},
|
|
},
|
|
],
|
|
});
|
|
},
|
|
},
|
|
] as plugins.deesCatalog.ITableAction[]}
|
|
></dees-table>
|
|
`;
|
|
}
|
|
}
|