Skip to content

Commit

Permalink
ISPN-16258 Include cache alias in the creation wizard
Browse files Browse the repository at this point in the history
  • Loading branch information
karesti committed Jul 26, 2024
1 parent 3ea3a30 commit 69c7000
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 5 deletions.
49 changes: 46 additions & 3 deletions src/app/Caches/Create/AdvancedOptionsConfigurator.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ import { useCreateCache } from '@app/services/createCacheHook';
import { PopoverHelp } from '@app/Common/PopoverHelp';
import IndexedConfigurationTuning from '@app/Caches/Create/AdvancedTuning/IndexedConfigurationTuning';
import BackupsCofigurationTuning from '@app/Caches/Create/AdvancedTuning/BackupsCofigurationTuning';
import TracingCacheConfigurator from '@app/Caches/Create/Features/TracingCacheConfigurator';
import { SelectSingle } from '@app/Common/SelectSingle';
import { selectOptionProps } from '@utils/selectOptionPropsCreator';
import TracingCacheConfigurator from '@app/Caches/Create/Features/TracingCacheConfigurator';
import { SelectMultiWithChips } from '@app/Common/SelectMultiWithChips';

const AdvancedOptionsConfigurator = (props: { cacheManager: CacheManager }) => {
const { t } = useTranslation();
Expand All @@ -31,6 +32,7 @@ const AdvancedOptionsConfigurator = (props: { cacheManager: CacheManager }) => {
configuration.advanced.lockAcquisitionTimeout
);
const [striping, setStriping] = useState<boolean>(configuration.advanced.striping!);
const [aliases, setAliases] = useState<string[]>(configuration.advanced.aliases!);

useEffect(() => {
setConfiguration((prevState) => {
Expand All @@ -41,11 +43,12 @@ const AdvancedOptionsConfigurator = (props: { cacheManager: CacheManager }) => {
storage: storage,
concurrencyLevel: concurrencyLevel,
lockAcquisitionTimeout: lockAcquisitionTimeout,
striping: striping
striping: striping,
aliases: aliases
}
};
});
}, [storage, concurrencyLevel, lockAcquisitionTimeout, striping]);
}, [storage, concurrencyLevel, lockAcquisitionTimeout, striping, aliases]);

const handleConcurrencyLevel = (value) => {
setConcurrencyLevel(value);
Expand Down Expand Up @@ -81,6 +84,45 @@ const AdvancedOptionsConfigurator = (props: { cacheManager: CacheManager }) => {
);
};

const helperAddAlias = (selection) => {
if (!aliases.some((alias) => alias === selection)) {
setAliases([...aliases, selection]);
} else {
setAliases(aliases.filter((alias) => alias !== selection));
}
};

const clearAliasesSelection = () => {
setAliases([]);
};

const formAliases = () => {
return (
<FormGroup
isInline
fieldId="field-aliases"
label={t('caches.create.configurations.advanced-options.aliases')}
labelIcon={
<PopoverHelp
name="aliases"
label={t('caches.create.configurations.advanced-options.aliases-title')}
content={t('caches.create.configurations.advanced-options.aliases-tooltip')}
/>
}
>
<SelectMultiWithChips
id="aliasesSelector"
placeholder={t('caches.create.configurations.advanced-options.aliases')}
options={[]}
onSelect={helperAddAlias}
onClear={clearAliasesSelection}
create={true}
selection={aliases}
/>
</FormGroup>
);
};

const formLocking = () => {
return (
<FormSection title={t('caches.create.configurations.advanced-options.locking-title')}>
Expand Down Expand Up @@ -160,6 +202,7 @@ const AdvancedOptionsConfigurator = (props: { cacheManager: CacheManager }) => {
}}
>
{formMemory()}
{formAliases()}
<TracingCacheConfigurator tracingEnabled={props.cacheManager.tracing_enabled} />
{formLocking()}
<IndexedConfigurationTuning />
Expand Down
2 changes: 1 addition & 1 deletion src/app/Common/SelectMultiWithChips.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ const SelectMultiWithChips = (props: {

// When no options are found after filtering, display creation option
if (!newSelectOptions.length) {
newSelectOptions = [{ isDisabled: false, children: `Create new option "${inputValue}"`, value: 'create' }];
newSelectOptions = [{ isDisabled: false, children: `Create "${inputValue}"`, value: 'create' }];
}

// Open the menu when the input value changes and the new value is not empty
Expand Down
5 changes: 4 additions & 1 deletion src/app/assets/languages/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,10 @@
"tracing-description": "Tracing is enabled by default in every cache when tracing is enabled globally. Disable tracing or specify which events to track within this cache.",
"select-tracing-categories": "Select categories",
"select-tracing-categories-helper": "You must select at least one category.",
"tracing-loading": "Loading available categories..."
"tracing-loading": "Loading available categories...",
"aliases": "Aliases",
"aliases-title": "Cache aliases",
"aliases-tooltip": "Add aliases to caches to access them using different names."
}
},
"review": {
Expand Down
1 change: 1 addition & 0 deletions src/app/providers/CreateCacheProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ const AdvancedOptionsInitialState: AdvancedConfigurationStep = {
backupSetting: BackupSettingInitialState,
transactionalAdvance: TransactionalCacheAdvanceInitialState,
tracing: TracingCacheInitialState,
aliases: [],
valid: true
};

Expand Down
4 changes: 4 additions & 0 deletions src/services/cacheConfigUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,10 @@ export class CacheConfigUtils {
data.basic.expiration === true && expiration();
memoryConfiguration();

if (data.advanced.aliases.length > 0) {
cache[cacheType]['aliases'] = data.advanced.aliases;
}

if (data.feature.cacheFeatureSelected.includes(CacheFeature.INDEXED)) {
featureIndexed();
data.feature.indexedCache.indexedSharding && indexSharding();
Expand Down
1 change: 1 addition & 0 deletions src/types/InfinispanTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,7 @@ interface AdvancedConfigurationStep {
backupSiteData?: BackupSite[];
transactionalAdvance?: TransactionalCacheAdvance;
tracing: TracingCache;
aliases: string[];
valid: boolean;
}

Expand Down

0 comments on commit 69c7000

Please sign in to comment.