diff --git a/src/app/shared/components/node-config/node-config.component.ts b/src/app/shared/components/node-config/node-config.component.ts index 73383c8c..9f771078 100644 --- a/src/app/shared/components/node-config/node-config.component.ts +++ b/src/app/shared/components/node-config/node-config.component.ts @@ -23,7 +23,7 @@ export class NodeConfigComponent implements OnInit, OnDestroy { public showLnConfig = false; public selNode: ConfigSettingsNode | any; public lnImplementationStr = ''; - public links = [{ link: 'applayout', name: 'App Layout' }, { link: 'pglayout', name: 'Page Layout' }, { link: 'services', name: 'Services' }, { link: 'experimental', name: 'Experimental' }, { link: 'lnconfig', name: this.lnImplementationStr }]; + public links = [{ link: 'applayout', name: 'Application Layout' }, { link: 'pglayout', name: 'Page Layout' }, { link: 'services', name: 'Services' }, { link: 'experimental', name: 'Experimental' }, { link: 'lnconfig', name: this.lnImplementationStr }]; public activeLink = ''; private unSubs: Array> = [new Subject(), new Subject(), new Subject()]; diff --git a/src/app/shared/components/node-config/page-settings/page-settings.component.html b/src/app/shared/components/node-config/page-settings/page-settings.component.html index 2a5155c0..649a27a8 100644 --- a/src/app/shared/components/node-config/page-settings/page-settings.component.html +++ b/src/app/shared/components/node-config/page-settings/page-settings.component.html @@ -4,72 +4,46 @@ Page Settings - +
- - + +
diff --git a/src/app/shared/components/node-config/page-settings/page-settings.component.ts b/src/app/shared/components/node-config/page-settings/page-settings.component.ts index 2a6b66e5..ebc2effd 100644 --- a/src/app/shared/components/node-config/page-settings/page-settings.component.ts +++ b/src/app/shared/components/node-config/page-settings/page-settings.component.ts @@ -4,16 +4,17 @@ import { takeUntil } from 'rxjs/operators'; import { Store } from '@ngrx/store'; import { faPenRuler } from '@fortawesome/free-solid-svg-icons'; -import { CURRENCY_UNITS, UserPersonaEnum, ScreenSizeEnum, FIAT_CURRENCY_UNITS, NODE_SETTINGS, UI_MESSAGES } from '../../../services/consts-enums-functions'; -import { ConfigSettingsNode, Settings } from '../../../models/RTLconfig'; +import { PAGE_SIZE_OPTIONS, ScreenSizeEnum, UI_MESSAGES, SORT_ORDERS } from '../../../services/consts-enums-functions'; +import { ConfigSettingsNode } from '../../../models/RTLconfig'; import { LoggerService } from '../../../services/logger.service'; import { CommonService } from '../../../services/common.service'; import { RTLState } from '../../../../store/rtl.state'; -import { saveSettings, setSelectedNode } from '../../../../store/rtl.actions'; +import { saveSettings } from '../../../../store/rtl.actions'; import { setChildNodeSettingsECL } from '../../../../eclair/store/ecl.actions'; import { setChildNodeSettingsCL } from '../../../../cln/store/cln.actions'; import { setChildNodeSettingsLND } from '../../../../lnd/store/lnd.actions'; import { rootSelectedNode } from '../../../../store/rtl.selector'; +import { RTL_PAGE_SETTINGS } from '../../../models/pageSettings'; @Component({ selector: 'rtl-page-settings', @@ -24,18 +25,11 @@ export class PageSettingsComponent implements OnInit, OnDestroy { public faPenRuler = faPenRuler; public selNode: ConfigSettingsNode | any; - public userPersonas = [UserPersonaEnum.OPERATOR, UserPersonaEnum.MERCHANT]; - public currencyUnits = FIAT_CURRENCY_UNITS; - public themeModes = NODE_SETTINGS.modes; - public themeColors = NODE_SETTINGS.themes; - public selectedThemeMode = NODE_SETTINGS.modes[0]; - public selectedThemeColor = NODE_SETTINGS.themes[0].id; - public currencyUnit = 'BTC'; - public smallerCurrencyUnit = 'Sats'; - public showSettingOption = true; - public previousSettings: Settings; public screenSize = ''; public screenSizeEnum = ScreenSizeEnum; + public pageSizeOptions = PAGE_SIZE_OPTIONS; + public pageSettings = null; + public sortOrders = SORT_ORDERS; unSubs: Array> = [new Subject(), new Subject()]; constructor(private logger: LoggerService, private commonService: CommonService, private store: Store) { @@ -45,78 +39,25 @@ export class PageSettingsComponent implements OnInit, OnDestroy { ngOnInit() { this.store.select(rootSelectedNode).pipe(takeUntil(this.unSubs[0])).subscribe((selNode) => { this.selNode = selNode; - this.selectedThemeMode = this.themeModes.find((themeMode) => this.selNode.settings.themeMode === themeMode.id) || this.themeModes[0]; - this.selectedThemeColor = this.selNode.settings.themeColor; - if (!this.selNode.settings.fiatConversion) { - this.selNode.settings.currencyUnit = ''; - } - this.previousSettings = JSON.parse(JSON.stringify(this.selNode.settings)); + this.pageSettings = RTL_PAGE_SETTINGS[this.selNode.lnImplementation.toUpperCase()].sort((x, y) => ((x.seq < y.seq) ? -1 : ((x.seq > y.seq) ? 1 : 0))); this.logger.info(selNode); + this.logger.warn(this.pageSettings); }); } - onCurrencyChange(event: any) { - this.selNode.settings.currencyUnits = [...CURRENCY_UNITS, event.value]; - this.store.dispatch(setChildNodeSettingsLND({ - payload: { - userPersona: this.selNode.settings.userPersona, channelBackupPath: this.selNode.settings.channelBackupPath, selCurrencyUnit: event.value, currencyUnits: this.selNode.settings.currencyUnits, fiatConversion: this.selNode.settings.fiatConversion, - lnImplementation: this.selNode.lnImplementation, swapServerUrl: this.selNode.settings.swapServerUrl, boltzServerUrl: this.selNode.settings.boltzServerUrl - } - })); - this.store.dispatch(setChildNodeSettingsCL({ - payload: { - userPersona: this.selNode.settings.userPersona, channelBackupPath: this.selNode.settings.channelBackupPath, selCurrencyUnit: event.value, currencyUnits: this.selNode.settings.currencyUnits, fiatConversion: this.selNode.settings.fiatConversion, lnImplementation: this.selNode.lnImplementation, swapServerUrl: this.selNode.settings.swapServerUrl, boltzServerUrl: this.selNode.settings.boltzServerUrl - } - })); - this.store.dispatch(setChildNodeSettingsECL({ - payload: { - userPersona: this.selNode.settings.userPersona, channelBackupPath: this.selNode.settings.channelBackupPath, selCurrencyUnit: event.value, currencyUnits: this.selNode.settings.currencyUnits, fiatConversion: this.selNode.settings.fiatConversion, lnImplementation: this.selNode.lnImplementation, swapServerUrl: this.selNode.settings.swapServerUrl, boltzServerUrl: this.selNode.settings.boltzServerUrl - } - })); + onUpdatePageSettings() { + // if (this.selNode.settings.fiatConversion && !this.selNode.settings.currencyUnit) { + // return true; + // } + // this.store.dispatch(setChildNodeSettingsECL({ + // payload: { + // userPersona: this.selNode.settings.userPersona, channelBackupPath: this.selNode.settings.channelBackupPath, selCurrencyUnit: this.selNode.settings.currencyUnit, currencyUnits: this.selNode.settings.currencyUnits, fiatConversion: this.selNode.settings.fiatConversion, lnImplementation: this.selNode.lnImplementation, swapServerUrl: this.selNode.settings.swapServerUrl, boltzServerUrl: this.selNode.settings.boltzServerUrl + // } + // })); } - toggleSettings(toggleField: string, event?: any) { - this.selNode.settings[toggleField] = !this.selNode.settings[toggleField]; - } - - changeThemeColor(newThemeColor: string) { - this.selectedThemeColor = newThemeColor; - this.selNode.settings.themeColor = newThemeColor; - } - - chooseThemeMode() { - this.selNode.settings.themeMode = this.selectedThemeMode.id; - } - - onUpdateSettings(): boolean | void { - if (this.selNode.settings.fiatConversion && !this.selNode.settings.currencyUnit) { - return true; - } - this.logger.info(this.selNode.settings); - this.store.dispatch(saveSettings({ payload: { uiMessage: UI_MESSAGES.UPDATE_NODE_SETTINGS, settings: this.selNode.settings } })); - this.store.dispatch(setChildNodeSettingsLND({ - payload: { - userPersona: this.selNode.settings.userPersona, channelBackupPath: this.selNode.settings.channelBackupPath, selCurrencyUnit: this.selNode.settings.currencyUnit, currencyUnits: this.selNode.settings.currencyUnits, fiatConversion: this.selNode.settings.fiatConversion, lnImplementation: this.selNode.lnImplementation, swapServerUrl: this.selNode.settings.swapServerUrl, boltzServerUrl: this.selNode.settings.boltzServerUrl - } - })); - this.store.dispatch(setChildNodeSettingsCL({ - payload: { - userPersona: this.selNode.settings.userPersona, channelBackupPath: this.selNode.settings.channelBackupPath, selCurrencyUnit: this.selNode.settings.currencyUnit, currencyUnits: this.selNode.settings.currencyUnits, fiatConversion: this.selNode.settings.fiatConversion, lnImplementation: this.selNode.lnImplementation, swapServerUrl: this.selNode.settings.swapServerUrl, boltzServerUrl: this.selNode.settings.boltzServerUrl - } - })); - this.store.dispatch(setChildNodeSettingsECL({ - payload: { - userPersona: this.selNode.settings.userPersona, channelBackupPath: this.selNode.settings.channelBackupPath, selCurrencyUnit: this.selNode.settings.currencyUnit, currencyUnits: this.selNode.settings.currencyUnits, fiatConversion: this.selNode.settings.fiatConversion, lnImplementation: this.selNode.lnImplementation, swapServerUrl: this.selNode.settings.swapServerUrl, boltzServerUrl: this.selNode.settings.boltzServerUrl - } - })); - } - - onResetSettings() { - const prevIndex = this.selNode.index || -1; - this.selNode.settings = this.previousSettings; - this.selectedThemeMode = this.themeModes.find((themeMode) => themeMode.id === this.previousSettings.themeMode) || this.themeModes[0]; - this.selectedThemeColor = this.previousSettings.themeColor; - this.store.dispatch(setSelectedNode({ payload: { uiMessage: UI_MESSAGES.NO_SPINNER, prevLnNodeIndex: +prevIndex, currentLnNode: this.selNode, isInitialSetup: true } })); + onResetPageSettings() { + // this.store.dispatch(setSelectedNode({ payload: { uiMessage: UI_MESSAGES.NO_SPINNER, prevLnNodeIndex: +prevIndex, currentLnNode: this.selNode, isInitialSetup: true } })); } ngOnDestroy() { diff --git a/src/app/shared/models/pageSettings.ts b/src/app/shared/models/pageSettings.ts new file mode 100644 index 00000000..d8644433 --- /dev/null +++ b/src/app/shared/models/pageSettings.ts @@ -0,0 +1,45 @@ +import { SortOrderEnum } from '../services/consts-enums-functions'; + +export class TableSetting { + + tableId: string; + recordsPerPage?: number; + sortBy?: string; + sortOrder?: SortOrderEnum; + showColumns?: any[]; + fieldsDef?: any[]; + +} + +export class NodePageSettings { + + seq: number; + pageId: string; + tables: TableSetting[]; + +} + +export class RTLPageSettings { + + LND?: NodePageSettings[]; + CLN?: NodePageSettings[]; + ECL?: NodePageSettings[]; + +} + +export const RTL_PAGE_SETTINGS: RTLPageSettings = { + LND: [], + CLN: [ + { seq: 1, pageId: 'payments', tables: [{ + tableId: 'payments', recordsPerPage: 25, sortBy: 'created_at', sortOrder: SortOrderEnum.DESCENDING, + showColumns: ['created_at', 'type', 'payment_hash', 'msatoshi_sent', 'msatoshi'], + fieldsDef: ['created_at', 'type', 'payment_hash', 'msatoshi_sent', 'msatoshi', 'amount_msat', 'amount_sent_msat', 'destination', 'status', 'memo'] + }] }, + { seq: 2, pageId: 'invoices', tables: [{ + tableId: 'invoices', recordsPerPage: 10, sortBy: 'expires_at', sortOrder: SortOrderEnum.ASCENDING, + showColumns: ['expires_at', 'paid_at', 'type', 'description', 'msatoshi', 'msatoshi_received'], + fieldsDef: ['expires_at', 'paid_at', 'type', 'description', 'msatoshi', 'msatoshi_received', 'label', 'payment_hash', 'amount_msat', 'status', 'amount_received_msat'] + }] } + ], + ECL: [] +}; diff --git a/src/app/shared/pipes/app.pipe.ts b/src/app/shared/pipes/app.pipe.ts index 01580a3c..e5a2a520 100644 --- a/src/app/shared/pipes/app.pipe.ts +++ b/src/app/shared/pipes/app.pipe.ts @@ -21,3 +21,14 @@ export class CamelCasePipe implements PipeTransform { } } + +@Pipe({ + name: 'camelcaseWithReplace' +}) +export class CamelCaseWithReplacePipe implements PipeTransform { + + transform(value: string, args?: any): string { + return value?.replace(/\s+/g, '')?.replace(/-/g, ' ').replace(new RegExp(args, 'g'), ' ').replace(/(?:^\w|[A-Z]|\b\w)/g, (word, index) => (word.toUpperCase())); + } + +} diff --git a/src/app/shared/services/consts-enums-functions.ts b/src/app/shared/services/consts-enums-functions.ts index b03bee1f..552ec0bf 100644 --- a/src/app/shared/services/consts-enums-functions.ts +++ b/src/app/shared/services/consts-enums-functions.ts @@ -659,3 +659,10 @@ export const ECL_CHANNEL_TYPES = [ { id: 'static_remotekey', placeholder: 'Static Remotekey' }, { id: 'anchor_outputs_zero_fee_htlc_tx', placeholder: 'Anchor Output' } ]; + +export enum SortOrderEnum { + ASCENDING = 'Ascending', + DESCENDING = 'Descending' +} + +export const SORT_ORDERS = ['Ascending', 'Descending']; diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index 5c0d6af2..d74b87f6 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -108,7 +108,7 @@ import { AutoFocusDirective } from './directive/auto-focus.directive'; import { MonthlyDateDirective, YearlyDateDirective } from './directive/date-formats.directive'; import { MaxValidator } from './directive/max-amount.directive'; import { MinValidator } from './directive/min-amount.directive'; -import { RemoveLeadingZerosPipe, CamelCasePipe } from './pipes/app.pipe'; +import { RemoveLeadingZerosPipe, CamelCasePipe, CamelCaseWithReplacePipe } from './pipes/app.pipe'; const DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = { suppressScrollX: false, @@ -233,6 +233,7 @@ export const DEFAULT_DATE_FORMAT: MatDateFormats = { YearlyDateDirective, RemoveLeadingZerosPipe, CamelCasePipe, + CamelCaseWithReplacePipe, MaxValidator, MinValidator, AppSettingsComponent, @@ -311,6 +312,7 @@ export const DEFAULT_DATE_FORMAT: MatDateFormats = { MinValidator, RemoveLeadingZerosPipe, CamelCasePipe, + CamelCaseWithReplacePipe, AuthSettingsComponent, TransactionsReportTableComponent, OnChainGeneratedAddressComponent,