{"version":3,"file":"static/js/main.aafc9e4b.js","mappings":"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","sources":["source/first/ft.tsx","source/first/ftAppInfo.tsx","source/first/ftFixIconFonts.tsx","source/first/ftNavScreens.tsx","source/general/theme.tsx","source/first/ftRapiResult.tsx","source/first/ftRapi.tsx","source/models/adminTask.tsx","source/models/base/adminTaskBase.tsx","source/models/adminTaskCategory.tsx","source/models/base/adminTaskCategoryBase.tsx","source/models/arcRepo.tsx","source/models/base/arcRepoBase.tsx","source/models/arcRepoMediaType.tsx","source/models/base/arcRepoMediaTypeBase.tsx","source/models/arcUpload.tsx","source/models/base/arcUploadBase.tsx","source/models/assembly.tsx","source/models/base/assemblyBase.tsx","source/models/assemblyProperty.tsx","source/models/base/assemblyPropertyBase.tsx","source/models/assemblyRegion.tsx","source/models/base/assemblyRegionBase.tsx","source/models/assemblyType.tsx","source/models/base/assemblyTypeBase.tsx","source/models/attendee.tsx","source/models/base/attendeeBase.tsx","source/models/attendeeTitle.tsx","source/models/base/attendeeTitleBase.tsx","source/models/attendeeType.tsx","source/models/base/attendeeTypeBase.tsx","source/models/auditAction.tsx","source/models/base/auditActionBase.tsx","source/models/candidateStatus.tsx","source/models/base/candidateStatusBase.tsx","source/models/conference.tsx","source/models/base/conferenceBase.tsx","source/models/confRegisterStatus.tsx","source/models/base/confRegisterStatusBase.tsx","source/models/contactMethod.tsx","source/models/base/contactMethodBase.tsx","source/models/gender.tsx","source/models/base/genderBase.tsx","source/models/genLookup.tsx","source/models/base/genLookupBase.tsx","source/models/justice.tsx","source/models/base/justiceBase.tsx","source/models/justiceCategory.tsx","source/models/base/justiceCategoryBase.tsx","source/models/justiceFile.tsx","source/models/base/justiceFileBase.tsx","source/models/justiceNote.tsx","source/models/base/justiceNoteBase.tsx","source/models/justiceStatus.tsx","source/models/base/justiceStatusBase.tsx","source/models/language.tsx","source/models/base/languageBase.tsx","source/models/maritalStatus.tsx","source/models/base/maritalStatusBase.tsx","source/models/parameter.tsx","source/models/base/parameterBase.tsx","source/models/pastor.tsx","source/models/base/pastorBase.tsx","source/models/pastorFile.tsx","source/models/base/pastorFileBase.tsx","source/models/pastorHistory.tsx","source/models/base/pastorHistoryBase.tsx","source/models/pastorPosition.tsx","source/models/base/pastorPositionBase.tsx","source/models/pastorQualification.tsx","source/models/base/pastorQualificationBase.tsx","source/models/pastorStatus.tsx","source/models/base/pastorStatusBase.tsx","source/models/pastorTitle.tsx","source/models/base/pastorTitleBase.tsx","source/models/paymentMethod.tsx","source/models/base/paymentMethodBase.tsx","source/models/positionStatus.tsx","source/models/base/positionStatusBase.tsx","source/models/reception.tsx","source/models/base/receptionBase.tsx","source/models/roundStatus.tsx","source/models/base/roundStatusBase.tsx","source/models/rsaProvince.tsx","source/models/base/rsaProvinceBase.tsx","source/models/userAuthRole.tsx","source/models/base/userAuthRoleBase.tsx","source/models/userAuthRoleType.tsx","source/models/base/userAuthRoleTypeBase.tsx","source/models/userDevice.tsx","source/models/base/userDeviceBase.tsx","source/models/userType.tsx","source/models/base/userTypeBase.tsx","source/models/userz.tsx","source/models/base/userzBase.tsx","source/models/votingCandidate.tsx","source/models/base/votingCandidateBase.tsx","source/models/votingPosition.tsx","source/models/base/votingPositionBase.tsx","source/models/votingRound.tsx","source/models/base/votingRoundBase.tsx","source/models.tsx","source/first/ftCon.tsx","source/first/ftImage.tsx","source/first/ftPopupMessage.tsx","source/first/ftText.tsx","source/first/ftSpacer.tsx","source/first/ftBusy.tsx","source/general/ut.tsx","source/fragments/fragHeader.tsx","source/first/ftCanvas.tsx","source/first/ftButton.tsx","source/general/th.tsx","source/pages/pageLanding.tsx","source/first/ftFrame.tsx","source/first/ftForm.tsx","source/first/ftFmSubmit.tsx","source/first/ftFmTextField.tsx","source/first/ftFmPasswordField.tsx","source/first/ftFmEmailField.tsx","source/pages/pageAuthLogin.tsx","source/pages/pageMenu.tsx","source/pages/pageMenuConfRegister.tsx","source/pages/pageMenuConfReception.tsx","source/pages/pageMenuVoting.tsx","source/first/ftDataGrid.tsx","source/first/ftPopupOptions.tsx","source/pages/pageUserSearch.tsx","source/first/ftFmCheckboxField.tsx","source/first/ftFmDropdownField.tsx","source/pages/pageUserEdit.tsx","source/pages/pageTaskSearch.tsx","source/first/ftFmTextareaField.tsx","source/first/ftFmDateField.tsx","source/first/ftFmTimeField.tsx","source/first/ftFmSearchField.tsx","source/pages/pageTaskEdit.tsx","source/pages/pagePastorSearch.tsx","source/first/ftFmIntegerField.tsx","source/first/ftFmUploadImage.tsx","source/pages/pagePastorEdit.tsx","source/first/ftList.tsx","source/first/ftIcon.tsx","source/first/ftTextIcons.tsx","source/pages/pagePastorSearchMob.tsx","source/pages/pagePastorDetailMob.tsx","source/pages/pageQualificationSearch.tsx","source/pages/pageQualificationEdit.tsx","source/pages/pagePastorFileSearch.tsx","source/first/ftFmUploadFile.tsx","source/pages/pagePastorFileEdit.tsx","source/pages/pageReportPastor40Year.tsx","source/pages/pageReportPastoralStatus.tsx","source/pages/pageReportPastoralStatusLapsed.tsx","source/pages/pageReportPastoralStatusLapsedWarning.tsx","source/pages/pageReportPastorDuplicates.tsx","source/pages/pageReportPastorGender.tsx","source/pages/pageReportPastorMarriageOfficers.tsx","source/pages/pageReportPastorMovementAccepted.tsx","source/pages/pageReportPastorMovementCalled.tsx","source/pages/pageReportPastorReinstated.tsx","source/pages/pageReportPastorRenewed.tsx","source/pages/pageReportPastorSecondedAll.tsx","source/pages/pageReportPastorSecondedForces.tsx","source/pages/pageAssemblySearch.tsx","source/pages/pageAssemblyEdit.tsx","source/pages/pagePropertySearch.tsx","source/first/ftFmDecimalField.tsx","source/pages/pagePropertyEdit.tsx","source/pages/pageRegionSearch.tsx","source/pages/pageRegionEdit.tsx","source/pages/pageReportAssemblyAddedLast6Months.tsx","source/pages/pageReportAssemblyNoPastors.tsx","source/pages/pageReportAssemblyNumberList.tsx","source/pages/pageReportAssemblyNumberListSum.tsx","source/pages/pageReportAssemblyPastorsList.tsx","source/pages/pageReportLabelAssemblySecretary.tsx","source/pages/pageReportLabelNoMailAddresses.tsx","source/pages/pageReportRegionList.tsx","source/pages/pageReportRegionOfficeBearers.tsx","source/pages/pageJusticeSearch.tsx","source/pages/pageJusticeEdit.tsx","source/pages/pageJusticeNoteSearch.tsx","source/pages/pageJusticeNoteEdit.tsx","source/pages/pageJusticeFileSearch.tsx","source/pages/pageJusticeFileEdit.tsx","source/pages/pageAttendeeNewOnline.tsx","source/pages/pageAttendeeSearch.tsx","source/pages/pageAttendeeEdit.tsx","source/pages/pageConfregisStatistics.tsx","source/pages/pageConfregisCards.tsx","source/pages/pageConfregisCardsExtra.tsx","source/pages/pageReportConfregisSummaryTotal.tsx","source/pages/pageReportConfregisAttendees.tsx","source/pages/pageReportConfregisByRegion.tsx","source/pages/pageReportConfregisByType.tsx","source/pages/pageReportConfregisByRegionNoId.tsx","source/pages/pageReportConfregisQuorumDetail.tsx","source/pages/pageReportConfregisQuorumTotal.tsx","source/pages/pageReportConfregisSummary.tsx","source/pages/pageConfrecepStatistics.tsx","source/first/ftQrScanner.tsx","source/pages/pageConfrecepScan.tsx","source/pages/pageConfrecepGoodyScan.tsx","source/pages/pageReportConfrecepSummary.tsx","source/pages/pageReportConfrecepDetail.tsx","source/pages/pageVoteProcessManager.tsx","source/pages/pageVoteCaptureNomin.tsx","source/pages/pageVoteApprovalPrimary.tsx","source/pages/pageVoteApprovalSecondary.tsx","source/pages/pageVoteApprovalFinal.tsx","source/pages/pageVoteDisplayResults.tsx","source/pages/pageVoteDisplayStatus.tsx","source/pages/pageReportVoteResults.tsx","App.tsx","node_modules/moment/locale|sync|/^/.*$","webpack/bootstrap","webpack/runtime/amd options","webpack/runtime/chunk loaded","webpack/runtime/compat get default export","webpack/runtime/create fake namespace object","webpack/runtime/define property getters","webpack/runtime/global","webpack/runtime/hasOwnProperty shorthand","webpack/runtime/make namespace object","webpack/runtime/node module decorator","webpack/runtime/publicPath","webpack/runtime/jsonp chunk loading","webpack/startup"],"sourcesContent":["/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\n\nimport { useFocusEffect, useIsFocused } from '@react-navigation/native';\nimport { TextDecoder } from 'text-encoding';\nimport * as base64 from 'base64-js';\nimport { Platform, Dimensions, ScaledSize } from 'react-native';\nimport * as Linking from 'expo-linking';\nimport moment from 'moment';\nimport Decimal from 'decimal.js';\nimport linq from 'linq';\nimport sha512 from 'crypto-js/sha512';\nimport sha256 from 'crypto-js/sha256';\nimport md5 from 'crypto-js/md5';\nimport type { FtNavigationType, FtNavigator, FtPageUrl } from './ftTypes';\nimport NetInfo from '@react-native-community/netinfo';\n\n//********************************************************************\n// Ft class : general global static utlity functions\nexport default class Ft {\n\n //====================================================================\n // static api\n\n /// dir multiple arguments to console, each in separate dir statement\n static dirs( ...args: any[] ): void\n {\n for ( const i in args )\n console.log( args[i] );\n }\n\n /// dir OS header and then multiple arguments to console, each in separate dir statement\n static dirsOs( ...args: any[] ): void\n {\n console.log( `~~~ ${Platform.OS} ~~~~~` );\n for ( const i in args )\n console.log( args[i] );\n }\n\n /// Check if obj is defined\n ///\n /// Anything [obj] object to check\n /// bool [returns] True if obj is defined\n static isDef( obj: any ): boolean\n {\n return typeof obj !== 'undefined';\n }\n\n static isDefs( ...args: any[] ): boolean\n {\n for ( var i = 0; i < args.length; i++ )\n if ( typeof args[i] == \"undefined\" )\n return false;\n return true;\n }\n\n static isUndef( pPrm: any ): boolean\n {\n return typeof ( pPrm ) == \"undefined\";\n }\n\n /// Test if prm is defined and variant of false\n static isDefFalse( prm: any ): boolean\n {\n if ( prm === undefined ) return false;\n if ( prm === 0 || prm === false || prm === '0' || prm === 'false' ) return true;\n return false;\n }\n\n static isStr( pPrm: any ): boolean\n {\n return typeof ( pPrm ) == \"string\";\n }\n\n static isArr( pPrm: any ): boolean\n {\n return Array.isArray( pPrm );\n }\n\n static isFxn( pPrm: any ): boolean\n {\n return typeof ( pPrm ) == \"function\";\n }\n\n static isObj( pPrm: any ): boolean\n {\n return typeof ( pPrm ) == \"object\";\n }\n\n static isNull( pPrm: any ): boolean\n {\n return pPrm == null;\n }\n\n static isUndefNull( prm: any ): boolean\n {\n return prm == undefined || prm == null;\n }\n\n static isNum( pPrm: any ): boolean\n {\n return typeof ( pPrm ) == \"number\";\n }\n\n /// Test if code is running on web platform\n static isWeb(): boolean\n {\n return Platform.OS == 'web';\n }\n\n /// Test if prm has no properties\n static emptyObj( prm: any ): boolean\n {\n if ( ( typeof prm ) != \"object\" ) return false; // only test objects\n if ( prm instanceof Date ) return false;\n for ( let prop in prm ) {\n return false;\n }\n return true;\n }\n\n /// Check if prm is empty: 0, spaces, null, false\n ///\n /// bool [returns] True if empty\n static e( prm: any ): boolean\n {\n return this.isUndef( prm ) || this.isNull( prm ) || this.emptyObj( prm ) || prm === false || prm === 0 || prm === 0.0 || prm === \"\" || ( this.isArr( prm ) && prm.length == 0 );\n }\n\n /// Check if params is all empty: 0, spaces, null, false\n ///\n /// bool [returns] True if all are empty\n static eAll( ...args: any[] ): boolean\n {\n for ( let i = 0; i < args.length; i++ )\n if ( !Ft.e( args[i] ) ) return false;\n return true;\n }\n\n /// Check if any of params is empty: 0, spaces, null, false\n ///\n /// bool [returns] True if any are empty\n static eAny( ...args: any[] ): boolean\n {\n for ( let i = 0; i < args.length; i++ )\n if ( Ft.e( args[i] ) ) return true;\n return false;\n }\n\n /// Convert JS UTF-16 string to UTF8 Uint8Array\n ///\n /// String [str] String to convert\n /// Uint8Array [returns] Converted byte array\n static strToUtf8Ba( str: string ): Uint8Array\n {\n const ret = new TextEncoder().encode( str );\n return ret;\n }\n\n /// Convert UTF8 Uint8Array to JS UTF-16 string\n ///\n /// Uint8Array [ba] Byte array to convert\n /// String [returns] Converted String\n static utf8BaToStr( ba: Uint8Array ): string\n {\n const ret = new TextDecoder().decode( ba );\n return ret;\n }\n\n /// Convert Uint8Array to Base64\n ///\n /// Uint8Array [ba] Byte array to convert\n /// String [returns] Base64 encoded string\n static baToBase64( ba: Uint8Array ): string\n {\n const ret = base64.fromByteArray( ba );\n return ret;\n }\n\n /// Convert Base64 to Uint8Array\n ///\n /// String [b64] Base64 string\n /// Uint8Array [returns] Converted byte array\n static base64ToBa( b64: string ): Uint8Array\n {\n const ret = base64.toByteArray( b64 );\n return ret;\n }\n\n /// Convert JS string to Utf8 base64\n ///\n /// String [str] JS string\n /// String [returns] Encoded Utf8 base64\n static strToUtf8Base64( str: string ): string\n {\n const ret = base64.fromByteArray( new TextEncoder().encode( str ) );\n return ret;\n }\n\n /// Utf8 base64 to JS string\n ///\n /// String [b64] Utf8 base64 string\n /// String [returns] JS string\n static utf8Base64ToStr( b64: string ): string\n {\n const ret = b64 != null ? new TextDecoder().decode( base64.toByteArray( b64 ) ) : \"\";\n return ret;\n }\n\n /// Return today's date : yyyy-mm-dd\n static dtToday(): string\n {\n const ret = moment().format( 'YYYY-MM-DD' );\n return ret;\n }\n\n /// Return today's date as Date object\n static dtTodayAsDate(): Date\n {\n const ret = moment( this.dtToday() ).toDate();\n return ret;\n }\n\n /// Return datetime parsed as Date object\n /// Example: const dtm = Ft.dtmAsDate('2022-09-06 12:34');\n static dtmAsDate( str?: string|Date|moment.Moment|null ): Date\n {\n const ret = moment( str ).toDate();\n return ret;\n }\n\n /// Return date/time\n static dtmNow(): string\n {\n const ret = moment().format( 'YYYY-MM-DD HH:mm:ss' );\n return ret;\n }\n\n /// Return date/time formatted using fmt\n /// Format: https://momentjs.com/docs/#/displaying/\n static dtFmt( dt: string|Date|moment.Moment|null, fmt: string = 'YYYY-MM-DD' ): string\n {\n const ret = moment( dt ).format( fmt );\n return ret;\n }\n\n /// Return date/time formatted using fmt, but convert to UTC first\n /// Format: https://momentjs.com/docs/#/displaying/\n static dtFmtUtc( dt: string|Date|moment.Moment|null, fmt: string = 'YYYY-MM-DD' ): string\n {\n const ret = moment( dt ).utc().format( fmt );\n return ret;\n }\n\n /// Return date/time formatted using fmt\n /// Format: https://momentjs.com/docs/#/displaying/\n static dtmFmt( dtm?: string|Date|moment.Moment|number|null, fmt: string = 'YYYY-MM-DD HH:mm:ss' ): string\n {\n const ret = moment( dtm ).format( fmt );\n return ret;\n }\n\n /// Return date/time formatted using fmt, but convert to UTC first\n /// Format: https://momentjs.com/docs/#/displaying/\n static dtmFmtUtc( dtm: string|Date|moment.Moment|number|null, fmt: string = 'YYYY-MM-DD HH:mm:ss' ): string\n {\n const ret = moment( dtm ).utc().format( fmt );\n return ret;\n }\n\n /// Return date/time formatted using fmt\n /// Format: https://momentjs.com/docs/#/displaying/\n static tmFmt( dtm: string|Date|moment.Moment|null, fmt: string = 'HH:mm:ss' ): string\n {\n let dtm2 = dtm;\n if ( typeof dtm === 'string' && dtm.length < 9 && dtm.includes( ':' ) ) {\n dtm2 = '0001-01-01 ' + dtm;\n }\n const ret = moment( dtm2 ).format( fmt );\n return ret;\n }\n\n /// Return date/time formatted using fmt\n /// Format: https://momentjs.com/docs/#/displaying/\n static tmFmtMin( dtm: string|Date|moment.Moment|null, fmt: string = 'HH:mm' ): string\n {\n return this.tmFmt( dtm, fmt );\n }\n\n /// Return date/time formatted using fmt, but convert to UTC first\n /// Format: https://momentjs.com/docs/#/displaying/\n static tmFmtUtc( dtm: string|Date|moment.Moment|null, fmt: string = 'HH:mm:ss' ): string\n {\n const ret = moment( dtm ).utc().format( fmt );\n return ret;\n }\n\n /// Return date of given interval into the past from given date\n static dtPast(\n dttm: string|Date|moment.Moment|null,\n years: number = 0,\n months: number = 0,\n weeks: number = 0,\n days: number = 0\n ): string\n {\n const past = moment( dttm )\n .subtract( years, 'y' )\n .subtract( months, 'M' )\n .subtract( weeks, 'w' )\n .subtract( days, 'd' );\n const ret = this.dtFmt( past );\n return ret;\n }\n\n /// Return date of given interval into the past from given date\n static dtmPast(\n dttm: string|Date|moment.Moment|null,\n years: number = 0,\n months: number = 0,\n weeks: number = 0,\n days: number = 0,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): string\n {\n const past = moment( dttm )\n .subtract( years, 'y' )\n .subtract( months, 'M' )\n .subtract( weeks, 'w' )\n .subtract( days, 'd' )\n .subtract( hours, 'h' )\n .subtract( minutes, 'm' )\n .subtract( seconds, 's' );\n const ret = this.dtmFmt( past );\n return ret;\n }\n\n /// Return date of given interval into the future from given date\n static dtFuture(\n dttm: string|Date|moment.Moment|null,\n years: number = 0,\n months: number = 0,\n weeks: number = 0,\n days: number = 0\n ): string\n {\n const future = moment( dttm )\n .add( years, 'y' )\n .add( months, 'M' )\n .add( weeks, 'w' )\n .add( days, 'd' );\n const ret = this.dtFmt( future );\n return ret;\n }\n\n /// Return date of given interval into the future from given date\n static dtmFuture(\n dttm: string|Date|moment.Moment|null,\n years: number = 0,\n months: number = 0,\n weeks: number = 0,\n days: number = 0,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): string\n {\n const future = moment( dttm )\n .add( years, 'y' )\n .add( months, 'M' )\n .add( weeks, 'w' )\n .add( days, 'd' )\n .add( hours, 'h' )\n .add( minutes, 'm' )\n .add( seconds, 's' );\n const ret = this.dtmFmt( future );\n return ret;\n }\n\n /// Get duration in seconds from dtmA to dtmZ\n /// String [dtmA] From datetime\n /// String [dtmZ] To datetime\n /// Number [returns] Duration from dtmA to dtmZ in seconds\n static dtmDurationSeconds( dtmA: string|Date|moment.Moment|null, dtmZ: string|Date|moment.Moment|null ): number\n {\n const z = moment( dtmZ );\n const d = moment.duration( z.diff( dtmA ) );\n const s = d.asSeconds();\n return s;\n }\n\n /// Return datetime of midnight Monday morning of week containing dtm\n /// String [dtm] Datetime contained by week in question\n /// String [returns] Datetime midnight Monday morning\n static dtmStartOfWeek( dtm: string|Date|moment.Moment|null ): string\n {\n const dow = moment( dtm ).isoWeekday(); // day of week, 1 = Monday, 7 = Sunday\n const dtmMonday = moment( dtm ).subtract( dow - 1, 'days' ).format( 'YYYY-MM-DD HH:mm:ss' ); // subtract dow from dtm\n const dtmMondayMid = dtmMonday.substring( 0, 10 ) + ' 00:00:00'; // zero time part\n return dtmMondayMid;\n }\n\n /// Return datetime of midnight morning of day containing dtm\n /// String [dtm] Datetime contained by week in question\n /// String [returns] Datetime midnight morning\n static dtmStartOfDay( dtm: string|Date|moment.Moment|null ): string\n {\n const dtmMid = Ft.dtFmt( dtm ).substring( 0, 10 ) + ' 00:00:00'; // zero time part\n return dtmMid;\n }\n\n /// Date/DateTime comparrison: is dtmA before dtmB\n /// String [dtmA] Datetime A\n /// String [dtmB] Datetime B\n /// Boolean [returns] Comparison result\n static dtmIsBefore( dtmA: string|Date|moment.Moment|null, dtmB: string|Date|moment.Moment|null ): boolean\n {\n const res = moment( dtmA ).isBefore( dtmB );\n return res;\n }\n\n /// Date/DateTime comparrison: is dtmA after dtmB\n /// String [dtmA] Datetime A\n /// String [dtmB] Datetime B\n /// Boolean [returns] Comparison result\n static dtmIsAfter( dtmA: string|Date|moment.Moment|null, dtmB: string|Date|moment.Moment|null ): boolean\n {\n const res = moment( dtmA ).isAfter( dtmB );\n return res;\n }\n\n /// Date/DateTime comparrison: is dtmA same as dtmB\n /// String [dtmA] Datetime A\n /// String [dtmB] Datetime B\n /// Boolean [returns] Comparison result\n static dtmIsSame( dtmA: string|Date|moment.Moment|null, dtmB: string|Date|moment.Moment|null ): boolean\n {\n const res = moment( dtmA ).isSame( dtmB );\n return res;\n }\n\n /// Date/DateTime comparrison: is dtmA same or before dtmB\n /// String [dtmA] Datetime A\n /// String [dtmB] Datetime B\n /// Boolean [returns] Comparison result\n static dtmIsSameBefore( dtmA: string|Date|moment.Moment|null, dtmB: string|Date|moment.Moment|null ): boolean\n {\n const res = moment( dtmA ).isSameOrBefore( dtmB );\n return res;\n }\n\n /// Date/DateTime comparrison: is dtmA same or after dtmB\n /// String [dtmA] Datetime A\n /// String [dtmB] Datetime B\n /// Boolean [returns] Comparison result\n static dtmIsSameAfter( dtmA: string|Date|moment.Moment|null, dtmB: string|Date|moment.Moment|null ): boolean\n {\n const res = moment( dtmA ).isSameOrAfter( dtmB );\n return res;\n }\n\n /// Date/DateTime comparrison: is dtmA between dtmB and dtmC\n /// String [dtmA] Datetime A\n /// String [dtmB] Datetime B\n /// String [dtmC] Datetime C\n /// Boolean [returns] Comparison result\n static dtmIsBetween( dtmA: string|Date|moment.Moment|null, dtmB: string|Date|moment.Moment|null, dtmC: string|Date|moment.Moment|null ): boolean\n {\n const res = moment( dtmA ).isBetween( dtmB, dtmC );\n return res;\n }\n\n /// Splice date dt into datetime dttm preserving the time\n ///\n /// string/Date [dttm] Datetime to splice into\n /// string/Date [dt] Date to splice with\n /// string [returns] Result datetime as string\n static dtmSpliceDate( dttm: string|Date|moment.Moment|null, dt: string|Date|moment.Moment|null ): string\n {\n const timePart = this.tmFmt( dttm );\n const datePart = this.dtFmt( dt );\n return `${datePart} ${timePart}`;\n }\n\n /// Splice date dt into datetime dttm preserving the time\n ///\n /// string/Date [dttm] Datetime to splice into\n /// string/Date [dt] Date to splice with\n /// Date [returns] Result datetime as Date\n static dtmSpliceDateDtm( dttm: string|Date|moment.Moment|null, dt: string|Date|moment.Moment|undefined|null ): Date\n {\n if ( dt == undefined ) return moment( dttm ).toDate();\n return moment( this.dtmSpliceDate( dttm, dt ) ).toDate();\n }\n\n /// Splice time tm into datetime dttm preserving the date\n ///\n /// string/Date [dttm] Datetime to splice into\n /// string/Date [tm] Time to splice with\n /// string [returns] Result datetime as string\n static dtmSpliceTime( dttm: string|Date|moment.Moment|null, tm: string|Date|moment.Moment|null ): string\n {\n const timePart = this.tmFmt( tm );\n const datePart = this.dtFmt( dttm );\n return `${datePart} ${timePart}`;\n }\n\n /// Splice time tm into datetime dttm preserving the date\n ///\n /// string/Date [dttm] Datetime to splice into\n /// string/Date [tm] Time to splice with\n /// Date [returns] Result datetime as Date\n static dtmSpliceTimeDtm( dttm: string|Date|moment.Moment|null, tm: string|Date|moment.Moment|null ): Date\n {\n return moment( this.dtmSpliceTime( dttm, tm ) ).toDate();\n }\n\n /// Get day of week as number of dt or today of dt == null\n ///\n /// string [dt] Date to get day for\n /// int [return] Day of week: 0 = Sunday, 6 = Saturday\n static dtDayOfWeek( dt: string|Date|moment.Moment|null = null ): number\n {\n const dow = moment( dt ?? Ft.dtToday() ).day();\n return dow;\n }\n\n /// Forward date into past by period\n ///\n /// DateTime [curDate] Current date\n /// int [period] Period to move by: 1 = day, 2 = week, 3 = month, 4 = year\n static dtForwardByPeriod( curDate: string|Date|moment.Moment|null, period: number ): Date\n {\n switch ( period ) {\n case 1: return moment( curDate ).add( 1, 'days' ).toDate(); // day\n case 2: return moment( curDate ).add( 7, 'days' ).toDate(); // week\n case 3: return moment( curDate ).add( 1, 'months' ).toDate(); // month\n case 4: return moment( curDate ).add( 1, 'years' ).toDate(); // year\n }\n return moment( curDate ).toDate();\n }\n\n /// Reverse date into past by period\n ///\n /// DateTime [curDate] Current date\n /// int [period] Period to move by: 1 = day, 2 = week, 3 = month, 4 = year\n static dtReverseByPeriod( curDate: string|Date|moment.Moment|null, period: number ): Date\n {\n switch ( period ) {\n case 1: return moment( curDate ).subtract( 1, 'days' ).toDate(); // day\n case 2: return moment( curDate ).subtract( 7, 'days' ).toDate(); // week\n case 3: return moment( curDate ).subtract( 1, 'months' ).toDate(); // month\n case 4: return moment( curDate ).subtract( 1, 'years' ).toDate(); // year\n }\n return moment( curDate ).toDate();\n }\n\n /// Convert object/array to json string, compact json\n ///\n /// Object/Array [pData] Data to convert\n /// string [returns] JSON string\n static objToJson( pData: any ): string\n {\n return JSON.stringify( pData );\n }\n\n /// Convert object/array to json string, pretty json\n ///\n /// Object/Array [pData] Data to convert\n /// string [returns] JSON string\n static objToJsonPretty( pData: any ): string\n {\n return JSON.stringify( pData, null, 4 );\n }\n\n /// Convert json string to object/array\n ///\n /// string [pJson] JSON string\n /// Object/Array [returns] Converted data\n static jsonToObj( pJson: string ): any\n {\n return JSON.parse( pJson );\n }\n\n /// Convert json string to object/array\n /// Intelligently scans for ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ) strings and convert them to Date objects\n ///\n /// string [pJson] JSON string\n /// Object/Array [returns] Converted data\n static jsonToObjSmart( pJson: string ): any\n {\n const obj = JSON.parse( pJson );\n const isoPtn: string = '^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{3}Z$';\n const isIsoDate = ( o: any ): boolean => typeof o == 'string' && o.length == 24 && o.match( isoPtn ) != null;\n function processObj( o: any ): void { // assume o is already checked being object\n for ( let propName in o ) {\n if ( isIsoDate( o[propName] ) ) o[propName] = new Date( o[propName] );\n else if ( typeof o[propName] == 'object' ) processObj( o[propName] );\n else if ( Array.isArray( o[propName] ) ) processArr( o[propName] );\n }\n };\n function processArr( a: any[] ): void { // assume a is already checked being array\n for ( let i = 0; i < a.length; i++ ) {\n if ( isIsoDate( a[i] ) ) a[i] = new Date( a[i] );\n else if ( typeof a[i] == 'object' ) processObj( a[i] );\n else if ( Array.isArray( a[i] ) ) processArr( a[i] );\n }\n };\n if ( isIsoDate( obj ) ) return new Date( obj );\n else if ( typeof obj == 'object' ) processObj( obj );\n else if ( Array.isArray( obj ) ) processArr( obj );\n return obj;\n }\n\n /// Set properties from propsObj on obj and return obj\n /// Note obj is also modified\n ///\n /// Object [obj] Object to set properties on\n /// Object [propsObj] Object to get properties from\n static setObjProps( obj: any, propsObj: any ): any\n {\n for ( const propName in propsObj )\n obj[propName] = propsObj[propName];\n return obj;\n }\n\n /// Map list of values to key-value object list\n ///\n /// list [list] List of values\n /// int [base] First index number, default to 0\n /// list<{k:key,v:value}> [returns] List of key-value objects\n ///\n /// Example:\n /// let l1 = [\"Apple\", \"Banana\", \"Carrot\"]; // sample input\n /// let l2 = Ft.listToKvobj( l1 ); // l2 = [ { k:0, v:\"Apple\" }, { k:1, v:\"Banana\" }, { k:2, v:\"Carrot\" }]\n static listToKvobj( list: any[], base: number ): any[]\n {\n let i = base != undefined ? base : 0;\n let ret: any[] = [];\n list.forEach( ( val: any ): void => { ret.push( { k: i++, v: val } ); } );\n return ret;\n }\n\n /// Do regex match on str using ptn, return null if not match, [0] = str, [1..] = matches\n /// Link: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n ///\n /// String [str] String to match\n /// String [ptn] Regex pattern to match against\n /// Array [return] Array of matches or null\n ///\n /// Example: let groups = Ft.regMatch( str, ptn );\n static regMatch( str: string|null, ptn: string|RegExp ): string[]|null\n {\n let m = str?.match( ptn );\n if ( m == null ) return null;\n let ret = [...m];\n return ret;\n }\n\n /// Test string against regular expression match\n /// Link: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n ///\n /// String [str] String to match\n /// String [ptn] Regex pattern to match against\n /// bool [return] True if match\n static isRegMatch( str: string, ptn: string ): boolean\n {\n let m = str.match( ptn );\n if ( m != null ) return true;\n return false;\n }\n\n /// Test string against regular expression match, case insensitive\n /// Link: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n ///\n /// String [str] String to match\n /// String [ptn] Regex pattern to match against\n /// bool [return] True if match\n static isRegMatchCi( str: string, ptn: string ): boolean\n {\n let m = str.match( new RegExp( ptn, 'i' ) );\n if ( m != null ) return true;\n return false;\n }\n\n /// Do regex match on str using ptn, returns first group or null if not match\n /// Link: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n ///\n /// String [str] String to match\n /// String [ptn] Regex pattern to match against\n /// String [return] First match or null\n ///\n /// Example: let m = Ft.regMatch1( str, ptn );\n static regMatch1( str: string, ptn: string ): string|null\n {\n let m = str.match( ptn );\n if ( m == null ) return null;\n return m[0];\n }\n\n /// Count number of occurrences of needle in haystack\n /// No overlapping\n ///\n /// string [haystack] String to search in\n /// string [needle] String to search for\n /// number [return] Number of occurrences\n static strCount( haystack: string|null|undefined, needle: string|null|undefined ): number\n {\n // handle empty haystack and needle cases\n if ( haystack == null || haystack == undefined || needle == null || haystack == undefined ) return 0;\n if ( haystack.length == 0 || needle.length == 0 ) return 0;\n\n //- count -----\n let pos = haystack.indexOf( needle );\n let n = pos >= 0 ? 1 : 0;\n while ( pos != -1 ) {\n pos = haystack.indexOf( needle, pos + needle.length );\n if ( pos != -1 ) n++;\n }\n return n;\n }\n\n /// Shorthand convenience pointer to linq.from\n /// Example:\n /// Normal: linq.from(array).select((val, i) => ({ value: val, index: i}));\n /// Short : Ft.lq(array).select((val, i) => ({ value: val, index: i}));\n /// Links:\n /// home: https://github.com/mihaifm/linq\n /// docs: https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable?view=net-5.0\n static lq = linq.from;\n\n /// Intelligent convert value to boolean:\n /// Rules:\n /// typeof 'boolean' : return as is\n /// typeof 'number' : return val == 0 ? false : true\n /// typeof 'string' : return ( val == '0' || val.toLowerCase() == 'false' ) ? false : true\n static parseBool( val: any ): boolean\n {\n if ( typeof val == 'boolean' ) return val;\n if ( typeof val == 'number' ) return val == 0 ? false : true;\n if ( typeof val == 'string' ) return ( val == '0' || val.toLowerCase() == 'false' ) ? false : true;\n return false;\n }\n\n /// parse val into integer number or return null if invalid string\n ///\n /// any [val] input value\n /// number|null [return] Parsed value or null\n static parseInt( val: any|null|undefined ): number|null\n {\n if ( val == null || val == undefined ) return null;\n if ( typeof val == \"string\" && this.strCount( val, '.' ) > 0 ) return null;\n const val2 = ( typeof val == \"string\" ) ? val.replace( \" \", \"\" ) : val;\n const ret = parseInt( val2 );\n return !isNaN( ret ) ? ret : null;\n }\n\n /// parse val into number or return null if invalid string\n /// space and '-' is considered equal to 0\n ///\n /// any [val] input value\n /// Decimal|null [return] Parsed value or null\n static parseIntSpace( val: any|null|undefined ): number|null\n {\n let ret = this.parseInt( val );\n if ( ret == null ) {\n const clean = val?.trim();\n if ( clean == '' || clean == '-' ) ret = 0;\n }\n return ret;\n }\n\n /// parse string into int or return 0 if invalid string\n /// Rules:\n /// typeof 'string' : remove spaces and return Number.parseInt\n /// return Number.parseInt\n static parseInt0( val: any ): number\n {\n const val2 = ( typeof val == \"string\" ) ? val.replace( \" \", \"\" ) : val;\n const ret = parseInt( val2 );\n return !isNaN( ret ) ? ret : 0;\n }\n\n /// parse string into float/double or return 0 if invalid string\n /// Rules:\n /// typeof 'string' : remove spaces and return Number.parseFloat\n /// return Number.parseFloat\n static parseFloat0( val: any ): number\n {\n const val2 = ( typeof val == \"string\" ) ? val.replace( \" \", \"\" ) : val;\n const ret = parseFloat( val2 );\n return !isNaN( ret ) ? ret : 0.0;\n }\n\n /// parse val into number or return null if invalid string\n ///\n /// any [val] input value\n /// number|null [return] Parsed value or null\n static parseFloat( val: any|null|undefined ): number|null\n {\n if ( val == null || val == undefined ) return null;\n if ( typeof val == \"string\" && this.strCount( val, '.' ) > 1 ) return null;\n const val2 = ( typeof val == \"string\" ) ? val.replace( \" \", \"\" ) : val;\n const ret = parseFloat( val2 );\n return !isNaN( ret ) ? ret : null;\n }\n\n /// parse val into number or return null if invalid string\n /// space and '-' is considered equal to 0\n ///\n /// any [val] input value\n /// Decimal|null [return] Parsed value or null\n static parseFloatSpace( val: any|null|undefined ): number|null\n {\n let ret = this.parseFloat( val );\n if ( ret == null ) {\n const clean = val?.trim();\n if ( clean == '' || clean == '-' ) ret = 0.0;\n }\n return ret;\n }\n\n /// parse val into Decimal or return null if invalid string\n ///\n /// any [val] input value\n /// Decimal|null [return] Parsed value or null\n static parseDecimal( val: any|null|undefined ): Decimal|null\n {\n if ( val == null || val == undefined ) return null;\n const val2 = ( typeof val == \"string\" ) ? val.replace( \" \", \"\" ) : val;\n let ret = null;\n try {\n ret = new Decimal( val2 );\n } catch ( e ) {}\n return ret;\n }\n\n /// parse string into Decimal or return null if invalid string\n /// space and '-' is considered equal to 0\n ///\n /// string [val] input value\n /// Decimal|null [return] Parsed value or null\n static parseDecimalSpace( val: string|null|undefined ): Decimal|null\n {\n let ret = this.parseDecimal( val );\n if ( ret == null ) {\n const clean = val?.trim();\n if ( clean == '' || clean == '-' ) ret = new Decimal( '0' );\n }\n return ret;\n }\n\n /// parse string into Decimal or return Decimal('0') if invalid string\n ///\n /// string [val] input value\n /// Decimal [return] Parsed value\n static parseDecimal0( val: any|string|null|undefined ): Decimal\n {\n const ret = this.parseDecimal( val );\n if ( ret == null ) return new Decimal( '0' );\n return ret;\n }\n\n /// parse string into int or return 0/null if invalid string\n /// Rules:\n /// typeof 'string' : if == 'null' return null, else remove spaces and return Number.parseInt\n /// return Number.parseInt\n static parseInt0Null( val: any ): number|null\n {\n if ( val == null ) return null;\n let val2 = typeof val == \"string\" ? val.replace( \" \", \"\" ) : val;\n if ( typeof val == \"string\" && val == \"null\" ) return null;\n let ret = parseInt( val2 );\n return !isNaN( ret ) ? ret : 0;\n }\n\n /// calc MD5 of string\n ///\n /// const hash: string = Ft.md5( input );\n static md5( str: string ): string\n {\n let h = md5( str ).toString();\n return h;\n }\n\n /// calc SHA512 of string\n ///\n /// const hash: string = Ft.sha512( input );\n static sha512( str: string ): string\n {\n let h = sha512( str ).toString();\n return h;\n }\n\n /// return random string, consists of \"s\" + 128 lowercase hex digits\n /// Example: const s = Ft.randomStr();\n static randomStr(): string\n {\n let s = \"s\" + sha512( Ft.dtmNow() + Math.random() ).toString();\n return s;\n }\n\n /// return random int between 0 .. 10000\n /// Example const i = Ft.randomInt();\n static randomInt(): number\n {\n return Math.floor( Math.random() * 10000 );\n }\n\n /// return random sha256 string, 64 lowercase hex digits\n /// Example: const s = Ft.randomStr(); \n static randomSha256(): string\n {\n let s = sha256( Ft.dtmNow() + Math.random() ).toString();\n return s;\n } \n\n /// Convert array[object] to id-based object dictionary\n ///\n /// array [objArr] Object array to convert, [ { : , .. }, .. ]\n /// object [return] Result dictionary object: { : , .. }\n ///\n /// Example:\n /// let dict = Ft.objArrToIdObjs( objArr );\n /// then:\n /// let obj = dict[id]; // fast access by id\n static objArrToIdObjs( objArr: any[], fldId: string = 'id' ): any\n {\n const dictLookup: any = {};\n for ( let i in objArr )\n dictLookup[objArr[i][fldId]] = objArr[i];\n return dictLookup;\n }\n\n /// Convert array[object] to id/name object array\n ///\n /// array [objArr] Object array to convert, each object must contain id field, [ { : , : , .. }, .. ]\n /// string [fldId] Field in objArr to use as id field\n /// string [fldName] Field in objArr to use as 'name' field\n /// object [return] Result id/name array: [ { id: , name: }, .. ]\n ///\n /// Example:\n /// let arrIdName = Ft.objArrToIdName( objArr, 'id', 'my_field' );\n /// then:\n /// let objIdName = arrIdName[idx].name;\n static objArrToIdName( objArr: any[], fldId: string = 'id', fldName: string = 'name' ): any\n {\n const arr = [];\n for ( let i in objArr )\n arr.push( { id: objArr[i][fldId], name: objArr[i][fldName] } );\n return arr;\n }\n\n /// Convert array[object] to id/value object dictionary\n ///\n /// array [objArr] Object array to convert, each object must contain id field, [ { : , : , .. }, .. ]\n /// string [fldId] Field in objArr to use as id field\n /// string [fldName] Field in objArr to use as 'name' field\n /// object [return] Result id/name dictionary object: { : , .. }\n ///\n /// Example:\n /// let dict = Ft.objArrToIdVal( objArr, 'id', 'name' );\n /// then:\n /// let idNameObj = dict[id]; // fast look up\n static objArrToIdVal( objArr: any[], fldId: string = 'id', fldName: string = 'name' ): any\n {\n const dict: any = {};\n for ( let i in objArr )\n dict[objArr[i][fldId]] = objArr[i][fldName];\n return dict;\n }\n\n /// Fetch first defined and non-null argument from provided options\n ///\n static fetchArg(\n arg1: any|null = null,\n arg2: any|null = null,\n arg3: any|null = null,\n arg4: any|null = null,\n arg5: any|null = null,\n arg6: any|null = null\n ): any|null\n {\n if ( arg1 !== undefined && arg1 !== null ) return arg1;\n if ( arg2 !== undefined && arg2 !== null ) return arg2;\n if ( arg3 !== undefined && arg3 !== null ) return arg3;\n if ( arg4 !== undefined && arg4 !== null ) return arg4;\n if ( arg5 !== undefined && arg5 !== null ) return arg5;\n if ( arg6 !== undefined && arg6 !== null ) return arg6;\n return undefined;\n }\n\n /// Pad a to len characters using c, left align\n ///\n /// mixed [a] argument to convert to string and pad to len\n /// int [len] total length after padding\n /// string [c] string to pad with\n /// string [returns] Padding string\n ///\n /// Example: let s = Ft.strPadL( n, 5 );\n static strPadL( a: any, len: number, c: string = ' '): string\n {\n const s = a.toString();\n const padLen = len - s.length;\n const ret = ( padLen > 0 )\n ? s + c.repeat( padLen )\n : s.substr( 0, len );\n return ret;\n }\n\n /// Pad a to len characters using c, right align\n ///\n /// mixed [a] argument to convert to string and pad to len\n /// int [len] total length after padding\n /// string [c] string to pad with\n /// string [returns] Padding string\n ///\n /// Example: let s = Ft.strPadR( n, 5 );\n static strPadR( a: any, len: number, c: string = ' '): string\n {\n const s = a.toString();\n const padLen = len - s.length;\n const ret = ( padLen > 0 )\n ? c.repeat( padLen ) + s\n : s.substring( s.length - len, s.length );\n return ret;\n }\n\n /// Pad a to len characters using c, center align\n ///\n /// mixed [a] argument to convert to string and pad to len\n /// int [len] total length after padding\n /// string [c] string to pad with\n /// string [returns] Padding string\n ///\n /// Example: let s = Ft.strPadC( n, 5 );\n static strPadC( a: any, len: number, c: string = ' '): string\n {\n const s = a.toString();\n const padLen = len - s.length;\n const ret = ( padLen > 0 )\n ? c.repeat( padLen / 2 ) + s + c.repeat( padLen - padLen / 2 )\n : s.substr( ( s.length - len ) / 2, ( s.length - len ) / 2 + len - ( s.length - len ) / 2 + 1 );\n return ret;\n }\n\n /// Pad num to len characters using c, right align, c default 0\n ///\n /// mixed [num] argument to convert to string and pad to len\n /// int [len] total length after padding\n /// string [c] string to pad with\n /// string [returns] Padding string\n ///\n /// Example: let s = Ft.strPadNum( n, 5 );\n static strPadNum( num: any, len: number, c: string = '0' ): string\n {\n return this.strPadR( num, len, c );\n }\n\n /// Test if str contains search, case-insensitive\n ///\n /// string [str] String to search in, return false if empty\n /// string [search] String to search for, return true if empty\n /// bool [return] True if search found in str\n ///\n /// Example: let found = Ft.strContainsCi( str, search );\n static strContainsCi( str: string, search: string ): boolean\n {\n if ( Ft.e( str ) ) return false;\n if ( Ft.e( search ) ) return true;\n return str.toLowerCase().includes( search.toLowerCase() );\n }\n\n /// Parse text descriptor string into properties object\n ///\n /// string [textDescr] Text style descriptor, eg. '24,O#ff0099cc;Roboto', see below\n /// object [return] Text component props, see below\n ///\n /// Style descriptor:\n /// ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n ///\n /// Text component props (all optional):\n /// obj = {\n /// style: {\n /// fontSize: ..,\n /// flexWrap: ..,\n /// fontWeight: ..,\n /// fontStyle: ..,\n /// textDecorationLine: ..,\n /// textAlign: ..,\n /// color: ..,\n /// fontFamily: ..,\n /// }\n /// };\n ///\n /// Example: const txtProps = Ft.parseTextDescrAlign( '24,O#0099cc;Roboto' );\n ///\n static parseTextDescrAlign( textDescr: string|undefined ): any\n {\n if ( textDescr == undefined ) return {};\n const ptnDecode\n = '^ *(|[\\\\d\\\\.]+) *' // 1= fontSize\n + '(|, *(|[\\\\w]+)' // 3= styles\n + '(|#[\\\\w]+) *' // 4= color\n + '(|; *(|[\\\\w \\\\-]+))) *$'; // 6= fontFamily\n const ms = Ft.regMatch( textDescr, ptnDecode );\n if ( ms == null || Ft.e( ms ) ) return {};\n\n const ret: any = { style: {} };\n if ( !Ft.e( ms[1] ) ) ret.style.fontSize = parseInt( ms[1] ); // 1= fontSize\n\n if ( !Ft.e( ms[3] ) ) { // 3= styles\n const msStyles = ms[3].toUpperCase();\n if ( msStyles.includes( 'W' )) {\n ret.style.flexWrap = 'wrap';\n } else {\n ret.numberOfLines = 1;\n ret.style.flexWrap = 'nowrap';\n }\n if ( msStyles.includes( 'O' ) ) ret.style.fontWeight = 'bold';\n if ( msStyles.includes( 'B' ) ) ret.style.fontWeight = 'bold';\n if ( msStyles.includes( 'I' ) ) ret.style.fontStyle = 'italic';\n if ( msStyles.includes( 'U' ) ) ret.style.textDecorationLine = 'underline';\n if ( msStyles.includes( 'L' ) ) ret.style.textAlign = 'left';\n if ( msStyles.includes( 'C' ) ) ret.style.textAlign = 'center';\n if ( msStyles.includes( 'R' ) ) ret.style.textAlign = 'right';\n if ( msStyles.includes( 'J' ) ) ret.style.textAlign = 'justify';\n }\n\n if ( !Ft.e( ms[4] ) ) ret.style.color = ms[4]; // 4= color\n if ( !Ft.e( ms[6] ) ) ret.style.fontFamily = ms[6]; // 6= fontFamily\n\n return ret;\n }\n\n /// Parse text descriptor string into properties object for charts\n ///\n /// string [textDescr] Text style descriptor, eg. '24,O#ff0099cc;Roboto', see below\n /// object [return] Text component props, see below\n ///\n /// Style descriptor:\n /// ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, color=#XXXXXXXX, font=name\n ///\n /// Text component props, all optional:\n /// obj = {\n /// fontSize: number,\n /// fontName: name,\n /// bold: bool,\n /// italic: bool,\n /// color: string,\n /// };\n ///\n /// Example: const txtProps = Ft.parseTextDescrChart( '24,O#0099cc;Roboto' );\n ///\n static parseTextDescrChart( textDescr: string|undefined ): any\n {\n if ( textDescr == undefined ) return {} as any;\n const ptnDecode\n = '^ *(|[\\\\d\\\\.]+) *' // 1= fontSize\n + '(|, *(|[\\\\w]+)' // 3= styles\n + '(|#[\\\\w]+) *' // 4= color\n + '(|; *(|[\\\\w \\\\-]+))) *$'; // 6= fontName\n const ms = Ft.regMatch( textDescr, ptnDecode );\n if ( ms == null || Ft.e( ms ) ) return {};\n\n const ret: any = {};\n if ( !Ft.e( ms[1] ) ) ret.fontSize = parseInt( ms[1] ); // 1= fontSize\n\n if ( !Ft.e( ms[3] ) ) { // 3= styles\n const msStyles = ms[3].toUpperCase();\n if ( msStyles.includes( 'O' ) ) ret.bold = true;\n if ( msStyles.includes( 'B' ) ) ret.bold = true;\n if ( msStyles.includes( 'I' ) ) ret.italic = true;\n }\n\n if ( !Ft.e( ms[4] ) ) ret.color = ms[4]; // 4= color\n if ( !Ft.e( ms[6] ) ) ret.fontName = ms[6]; // 6= fontName\n\n return ret;\n }\n\n /// Parse icon descriptor string into properties object\n ///\n /// String [iconDescr] Icon descriptor, eg. '24,#ff0099cc;fa-home', see below\n /// int [index] Index of icon to use (0 - 4)\n ///\n /// Icon Descriptor:\n /// - ,;[;icon1;icon2;..]\n /// - size= icon-size, color= #XXXXXXXX, icon= icon-name, icon1= icon-name-index1, icon2= icon-name-index2, ..\n /// - icon names: https://icons.expo.fyi/\n /// - - ad-* : AntDesign\n /// - - fa-* : FontAwesome\n /// - - ii-* : Ionicons\n /// - - mc-* : MaterialCommunityIcons\n /// - '24,#0099cc;fa-home'\n /// - '24,#0099cc;fa-chevron-right;fa-chevron-down'\n ///\n /// Example: const obj = Ft.parseIconDescr( '24,#ff0099cc;home' );\n static parseIconDescr( iconDescr?: string, index: number = 0 ): any\n {\n if ( iconDescr == undefined ) return {};\n const ptnDecode\n = \"^ *(|[\\\\d\\\\.]+)\" // 1 = fontSize\n + \" *, *(|[\\\\w]+)(|#[\\\\w]+)\" // 3 = color\n + \" *(; *(|[\\\\w \\\\-]+)|)\" // 5 = icon name index 0\n + \" *(; *(|[\\\\w \\\\-]+)|)\" // 7 = icon name index 1\n + \" *(; *(|[\\\\w \\\\-]+)|)\" // 9 = icon name index 2\n + \" *(; *(|[\\\\w \\\\-]+)|)\" // 11 = icon name index 3\n + \" *(; *(|[\\\\w \\\\-]+)|) *$\"; // 13 = icon name index 4\n const ms = Ft.regMatch( iconDescr, ptnDecode );\n if ( ms == null || Ft.e( ms ) ) return {};\n\n //- decode name -----\n const fullName = ms[ ( index ?? 0 ) * 2 + 5 ];\n const baseName = fullName.substring( 3 );\n const libName = fullName.substring( 0, 2 );\n\n //- compose return -----\n const ret = {\n name: baseName,\n lib: libName,\n size: parseInt( ms[1] ),\n color: ms[3],\n };\n return ret;\n }\n\n /// Convenience function to split descr sides descriptor into ints object\n ///\n /// string [descr] string to split by: or or \n /// object [return] { a, h, v, t, r, l, b }\n ///\n /// example: const sides = {...Ft.parseSidesDescr(descr)};\n static parseSidesDescr( descr: string ): any\n {\n //- regex patterns -----\n const ptnSides\n = '^(' // alt open\n + '(\\\\d+)' // alt: 2= all\n + '|((\\\\d+),(\\\\d+))' // alt: 4= hor, 5= ver\n + '|((\\\\d+),(\\\\d+),(\\\\d+),(\\\\d+))' // alt: 7= top, 8= right, 9= bottom, 10= left\n + ')$'; // alt close\n\n //- parse -----\n const res = Ft.regMatch( descr, ptnSides );\n if ( res == null || Ft.e( res ) ) return {};\n\n //- decode -----\n const resA = res[2];\n const resH = res[4];\n const resV = res[5];\n const resT = res[7];\n const resR = res[8];\n const resB = res[9];\n const resL = res[10];\n if ( Ft.isDef( resA ) ) {\n return { a: parseInt( resA ) };\n } else if ( Ft.isDef( resH ) ) {\n return { h: parseInt( resH ), v: parseInt( resV ) };\n } else if ( Ft.isDef( resT ) ) {\n return {\n t: parseInt( resT ),\n r: parseInt( resR ),\n b: parseInt( resB ),\n l: parseInt( resL )\n };\n }\n return {};\n }\n\n /// Parse padding arguments: pad, padT, padR, padB, padL\n ///\n /// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n /// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n /// spec both object any of above specification properties as single object {} see above, specifying above will override this object\n ///\n /// int/array/string [pad] Padding descriptor\n /// int/string [padT] Padding top descriptor\n /// int/string [padL] Padding left descriptor\n /// int/string [padB] Padding bottom descriptor\n /// int/string [padR] Padding right descriptor\n /// object [return] Style object with set values\n ///\n static parsePadding(\n pad: number|number[]|string|undefined,\n padT: number|string|undefined,\n padR: number|string|undefined,\n padB: number|string|undefined,\n padL: number|string|undefined,\n spec?: any\n ): any\n {\n const argPad: any = Ft.fetchArg( pad, spec?.pad );\n const argT: any = Ft.fetchArg( padT, spec?.padT );\n const argL: any = Ft.fetchArg( padL, spec?.padL );\n const argR: any = Ft.fetchArg( padR, spec?.padR );\n const argB: any = Ft.fetchArg( padB, spec?.padB );\n\n const ret: any = {}; // style object\n\n //- handle argPad -----\n if ( Ft.isNum( argPad ) ) {\n ret.padding = argPad;\n } else if ( Ft.isArr( argPad ) ) {\n if ( argPad.length == 1 ) {\n ret.padding = argPad[0];\n } else if ( argPad.length == 2 ) {\n ret.paddingLeft = argPad[0];\n ret.paddingRight = argPad[0];\n ret.paddingTop = argPad[1];\n ret.paddingBottom = argPad[1];\n } else if ( argPad.length == 4 ) {\n ret.paddingTop = argPad[0];\n ret.paddingRight = argPad[2];\n ret.paddingBottom = argPad[3];\n ret.paddingLeft = argPad[4];\n }\n } else if ( Ft.isStr( argPad ) ) {\n const sides = {...Ft.parseSidesDescr(argPad)};\n if ( !Ft.e( sides ) ) {\n if ( Ft.isDef( sides.a ) ) {\n ret.padding = sides.a;\n } else if ( Ft.isDef( sides.h ) ) {\n ret.paddingLeft = sides.h;\n ret.paddingRight = sides.h;\n ret.paddingTop = sides.v;\n ret.paddingBottom = sides.v;\n } else if ( Ft.isDef( sides.t ) ) {\n ret.paddingTop = sides.t;\n ret.paddingRight = sides.r;\n ret.paddingBottom = sides.b;\n ret.paddingLeft = sides.l;\n }\n }\n }\n\n //- handle individual sides -----\n if ( Ft.isDef( argT ) ) ret.paddingTop = parseInt( argT );\n if ( Ft.isDef( argL ) ) ret.paddingLeft = parseInt( argL );\n if ( Ft.isDef( argR ) ) ret.paddingRight = parseInt( argR );\n if ( Ft.isDef( argB ) ) ret.paddingBottom = parseInt( argB );\n\n return ret;\n }\n\n /// Parse border descriptor into styles object\n ///\n /// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n /// bor self int/array/string Border descriptor, all sides only 0 ',;'\n /// spec both object any of above specification properties as single object {} see above, specifying above will override this object\n ///\n /// int/array/string [bor] Border descriptor, all sides only, ',;'\n /// object [spec] General spec object containing 'bor' property\n /// object [return] Style object containing border styling\n ///\n static parseBorderDescr( bor: number|number[]|string|undefined, spec?: any ): any\n {\n const ret: any = {};\n const arg = Ft.fetchArg( bor, spec?.bor );\n\n if ( Ft.e( arg ) ) return ret;\n if ( Ft.isNum( arg ) ) { // thickness only\n ret.borderWidth = arg;\n } else if ( Ft.isArr( arg ) ) { // array [ , , ]\n if ( arg.length < 1 ) return ret; // empty\n if ( arg.length < 2 ) // thickness\n ret.borderWidth = parseInt( arg[0] );\n if ( arg.length < 3 ) // colour\n ret.borderColor = arg[1];\n if ( arg.length < 4 ) // round\n ret.borderRadius = parseInt( arg[2] );\n } else if ( Ft.isStr( arg ) ) { // string ',;'\n //- regex patterns -----\n const ptn\n = '^'\n + '(\\\\d+)' // \n + '(,([#0-9a-fA-F]+))?' // ,\n + '(;(\\\\d+))?' // ;\n + '$';\n const [ dummy1, w, dummy2, clr, dummy3, rad ] = Ft.regMatch( arg, ptn ) ?? []; // regex parse arg into [w, clr, rad]\n if ( !Ft.e( w ) ) ret.borderWidth = parseInt( w );\n if ( !Ft.e( clr ) ) ret.borderColor = clr;\n if ( !Ft.e( rad ) ) ret.borderRadius = parseInt( rad );\n }\n\n return ret;\n }\n\n /// Translate Align/Justify/Direction strings to expanded values\n ///\n /// string [str] Input shorthand string\n /// string [return] Expanded/translated string\n ///\n static translateAlignJustDir( str: string|null ): string|null\n {\n const strLc = str?.toLowerCase();\n switch ( strLc ) {\n case 'column':\n case 'col':\n return 'column';\n case 'col-rev':\n case 'column-reverse':\n return 'column-reverse';\n case 'row-reverse':\n case 'row-rev':\n return 'row-reverse';\n case 'flex-start':\n case 'start':\n case 'A':\n case 'a':\n return 'flex-start';\n case 'flex-end':\n case 'end':\n case 'Z':\n case 'z':\n return 'flex-end';\n case 'center':\n case 'C':\n case 'c':\n return 'center';\n case 'base':\n case 'baseline':\n return 'baseline';\n case 'between':\n case 'space-between':\n return 'space-between';\n case 'around':\n case 'space-around':\n return 'space-around';\n case 'even':\n case 'space-evenly':\n return 'space-evenly';\n case 'row':\n case 'stretch':\n return strLc;\n }\n return null;\n }\n\n /// Parse dir (flex-direction)\n /// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n /// dir children string main flow direction ? column|col|column-reverse|col-rev|row|row-reverse|row-rev\n /// spec both object any of above specification properties as single object {} see above, specifying above will override this object\n ///\n /// object [return] Style object containing flexDirection\n /// PROBABLY OBSOLETE\n static parseDir( dir?: string, spec?: any ): any\n {\n const ret: any = {};\n const arg = Ft.fetchArg( dir, spec?.dir );\n\n if ( !Ft.e( arg ) ) ret.flexDirection = Ft.translateAlignJustDir( arg );\n return ret;\n }\n\n /// Parse wrap (flex-wrap)\n ///\n /// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n /// wrap children int/bool allow children to wrap true 0/1/false/true\n /// spec both object any of above specification properties as single object {} see above, specifying above will override this object\n ///\n /// object [return] Styling object\n ///\n /// PROBABLY OBSOLETE\n static parseWrap( wrap?: number|boolean, spec?: any ): any\n {\n const arg = Ft.fetchArg( wrap, spec?.wrap );\n\n if ( Ft.e( arg ) || Ft.isDefFalse( arg ) ) return {};\n return { flexWrap: 'wrap' };\n }\n\n /// Parse mode and layout (justify-content, align-items, align-content)\n ///\n /// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n /// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n /// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n ///\n /// DECODING RULES:\n /// if dir == row: // dir=row conditions\n /// - set justifyContent from main-axis\n /// - set alignItems from cross-axis\n /// else: // dir=col conditions\n /// - set justifyContent from main-axis\n /// - set alignItems & alignContent from cross-axis\n ///\n /// string? [md] Layout mode\n /// string? [lt] Layout\n /// any [return] Parsed mode and layout properties\n static parseLayout( md?: string|null, lt?: string|null ): any\n {\n if ( md == undefined || Ft.e( md ) ) return; // if md not set, don't bother setting anything else\n\n //- decode flex-direction -----\n const loMd = md.toLowerCase();\n let dir: any = { display: 'flex' };\n let isCol: boolean = false; // keep track if direction is column mode for special cases in layout later\n if ( loMd.includes( \"ar\" ) ) dir.flexDirection = 'row-reverse';\n else if ( loMd.includes( \"ac\" ) ) {\n dir.flexDirection = 'column-reverse';\n isCol = true;\n } else if ( loMd.includes( \"r\" ) ) dir.flexDirection = 'row';\n else if ( loMd.includes( \"c\" ) ) {\n dir.flexDirection = 'column';\n isCol = true;\n }\n\n //- decode flex-wrap -----\n const wrap: any = loMd.includes( 'w' ) ? { flexWrap: 'wrap' } : {};\n\n //- check special case -----\n if ( lt == undefined || Ft.e( lt ) )\n return !isCol ? { ...dir, ...wrap, alignContent: 'flex-start' }: { ...dir, ...wrap };\n\n //- parse lt -----\n const [ main, cross ] = lt.toLowerCase().split( ',' ) ?? [];\n const props: any = {};\n if ( !Ft.e( main ) ) {\n if ( main.includes( 'a' ) ) props.justifyContent = 'flex-start';\n else if ( main.includes( 'c' ) ) props.justifyContent = 'center';\n else if ( main.includes( 'z' ) ) props.justifyContent = 'flex-end';\n else if ( main.includes( 'b' ) ) props.justifyContent = 'space-between';\n else if ( main.includes( 'e' ) ) props.justifyContent = 'space-evenly';\n }\n if ( !isCol ) props.alignContent = 'flex-start';\n if ( !Ft.e( cross ) ) {\n if ( cross.includes( 'a' ) ) {\n props.alignItems = 'flex-start';\n if ( isCol ) props.alignContent = 'flex-start';\n } else if ( cross.includes( 'c' ) ) {\n props.alignItems = 'center';\n if ( isCol ) props.alignContent = 'center';\n } else if ( cross.includes( 'z' ) ) {\n props.alignItems = 'flex-end';\n if ( isCol ) props.alignContent = 'flex-end';\n } else if ( cross.includes( 's' ) ) {\n props.alignItems = 'stretch';\n if ( isCol ) props.alignContent = 'stretch';\n }\n }\n\n //- merge and return -----\n return { ...dir, ...wrap, ...props };\n }\n\n /// Parse gap\n ///\n /// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n /// gap children string gap between children, responsive, see below - '' or ','\n ///\n /// string? [gap] Gap spec\n /// any [return] Parsed gap properties\n static parseGap( gap?: string|null ): any\n {\n if ( gap == undefined || Ft.e( gap ) ) return;\n\n //- parse gap -----\n const props: any = {};\n if ( !gap.includes( ',' ) ) {\n props.gap = `${gap}px`;\n } else {\n const [ col, row ] = gap.split( ',' ) ?? [];\n if ( !Ft.e( col ) ) props.columnGap = `${col}px`;\n if ( !Ft.e( row ) ) props.rowGap = `${row}px`;\n }\n\n return props;\n }\n\n /// Parse justification (justify-content / alignContent)\n ///\n /// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n /// just children string '
,' direction justify ? flex-start|start|A|flex-end|end|Z|center|C|between|around|even\n /// justM children string '
' direction justify start/end flex-start|start|A|flex-end|end|Z|center|C|between|around|even\n /// justC children string '' direction justify ? flex-start|start|A|flex-end|end|Z|center|C|between|around|even\n /// spec both object any of above specification properties as single object {} see above, specifying above will override this object\n ///\n /// object [return] Style object\n ///\n /// PROBABLY OBSOLETE\n static parseJustify( just: string|undefined, justM: string|undefined, justC: string|undefined, spec?: any ): any\n {\n const argJust = Ft.fetchArg( just, spec?.just );\n const argJustM = Ft.fetchArg( justM, spec?.justM );\n const argJustC = Ft.fetchArg( justC, spec?.justC );\n const ret: any = {};\n\n if ( !Ft.e( argJust ) && Ft.isStr( argJust ) ) {\n const [ main, cross ] = argJust.split( ',' ) ?? [];\n if ( !Ft.e( main ) ) ret.justifyContent = Ft.translateAlignJustDir( main );\n if ( !Ft.e( cross ) ) ret.alignContent = Ft.translateAlignJustDir( cross );\n }\n\n if ( !Ft.e( argJustM ) && Ft.isStr( argJustM ) )\n ret.justifyContent = Ft.translateAlignJustDir( argJustM );\n if ( !Ft.e( argJustC ) && Ft.isStr( argJustC ) )\n ret.alignContent = Ft.translateAlignJustDir( argJustC );\n return ret;\n }\n\n /// Parse align (alignItems)\n ///\n /// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n /// align children string cross direction alignment of children start stretch|flex-start|start|A|flex-end|end|Z|center|base|baseline\n /// spec both object any of above specification properties as single object {} see above, specifying above will override this object\n ///\n /// object [return] Style object\n ///\n /// PROBABLY OBSOLETE\n static parseAlign( align?: string, spec?: any ): any\n {\n const arg = Ft.fetchArg( align, spec?.align );\n\n if ( Ft.e( arg ) || !Ft.isStr( arg ) ) return {};\n return { alignItems: Ft.translateAlignJustDir( arg ) };\n }\n\n /// Open URL in browser or new tab if on web platform\n ///\n /// string [url] Url to open, may include url parameters\n /// object [args] Optional arguments to add to url\n ///\n /// Examples:\n /// Ft.openUrl( 'https://www.mydomain.com' );\n /// Ft.openUrl( 'https://www.mydomain.com', {\n /// parm1: 'val1',\n /// ..\n /// });\n static openUrl( url: string, args: any = {} ): void\n {\n //- encode urlParms -----\n let urlParms = '';\n for ( let parmKey in args ) // safely transport url parms\n urlParms\n += ( !Ft.e( urlParms ) ? '&' : '' )\n + parmKey + '=' + encodeURIComponent( args[parmKey] );\n let fullUrl = url;\n if ( !Ft.e( urlParms ) ) fullUrl += ( fullUrl.includes( '?' ) ? '&' : '?' ) + urlParms;\n //- open url -----\n if ( Platform.OS == 'web' ) window.open( fullUrl, '_blank' );\n else Linking.openURL( fullUrl );\n }\n\n /// Make nav object with shorthand navigation features\n ///\n /// Navigation [navigation] Navigation prop, see https://reactnavigation.org/docs/stack-navigator/\n /// object [return] Navigation shorthands as object\n ///\n /// Example: setup:\n /// include { navigation } in component arguments\n /// const nav = Ft.useNav( navigation );\n ///\n /// Example usage:\n /// nav.params // parameters object passed to this component, may be from calling (parent) or called (child) component\n /// nav.pntName // Name of calling/parent route\n /// nav.push( 'Name', myParams ); // preserve current page and push Name on navigation stack\n /// nav.replace( 'Name', myParams ); // replace current page with Name in navigation stack\n /// nav.pop(); // pop current page from navigation stack\n /// nav.pop( { myparm: 123 }); // pop current page from navigation stack and pass parameters to parent\n /// nav.popAll(); // pop all pages until only one remains\n /// nav.popAllTo( 'Name', myParams ); // pop all pages until only one remains, then replace that one with Name\n /// if ( nav.canPop() ) .. // check if it can pop the current page, ie if there are more than one page on navigation stack\n ///\n /// myParams:\n /// - access params in target component's route prop, eg:\n /// export default function MyComponent( { navigation, options }: FtPageProps ): JSX.Element {\n /// const nav = Ft.useNav( navigation );\n /// const { myParam1, myParam2 } = nav.params ?? { myParam1: defaultValue, myParam2: defaultValue };\n ///\n static useNav( navigation: FtNavigationType ): FtNavigator\n {\n //- prep values -----\n const state = navigation.getState();\n const pntName = state?.index > 0 ? state?.routes[state?.index - 1]?.name : undefined; // parent state name or undefined\n const params = state?.routes[state?.index]?.params; // current params or undefined\n\n //- compose nav object -----\n const navObj: FtNavigator = {\n params: params,\n pntName: pntName,\n isFocused: useIsFocused(),\n push: ( target: string, params: any ): void => navigation.push( target, params ),\n replace: ( target: string, params: any ): void => navigation.replace( target, params ),\n pop: Ft.e( pntName )\n ? (): void => { if ( navigation.canGoBack() ) navigation.pop(); }\n : ( prm: any ): void => navigation.navigate({ name: pntName, params: prm, merge: true }),\n popAll: (): void => navigation.popToTop(),\n popAllTo: ( target: string, prm: any ): void => navigation.reset({ index: 0, routes: [{ name: target, params: prm }] }),\n canPop: (): boolean => navigation.canGoBack(),\n listenFocus: ( handler: () => void ): void => { navigation.addListener( 'focus', handler ); }\n };\n return navObj;\n }\n\n /// Hook for handling when page gets focus\n ///\n /// Example:\n /// useNavFocus(()=>{\n /// ..doSomethingWithNav..\n /// });\n ///\n static useNavFocus( callback: () => void ): void\n {\n useFocusEffect( () => callback() );\n }\n\n /// Make pretty of version number\n /// Eg. '010203' > '1.2.3'\n ///\n /// string [strVer] Input version string, eg '010203'\n /// string [return] Output version string, eg '1.2.3'\n static prettyVersion( strVer: string ): string\n {\n if ( Ft.e( strVer ) ) return '0.0.0';\n\n const verATxt = strVer.substring( 0, 2 );\n const verBTxt = strVer.substring( 2, 4 );\n const verCTxt = strVer.substring( 4, 6 );\n const verAInt = parseInt( verATxt );\n const verBInt = parseInt( verBTxt );\n const verCInt = parseInt( verCTxt );\n const ver = `${verAInt}.${verBInt}.${verCInt}`;\n return ver;\n }\n\n /// Make pretty of version number, extended\n /// Eg. '001200340056' > '12.34.56'\n ///\n /// string [strVer] Input version string, eg '001200340056'\n /// string [return] Output version string, eg '12.34.56'\n static prettyVersionExt( strVer: string ): string\n {\n if ( Ft.e( strVer ) ) return '0.0.0';\n\n const verATxt = strVer.substring( 0, 4 );\n const verBTxt = strVer.substring( 4, 8 );\n const verCTxt = strVer.substring( 8, 12 );\n const verAInt = parseInt( verATxt );\n const verBInt = parseInt( verBTxt );\n const verCInt = parseInt( verCTxt );\n const ver = `${verAInt}.${verBInt}.${verCInt}`;\n return ver;\n }\n\n /// Generate a show list for src\n /// Show list is a list of bools which indicate the show/hide status of each item in src\n ///\n /// List [src] Source list\n /// bool [init] Value to initialize to\n /// List [return] Generated list\n ///\n /// Example: const showList = Ft.genShowList( src );\n static genShowList( src: any[]|null, init: boolean = false ): any[]\n {\n if ( src == null || !Ft.isArr( src ) ) return [];\n const ret = Array( src.length ).fill( init );\n return ret;\n }\n\n /// Shorthand to set Decimal( 0 )\n ///\n /// Example: const a = D0();\n static D0(): Decimal\n {\n return new Decimal( 0 );\n }\n\n /// Shorthand to set Decimal( 1 )\n ///\n /// Example: const a = D1();\n static D1(): Decimal\n {\n return new Decimal( 1 );\n }\n\n /// Shorthand to set parse string into new Decimal\n ///\n /// Example: const a = D( '12.3' );\n static D( v: string ): Decimal\n {\n return new Decimal( v );\n }\n\n /// Convenience method to convert decimal to string rounded to 0 decimal places\n ///\n /// Decimal [d] Decimal obj to convert\n /// string [return] Converted decimal\n ///\n /// Example: const s = Ft.dec0( d );\n static dec0( d: Decimal|null|undefined ): string\n {\n if ( !Decimal.isDecimal( d ) ) return '0';\n return d.toDecimalPlaces( 0 ).toString();\n }\n\n /// Convenience method to convert decimal to string rounded to 1 decimal place\n ///\n /// Decimal [d] Decimal obj to convert\n /// string [return] Converted decimal\n ///\n /// Example: const s = Ft.dec1( d );\n static dec1( d: Decimal|null|undefined ): string\n {\n if ( !Decimal.isDecimal( d ) ) return '0.0';\n return d.toDecimalPlaces( 1 ).toString();\n }\n\n /// Convenience method to convert decimal to string rounded to 2 decimal places\n ///\n /// Decimal [d] Decimal obj to convert\n /// string [return] Converted decimal\n ///\n /// Example: const s = Ft.dec2( d );\n static dec2( d: Decimal|null|undefined ): string\n {\n if ( !Decimal.isDecimal( d ) ) return '0.00';\n return d.toDecimalPlaces( 2 ).toString();\n }\n\n /// Convenience method to convert decimal to string rounded to 3 decimal places\n ///\n /// Decimal [d] Decimal obj to convert\n /// string [return] Converted decimal\n ///\n /// Example: const s = Ft.dec3( d );\n static dec3( d: Decimal|null|undefined ): string\n {\n if ( !Decimal.isDecimal( d ) ) return '0.000';\n return d.toDecimalPlaces( 3 ).toString();\n }\n\n /// Compare d1 with d2 for equality\n /// If d1 or d2 is null/undefined returns false\n ///\n /// Decimal|null|undefined [d1] First decimal\n /// Decimal|null|undefined [d2] Second decimal\n /// boolean [return] True if d1 and d2 are Decimals and have equal value\n static decEq( d1: Decimal|null|undefined, d2: Decimal|null|undefined ): boolean\n {\n if ( d1 == null || d1 == undefined ) return false;\n if ( d2 == null || d2 == undefined ) return false;\n return d1.eq( d2 );\n }\n\n /// Compare n1 with n2 for equality\n /// If n1 or n2 is null/undefined returns false\n ///\n /// number|null|undefined [n1] First decimal\n /// number|null|undefined [n2] Second decimal\n /// boolean [return] True if n1 and n2 are Decimals and have equal value\n static numEq( n1: number|null|undefined, n2: number|null|undefined ): boolean\n {\n if ( n1 == null || n1 == undefined ) return false;\n if ( n2 == null || n2 == undefined ) return false;\n return n1 == n2;\n }\n\n /// Convert object/array to compact json string then encode to base64\n /// Steps : obj > json > utf8ba > base64\n ///\n /// Object/Array [pData] Data to convert\n /// string [returns] JSON-Base64 string\n static objToJsonBase64( pData: any ): string\n {\n return base64.fromByteArray( new TextEncoder().encode( JSON.stringify( pData ) ) );\n }\n\n /// Convert json-base64 string to object/array\n /// Steps: base64 > utf8ba > json > obj\n ///\n /// string [pJsonB64] JSON-Base64 string\n /// Object/Array [returns] Converted data\n static jsonBase64ToObj( pJsonB64: string ): any\n {\n const json = pJsonB64 != null ? new TextDecoder().decode( base64.toByteArray( pJsonB64 ) ) : \"\";\n return JSON.parse( json );\n }\n\n /// Scroll window to top instantly if on web platform\n static webScrollTop(): void\n {\n if ( Platform.OS == 'web' ) window.scrollTo( { top: 0, behavior: 'instant' } as any );\n }\n\n /// Check if internet is available from app\n /// Promise [return] True if internet is available\n ///\n /// Examples:\n /// hasInternet().then( res => { _doSomething_ } ); // res is boolean\n /// const res = await hasInternet();\n static hasInternet(): Promise\n {\n return new Promise( ( resolve, reject ) =>\n NetInfo.fetch()\n .then( state => resolve( state.isConnected ?? false ) )\n .catch( error => resolve( false ) )\n );\n }\n\n /// Scale font size by pixelratio on mobile platforms\n /// number [fontSize] Font size to scale\n /// numner [return] Scaled font size\n ///\n /// Example: const fontSize = Ft.scaleFont( 24 );\n static scaleFont( fontSize: number ): number\n {\n if ( Platform.OS == 'web' ) return fontSize;\n const p1 = 0.974;\n const p2 = 400;\n const p3 = 230;\n const width = Dimensions.get( 'window' ).width;\n const fontScaler = p1 - ( ( p2 - width ) / p3 );\n const size = Math.round( fontSize * fontScaler );\n return size;\n }\n\n /// Parse responsive specifier\n /// This parser will decode the specifier against the display width and return the applicable specifier section\n ///\n /// resp formats:\n /// - - '||||'\n /// - - '|||'\n /// - - '||'\n /// - - '|'\n /// - - ''\n /// sizes (from Bootstrap4):\n /// - xs : extra small, phone, 0 - 575 logical pixels\n /// - sm : small, phone-landscape, 576 - 767 logical pixels\n /// - md : medium, tablet, 768 - 991 logical pixels\n /// - lg : large, laptop, 992 - 1199 logical pixels\n /// - xl : extra-large, desktop, 1200+ logical pixels\n ///\n /// string [resp] Responsive specifier, eg '12|34|56'\n /// ScaledSize [winDim] Window dimensions from useWindowDimensions()\n /// string [return] Responsive specifier section\n ///\n /// Example: const spec: string = Ft.parseResp( ss, winDim );\n static parseResp( resp: string|undefined|null, winDim: ScaledSize ): string|undefined|null\n {\n //- prechecks -----\n if ( resp == undefined || resp == null ) return resp;\n\n //- regex patterns -----\n const ptnPipes: string\n = '^'\n + '([\\\\w:,]+)' // xs\n + '(' // alt open\n + '(\\\\|([\\\\w:,]+))' // alt: |md\n + '|(\\\\|([\\\\w:,]+)\\\\|([\\\\w:,]+))' // alt: |md|lg\n + '|(\\\\|([\\\\w:,]+)\\\\|([\\\\w:,]+)\\\\|([\\\\w:,]+))' // alt: |sm|md|lg\n + '|(\\\\|([\\\\w:,]+)\\\\|([\\\\w:,]+)\\\\|([\\\\w:,]+)\\\\|([\\\\w:,]+))' // alt: |sm|md|lg|xl\n + ')?' // alt close\n + '$';\n\n //- parse ss into xs, sm, md, lg, xl -----\n const resA = Ft.regMatch( resp, ptnPipes ) ?? ( [] as string[] );\n const xs: string = resA ? resA[1] : '';\n let sm: string = resA ? ( resA[9] ?? '' ) + ( resA[13] ?? '' ) : '';\n let md: string = resA ? ( resA[4] ?? '' ) + ( resA[6] ?? '' ) + ( resA[10] ?? '' ) + ( resA[14] ?? '' ) : '';\n let lg: string = resA ? ( resA[7] ?? '' ) + ( resA[11] ?? '' ) + ( resA[15] ?? '' ) : '';\n let xl: string = resA ? ( resA[16] ?? '' ) : '';\n\n //- cascade sizes from smaller levels -----\n if ( Ft.e( sm ) ) sm = xs;\n if ( Ft.e( md ) ) md = sm;\n if ( Ft.e( lg ) ) lg = md;\n if ( Ft.e( xl ) ) xl = lg;\n\n //- determine what display set size to use -----\n if ( winDim.width < 576 ) return xs;\n else if ( winDim.width < 768 ) return sm;\n else if ( winDim.width < 992 ) return md;\n else if ( winDim.width < 1200 ) return lg;\n return xl;\n }\n\n /// Parse url string into FtPageUrl object\n /// Note: call this from App.tsx for earliest url detection\n ///\n /// string [url] url as received from useURL()\n /// FtPageUrl [returns] parsed object\n static parseUrl( url: string|null ): FtPageUrl\n {\n const ret: FtPageUrl = { base: null, parms: {} as any };\n const urlObj: URL|null = url != null ? new URL( url ) : null;\n if ( urlObj == null ) return ret;\n\n ret.base = urlObj?.origin ?? null;\n if ( urlObj != null )\n for ( const [ key, value ] of urlObj.searchParams )\n ret.parms[key] = value;\n\n return ret;\n }\n\n /// Return random key value as string based on current time and random value\n ///\n /// Example: \n ///\n static key(): string\n {\n return 'ftkey' + ( Math.floor( Date.now() / 1000 ) * 1000000 + Math.floor( Math.random() * 1000000 ) ).toString();\n }\n}\n","/// FIRST: Framework Insuring Rapid Systems Typing\r\n/// \r\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\r\n\r\nimport { PixelRatio } from 'react-native';\r\nimport AsyncStorage from '@react-native-async-storage/async-storage';\r\nimport Ft from './ft';\r\n\r\n//********************************************************************\r\n// FtAppInfo : manage app wide features, singleton\r\nexport default class FtAppInfo {\r\n \r\n //====================================================================\r\n // properties\r\n static version: string;\r\n static isDebug: boolean;\r\n static appId: string;\r\n static title: string;\r\n static baseUrlDebug: string;\r\n static baseUrlRelease: string;\r\n static baseUrl: string;\r\n static parms: string;\r\n static user_id: number = 0; // user_id if logged-in\r\n static lookups: any; // placeholder for app-wide lookups\r\n static prmStack: Map> = new Map(); // parameter stack, use to pass parameters between pages, see FtParm.stack*\r\n static fontScaler: number = 1; // scaler to adjust font sizes for different pixel densities\r\n\r\n //====================================================================\r\n // static api\r\n\r\n /// Initialize static members of class\r\n ///\r\n /// String [args.version] app version\r\n /// bool [args.isDebug] activate debugging parameters\r\n /// String [args.title] app title\r\n /// String [args.appId] Device-ID, set for debugging or load from localStorage\r\n /// String [args.baseUrlDebug] callSvr base url: debug mode : set like: FtAppInfo.baseUrl = \"http://www.mydomain.com/system/\";\r\n /// String [args.baseUrlRelease] callSvr base url: release mode: set like: FtAppInfo.baseUrl = \"http://www.mydomain.com/system/\";\r\n static async staticInit( args: any ): Promise\r\n {\r\n this.version = args.version;\r\n this.isDebug = args.isDebug;\r\n this.appId = this.isDebug ? args.appId : await this.getGenAppId();\r\n this.title = args.title;\r\n this.baseUrlDebug = args.baseUrlDebug;\r\n this.baseUrlRelease = args.baseUrlRelease;\r\n this.baseUrl = this.isDebug ? this.baseUrlDebug : this.baseUrlRelease;\r\n this.parms = this.isDebug\r\n ? `XDEBUG_SESSION_START=VSCODE&app_lid=${this.appId}`\r\n : `app_lid=${this.appId}`;\r\n this.fontScaler = 1 - ( 3.5 - PixelRatio.get() ) / 4; // At 3.5 scaler should be 1, scales down with pixel density \r\n }\r\n\r\n /// Fetch current App ID from localStorage, or generate+store if not exist\r\n static async getGenAppId(): Promise\r\n {\r\n let appId = await AsyncStorage.getItem( \"ft_auth_appid\" );\r\n if ( appId != null ) return appId;\r\n appId = Ft.sha512( 'ft_auth_appid' + Ft.dtmNow() );\r\n await AsyncStorage.setItem( 'ft_auth_appid', appId );\r\n return appId;\r\n }\r\n}\r\n","/// FIRST: Framework Insuring Rapid Systems Typing\r\n///\r\n/// Copyright (c) 2024 Jaco Bekker T/A LightSoft\r\nimport React from 'react';\r\nimport { useFonts } from 'expo-font';\r\nimport Ft from './ft';\r\n\r\n/// This is temp work-around for Expo v50 breaking React-Native-Paper navigation fonts\r\n/// It will only implement on web, mobile should not be affected\r\n///\r\n/// TODO: remove this component once font issue is resolved\r\n///\r\n/// Usage: \r\nexport default function FtFixIconFonts(): JSX.Element\r\n{\r\n return Ft.isWeb() ? () : (<>);\r\n}\r\n\r\nfunction FtiFixMatComIcons(): JSX.Element\r\n{\r\n const [fontsLoaded] = useFonts({ 'MaterialCommunityIcons': require('../../assets/MaterialCommunityIcons.ttf') }); // this is temp work-around for Expo v50 breaking React-Native-Paper navigation fonts\r\n\r\n return (<>);\r\n}","/// FIRST: Framework Insuring Rapid Systems Typing\r\n///\r\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\r\nimport React from 'react';\r\nimport { useURL } from \"expo-linking\";\r\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\r\nimport { NavigationContainer } from '@react-navigation/native';\r\nimport { createStackNavigator } from '@react-navigation/stack';\r\nimport { MD3Theme, Provider as PaperProvider } from 'react-native-paper';\r\nimport { FtNavScreenProps, FtPageUrl } from './ftTypes';\r\nimport FtFixIconFonts from './ftFixIconFonts';\r\n\r\nconst Stack = createStackNavigator();\r\n\r\n//********************************************************************\r\n// FtNavScreens : convenience component for stack navigation mapping\r\n//\r\n// FtNavScreenProps: each screen:\r\n// name : string : name to target page with nav.push etc\r\n// title : string : page title to display in navigation bar\r\n// comp : ( p: any ) => JSX.Element : component to render\r\n//\r\n// comp:\r\n//\r\n// Example:\r\n// return ( }\r\n// screens={[\r\n// { name: 'Landing' , title: 'Home' , comp: p => () },\r\n// { name: 'AuthLogin' , title: 'Log Into System' , comp: p => () },\r\n// ]}\r\n// />);\r\n//\r\nexport default function FtNavScreens(\r\n { theme, init, header, screens }:\r\n {\r\n theme: MD3Theme;\r\n init: string;\r\n header: ( props: any ) => JSX.Element;\r\n screens: FtNavScreenProps[];\r\n }\r\n): JSX.Element\r\n{\r\n return (<>\r\n \r\n \r\n \r\n \r\n \r\n {screens.map( ( screen: any, index: number ): JSX.Element => (\r\n {screen.comp})\r\n ) }\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { MD3LightTheme } from 'react-native-paper';\r\n\r\nconst appTheme = {\r\n ...MD3LightTheme,\r\n dark: false,\r\n roundness: 2, // roundness of common elements, such as buttons\r\n colors: { // https://callstack.github.io/react-native-paper/docs/guides/theming#theme-properties\r\n ...MD3LightTheme.colors,\r\n // primary: palette.primary40,\r\n // primaryContainer: palette.primary90,\r\n // secondary: palette.secondary40,\r\n // secondaryContainer: palette.secondary90,\r\n // tertiary: palette.tertiary40,\r\n // tertiaryContainer: palette.tertiary90,\r\n // surface: palette.neutral99,\r\n // surfaceVariant: palette.neutralVariant90,\r\n // surfaceDisabled: color(palette.neutral10).alpha(opacity.level2).rgb().string(),\r\n // background: palette.neutral99,\r\n // error: palette.error40,\r\n // errorContainer: palette.error90,\r\n // onPrimary: palette.primary100,\r\n // onPrimaryContainer: palette.primary10,\r\n // onSecondary: palette.secondary100,\r\n // onSecondaryContainer: palette.secondary10,\r\n // onTertiary: palette.tertiary100,\r\n // onTertiaryContainer: palette.tertiary10,\r\n // onSurface: palette.neutral10,\r\n // onSurfaceVariant: palette.neutralVariant30,\r\n // onSurfaceDisabled: color(palette.neutral10).alpha(opacity.level4).rgb().string(),\r\n // onError: palette.error100,\r\n // onErrorContainer: palette.error10,\r\n // onBackground: palette.neutral10,\r\n // outline: palette.neutralVariant50,\r\n // outlineVariant: palette.neutralVariant80,\r\n // inverseSurface: palette.neutral20,\r\n // inverseOnSurface: palette.neutral95,\r\n // inversePrimary: palette.primary80,\r\n // shadow: palette.neutral0,\r\n // scrim: palette.neutral0,\r\n // backdrop: color(MD3Colors.neutralVariant20).alpha(0.4).rgb().string(),\r\n }\r\n};\r\n\r\nexport default appTheme;\r\n\r\n/*\r\n=== old theme =======================================================\r\nimport { Colors, configureFonts } from 'react-native-paper';\r\nimport color from 'color';\r\n// import { black, white, pinkA400 } from './colors';\r\n// import configureFonts from './fonts';\r\n\r\nconst appTheme = {\r\n dark: false,\r\n roundness: 5,\r\n colors: {\r\n primary: '#1976d2', // '#6200ee',\r\n accent: '#03dac4', // checkbox/switch on state color\r\n background: '#f6f6f6',\r\n surface: Colors.white,\r\n error: '#f44336', // '#B00020',\r\n text: Colors.black,\r\n onSurface: '#000000',\r\n disabled: color( Colors.black ).alpha(0.26).rgb().string(),\r\n placeholder: '#505050', // input floating labels, color( Colors.black ).alpha(0.54).rgb().string()\r\n backdrop: color( Colors.black ).alpha(0.5).rgb().string(),\r\n notification: color( Colors.pinkA400 ),\r\n },\r\n fonts: configureFonts(),\r\n animation: {\r\n scale: 1.0,\r\n },\r\n};\r\n*/\r\n\r\n","/// FIRST: Framework Insuring Rapid Systems Typing\r\n/// \r\n/// Copyright (c) 2021 Jaco Bekker T/A LightSoft\r\n\r\n//********************************************************************\r\n// FtRapiResult class\r\nexport default class FtRapiResult {\r\n\r\n //====================================================================\r\n // properties\r\n status: string;\r\n code: string;\r\n message: string;\r\n\r\n //====================================================================\r\n // init\r\n constructor()\r\n {\r\n //- properties -----\r\n this.status = \"\"; // String : 'OK' or 'ER'\r\n this.code = \"\"; // String\r\n this.message = \"\"; // String\r\n }\r\n\r\n //====================================================================\r\n // static api\r\n\r\n /// Create FtRapiResult from json-decoded object\r\n ///\r\n /// Object [decJson] Object to get members from\r\n /// FtRapiResult [returns] new FtRapiResult object\r\n static decodeFromObj( decJson: any ): FtRapiResult\r\n {\r\n let ret = new FtRapiResult();\r\n ret.status = decJson.status;\r\n ret.code = decJson.code;\r\n ret.message = decJson.message;\r\n return ret;\r\n }\r\n\r\n /// Creates standard error Result object\r\n ///\r\n /// FtRapiResult [returns] Result error object\r\n static stdError(): FtRapiResult\r\n {\r\n return Object.assign( new FtRapiResult(), {\r\n status: 'ER',\r\n code: '9999',\r\n message:'Error connecting to server or invalid response, please check internet connection.'\r\n } as any );\r\n }\r\n}\r\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2021 Jaco Bekker T/A LightSoft\n\nimport Decimal from 'decimal.js';\nimport moment from 'moment';\nimport Ft from './ft';\nimport FtRapiResult from './ftRapiResult';\nimport FtAppInfo from './ftAppInfo';\nimport type { FtRapiCallArgs } from './ftTypes';\n\n//********************************************************************\n// FtRapi class : REST API functionality\n/*\nSPECIFICATION: 2020.05.26\n\n* request:\n ~ list:\n > GET : /?\n > filtered by params\n ~ read:\n > GET : //?\n > filtered by params\n > id = 0 to retreive single record filter by params\n ~ new:\n > POST : /?\n > payload in http body\n > payload = json\n > json array for multiple records, all same type\n > json object for single record\n ~ update:\n > PUT : //?\n > payload in http body\n > payload = json\n > id = 0 to use id's in body\n > json array for multiple records, all same type\n > json object for single record\n ~ delete:\n > DELETE : //?\n > id = 0 to delete multiple records by params filter\n > no body payloads\n\n* response:\n ~ http codes:\n 200 OK, use whenever valid json formatted response is given\n 400 Bad Request, invalid request format\n 500 Internal Server Error, exception during processing\n ~ format on success:\n {\n \"status\" : \"OK\", // call status: OK/ER\n \"code\" : \"xxxx\", // 4 digit status code unique to each application, 0000=Success, 0001=Not signed-in, 9999=Unknown error\n \"message\" : , // return message, success & error statusses\n \"data0..n\" : { // result data as single structure (rec) or zero or more records (recs)\n \"model\": , // if available, the model class name for structure & table record types\n \"paging\": { // statistics of data returned, for list & table only\n \"pages_total\" : , // - total number of pages in result set\n \"page_cur\" : , // - current page index, 0-based\n \"page_size\" : , // - number of items per normal page\n \"items_total\" : // - total number of items in result set\n \"items_num\" : // - number of items returned for this page\n },\n \"fmt\": { // data records format, object of field-format specifiers, see below\n : , // - field specifier, field-name = \"value\" in case of single value or list\n ...\n },\n \"value\": , // single data value\n \"struct\": { // record/structure\n : ,\n ...\n },\n \"list\": [ // list of single values\n ,\n ...\n ],\n \"table\": [ // table of multiple records/structures\n {\n : ,\n ...\n },\n ...\n ]\n }\n }\n\n* data types, fmt format: 2021.02.17\n FTGEN MYSQL_TYPE(utf8_bin) MSSQL_TYPE PHP_TYPE JSON_TYPE C#_TYPE DART_TYPE ES6 PYTHON_SQLALCHEMY DESCRIPTION\n ftg_identity int primary key auto_increment int identity(1,1) not null int number int int Number Integer identity int auto-increase, 1-based, integer (signed 32bit)\n ftg_bool int int bool bool bool bool boolean Boolean boolean\n ftg_int int int int number int int Number Integer integer (signed 32bit)\n ftg_long bigint bigint string number long int Number Integer integer (signed 64bit)\n ftg_float float real double number float double Number Float floating point number 32bit\n ftg_double double float double number double double Number Float floating point number 64bit\n ftg_decimal(n,d) decimal(n,d) decimal(n,d) string number decimal Decimal Decimal Numeric decimal numbers, n= total digits, d = digits after decimal point\n ftg_timestamp timestamp timestamp string string DateTime DateTime Date DateTime timestamp string, yyyy-mm-dd hh:mm:ss\n ftg_date date date string string DateTime DateTime Date Date date string, yyyy-mm-dd\n ftg_time time time string string TimeSpan DateTime Date Time time string, hh:mm:ss\n ftg_datetime datetime datetime string string DateTime DateTime Date DateTime datetime string, yyyy-mm-dd hh:mm:ss\n ftg_datetimez datetime datetime string string DateTime DateTime Date DateTime datetime string, yyyy-mm-dd hh:mm:ss, translated to utc\n ftg_char(n) char(n) char(n) string string string String String String 7-bit ascii text, fixed, max-length 255\n ftg_varchar(n) varchar(n) varchar(n) string string string String String String 7-bit ascii text, variable, max-length 8000\n ftg_text text text string string string String String String 7-bit ascii text, variable, max-length 65535\n ftg_longtext longtext text string string string String String String 7-bit ascii text, variable, max-length 2147483647\n ftg_unichar(n) char(n) nchar(n) string(utf8) string(utf8+b64) string String String Unicode unicode text, fixed, max-length 255\n ftg_univarchar(n) varchar(n) nvarchar(n) string(utf8) string(utf8+b64) string String String Unicode unicode text, variable, max-length 4000\n ftg_unitext text ntext string(utf8) string(utf8+b64) string String String Unicode unicode text, variable, max-length 65535\n ftg_unilong longtext ntext string(utf8) string(utf8+b64) string String String UnicodeText unicode text, variable, max-length 2147483647\n ftg_binary blob varbinary string string(b64) byte[] ByteBuffer Uint8Array LargeBinary binary data, variable, max-length 8000\n ftg_binarymed mediumblob varbinary(max) string string(b64) byte[] ByteBuffer Uint8Array LargeBinary binary data, variable, max-length 1677216\n ftg_binarylong longblob varbinary(max) string string(b64) byte[] ByteBuffer Uint8Array LargeBinary binary data, variable, max-length 2147483647\n\n*/\n\nexport default class FtRapi {\n\n //====================================================================\n // static members\n\n static classMap: any = {}; // global model class registry\n\n //====================================================================\n // static api\n\n /// Return class for given model class name\n ///\n /// String [clsName] Model class name\n /// Class [returns] Class\n static getModelClass( clsName: string ): any\n {\n if ( this.classMap.hasOwnProperty( clsName ) ) return this.classMap[clsName];\n return null;\n }\n\n /// Decode each data type from RAPI format to ES6 format\n static decodeDec = ( str: string ): Decimal => str != null ? new Decimal( str ) : new Decimal( '0.0' );\n static decodeDate = ( str: string ): Date => str != null ? moment( str ).toDate() : moment( '0001-01-01' ).toDate();\n static decodeTime = ( str: string ): Date => str != null ? moment( '0001-01-01 ' + str ).toDate() : moment( '0001-01-01 00:00:00' ).toDate();\n static decodeDttm = ( str: string ): Date => str != null ? moment( str ).toDate() : moment( '0001-01-01 00:00:00' ).toDate();\n static decodeDttmz = ( str: string ): Date => str != null ? moment( str + \"+0000\" ).toDate() : moment( '0001-01-01 00:00:00+0000' ).toDate();\n static decodeUni = ( str: string ): string => Ft.utf8Base64ToStr( str );\n static decodeBin = ( str: string ): Uint8Array => Ft.base64ToBa( str );\n\n /// Encode each data type from ES6 format to RAPI format\n static encodeBool = ( bol: boolean|null ): string => bol ? '1' : '0';\n static encodeStr = ( str: string|null ): string => str != null ? str : '';\n static encodeDec = ( dec: Decimal|null ): string => dec != null ? dec.toString() : '0';\n static encodeDate = ( dtm: string|Date|moment.Moment|null ): string => dtm != null ? Ft.dtFmt( dtm ) : '0001-01-01 00:00:00';\n static encodeTime = ( dtm: string|Date|moment.Moment|null ): string => dtm != null ? Ft.tmFmt( dtm ) : '0001-01-01 00:00:00';\n static encodeDttm = ( dtm: string|Date|moment.Moment|null ): string => dtm != null ? Ft.dtmFmt( dtm ) : '0001-01-01 00:00:00';\n static encodeDttmz = ( dtm: string|Date|moment.Moment|null ): string => dtm != null ? Ft.dtmFmtUtc( dtm ) : '0001-01-01 00:00:00';\n static encodeUni = ( str: string ): string => Ft.strToUtf8Base64( str );\n static encodeBin = ( buf: Uint8Array|null ): string => Ft.baToBase64( buf ?? new Uint8Array() );\n\n /// Decode primitive type\n ///\n /// Object [val] Value to decode\n /// String [type] Type name to decode by\n /// Object [returns] Decoded object\n static decodeType( val: any, objType: string ): any\n {\n const baseType = Ft.regMatch1( objType, \"^(\\\\w+)\" );\n switch ( baseType ) { // ES6_TYPE DESCRIPTION\n case \"ftg_bool\": return val; // boolean boolean\n case \"ftg_identity\": return val; // Number identity int auto-increase, 1-based, integer (signed 32bit)\n case \"ftg_int\": return val; // Number integer (signed 32bit)\n case \"ftg_long\": return val; // Number integer (signed 64bit)\n case \"ftg_float\": return val; // Number floating point number 32bit\n case \"ftg_double\": return val; // Number floating point number 64bit\n case \"ftg_decimal\": return this.decodeDec( val ); // Decimal decimal numbers, n= total digits, d = digits after decimal point\n case \"ftg_date\": return this.decodeDate( val ); // Date date string, yyyy-mm-dd\n case \"ftg_time\": return this.decodeTime( val ); // Date time string, hh:mm:ss\n case \"ftg_timestamp\": return this.decodeDttm( val ); // Date timestamp string, yyyy-mm-dd hh:mm:ss\n case \"ftg_datetime\": return this.decodeDttm( val ); // Date datetime string, yyyy-mm-dd hh:mm:ss\n case \"ftg_datetimez\": return this.decodeDttmz( val ); // Date datetime string, yyyy-mm-dd hh:mm:ss, translated to utc\n case \"ftg_char\": return val; // String 7-bit ascii text, fixed, max-length 255\n case \"ftg_varchar\": return val; // String 7-bit ascii text, variable, max-length 8000\n case \"ftg_text\": return val; // String 7-bit ascii text, variable, max-length 65535\n case \"ftg_longtext\": return val; // String 7-bit ascii text, variable, max-length 2147483647\n case \"ftg_unichar\": return this.decodeUni( val ); // String unicode text, fixed, max-length 255\n case \"ftg_univarchar\": return this.decodeUni( val ); // String unicode text, variable, max-length 4000\n case \"ftg_unitext\": return this.decodeUni( val ); // String unicode text, variable, max-length 65535\n case \"ftg_unilong\": return this.decodeUni( val ); // String unicode text, variable, max-length 2147483647\n case \"ftg_binary\": return this.decodeBin( val ); // Uint8Array binary data, variable, max-length 8000\n case \"ftg_binarymed\": return this.decodeBin( val ); // Uint8Array binary data, variable, max-length 1677216\n case \"ftg_binarylong\": return this.decodeBin( val ); // Uint8Array binary data, variable, max-length 2147483647\n default: return null;\n }\n }\n\n /// Compose url from FtAppInfo\n ///\n /// String [tgt] Target to build into full URL\n /// Object [xData] Key-value pairs of data to append to url\n static makeUrlRapi( tgt: string, xData: any = null ): string\n {\n let fullUrl: string = FtAppInfo.baseUrl + \"rapi/\" + tgt;\n if ( !Ft.e( FtAppInfo.parms ) ) fullUrl += ( fullUrl.includes( '?' ) ? '&' : '?' ) + FtAppInfo.parms;\n if ( !Ft.e( xData ) )\n for ( const key in xData )\n fullUrl += ( fullUrl.includes( '?' ) ? '&' : '?' ) + key + '=' + xData[key];\n fullUrl += ( fullUrl.includes( '?' ) ? '&' : '?' ) + `rapixts=${Ft.randomInt()}`; // add random rapixts arg to rapi call to avoid cached results\n return fullUrl;\n }\n\n /// call* helper: check server response and return json decoded map\n ///\n /// JS object [response] Fetch response object\n /// JS object [returns] Json decoded js object\n static async call_checkResponse( response: any ): Promise\n {\n if ( response.status !== 200 ) throw new Error( `Http Error ${response.status}` );\n const data = await response.json();\n if ( !Ft.isDef( data.status ) ) throw new Error( \"Invalid json received\" );\n return data;\n }\n\n /// call* helper: encode payload for call to server\n ///\n /// FtDtModel [args.inRec] Input for single record\n /// Map [args.xData] Additional data for single record\n /// List [args.inList] Input for list of records, ignores xData\n /// String [returns] Encoded data Json+types\n static call_encodePayload( args: any ): string|null\n {\n let payload = null; // String\n if ( !Ft.e( args.inList ) ) { // encode as list\n payload = '[' + args.inList.forEach( ( i: any ): string => Ft.objToJson( i.encodeToObj() ) ).join( ',' ) + ']';\n } else if ( !Ft.e( args.inRec ) ) { // encode as single record\n payload = Ft.objToJson( Ft.setObjProps( args.inRec.encodeToObj(), !Ft.e( args.xData ) ? args.xData : {} as any ) );\n }\n return payload;\n }\n\n /// call* helper: encode URL data for call to server\n /// Encode first to json, then base64, then into retUrldata['data'] = \n /// Url encoding of inRec/inList is only used here for callList/callRead/callDelete\n ///\n /// Map [args.urlParms] Data to be added to url as is (no encoding)\n /// FtDtModel [args.inRec] Input for single record\n /// Map [args.xData] Additional data for single record\n /// List [args.inList] Input for list of records, ignores xData\n /// bool [encodePayload] True to encode payload into url\n /// Map [return] Encoded data Json+types\n static call_encodeUrlData( args: any, encodePayload: boolean ): any\n {\n const payload: any = encodePayload ? this.call_encodePayload( args ) : null; // handles only inRec/xData/inList\n if ( Ft.e( payload ) && Ft.e( args.urlParms ) ) return null;\n let retUrlData = !Ft.e( args.urlParms ) ? args.urlParms : {} as any;\n for ( let parmKey in args.urlParms ) // safely transport url parms\n args.urlParms[parmKey] = encodeURIComponent( args.urlParms[parmKey] );\n if ( !Ft.e( payload ) ) retUrlData['data'] = Ft.strToUtf8Base64( payload );\n return retUrlData;\n }\n\n /// call* helper: parse server response results\n ///\n /// Object [jsonMap] Json decoded into JS object from server response\n /// List [returns] Dynamic list of decoded objects\n static call_parseResults( jsonMap: any ): any[]\n {\n let outResults: any[] = [];\n for ( const key in jsonMap ) {\n if ( !key.startsWith( \"data\" ) ) continue; // skip non-data properties\n let data = jsonMap[key];\n let dataKeys = Object.keys( data );\n\n //- dispatch map parsing by: value/struct/list/table -----\n if ( dataKeys.includes( \"value\" ) ) {\n const obj = this.decodeType( data[\"value\"], data[\"fmt\"][\"value\"] );\n outResults.push( obj );\n } else if ( dataKeys.includes( \"list\" ) ) {\n let resList: any[] = [];\n let fmt: string = data[\"fmt\"][\"value\"];\n let dataList: any[] = data[\"list\"];\n for ( let i = 0; i < dataList.length; i++ ) {\n const obj = this.decodeType( dataList[i], fmt );\n resList.push( obj );\n }\n outResults.push( resList );\n } else if ( dataKeys.includes( \"struct\" ) ) {\n const cls: any = this.getModelClass( data[\"model\"] );\n const obj: any = cls != null ? ( new cls() ).decodeFromObj( data[\"struct\"] ) : null;\n outResults.push( obj );\n } else if ( dataKeys.includes( \"table\" ) ) {\n const cls: any = this.getModelClass( data[\"model\"] );\n const resList: any[] = [];\n const table: any[] = data[\"table\"];\n for ( let i = 0; i < table.length; i++ ) {\n let el = table[i];\n const obj = cls != null ? ( new cls() ).decodeFromObj( el ) : null;\n resList.push( obj );\n }\n outResults.push( resList );\n }\n }\n return outResults;\n }\n\n /// Call url on server directly, no REST-API\n /// On mobile: open url in browser\n /// On web: open url in new tab\n ///\n /// String [url] Basic URL to call server on\n /// object [args] Optional arguments to add to url\n ///\n /// Examples:\n /// FtRapi.callUrl( 'pdfSample' );\n /// FtRapi.callUrl( 'pdfSample', {\n /// parm1: 'val1',\n /// ..\n /// });\n static callUrl( url: string, args: any ): void\n {\n let fullUrl: string = FtAppInfo.baseUrl + \"rapi/\" + url;\n if ( !Ft.e( FtAppInfo.parms ) ) fullUrl += ( fullUrl.includes( '?' ) ? '&' : '?' ) + FtAppInfo.parms;\n Ft.openUrl( fullUrl, args );\n }\n\n /// Call server for listing: GET & no id\n ///\n /// String [url] Basic URL to call server on\n /// FtModel [args.inRec] Input record data\n /// Map [args.urlParms] Data to be added to url as is (no encoding)\n /// Map [args.xData] Additional record data, only used with inRec\n /// List [args.inList] Input multi-record data, ignores xData\n /// void Function( FtRapiResult result, List data ) [args.success] Success event handler\n /// void Function( FtRapiResult result ) [args.error] Error event handler\n /// void Function( FtRapiResult result ) [args.complete] Complete event handler\n /// Example:\n /// setBusy( true );\n /// FtRapi.callList( 'myBackendList', {\n /// urlParms: {\n /// 'name': mdl.name,\n /// 'surname': mdl.surname,\n /// },\n /// success: ( result, data ) => {\n /// setBusy( false );\n /// setMyData( data[0] ); // ModelClass[] > set with useState hook\n /// ftPopupMessage( setPopup, \"Success\", result.message, { onClose: nav.pop } ); // Ft.dirs( \"SUCCESS:\", result.message );\n /// },\n /// error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ), // Ft.dirs( \"ERROR:\", result );\n /// complete: () => setBusy( false ),\n /// });\n /// links:\n /// - https://reactnative.dev/docs/network\n /// - https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch\n /// - https://developers.google.com/web/fundamentals/primers/async-functions\n static async callList( url: string, args: FtRapiCallArgs ): Promise\n {\n const urlData: any = this.call_encodeUrlData( args, true ); // takes urlParms/inRec/xData/inList\n const fullUrl: string = this.makeUrlRapi( url, urlData );\n let rapiResult: FtRapiResult|null = null;\n try {\n const response: any = await fetch( fullUrl, {\n method: 'GET', // GET, POST, PUT, DELETE\n headers: {\n Accept: 'application/json', // data type understood by client\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n } as any\n } as any );\n const decJson: any = await this.call_checkResponse( response );\n rapiResult = FtRapiResult.decodeFromObj( decJson );\n if ( rapiResult?.status == 'OK' ) {\n const outResults: any[] = this.call_parseResults( decJson );\n if ( args.success != undefined ) args.success( rapiResult, outResults );\n } else {\n if ( args.error != undefined ) args.error( rapiResult );\n }\n if ( args.complete != undefined ) args.complete( rapiResult );\n return true;\n } catch ( ex ) {\n rapiResult = FtRapiResult.stdError();\n if ( args.error != undefined ) args.error( rapiResult );\n if ( args.complete != undefined ) args.complete( rapiResult );\n return false;\n }\n }\n\n /// Call server for read: GET & given id\n ///\n /// String [url] Basic URL to call server on\n /// int [id] Resource id to send, use 0 if multi-id\n /// Map [args.urlParms] Data to be added to url as is (no encoding)\n /// FtModel [args.inRec] Input record data\n /// Map [args.xData] Additional record data, only used with inRec\n /// List [args.inList] Input multi-record data, ignores xData\n /// void Function( FtRapiResult result, List data ) [args.success] Success event handler\n /// void Function( FtRapiResult result ) [args.error] Error event handler\n /// void Function( FtRapiResult result ) [args.complete] Complete event handler\n /// Example:\n /// setBusy( true );\n /// FtRapi.callRead( 'myBackendRead', 1, {\n /// success: ( result, data ) => {\n /// setBusy( false );\n /// setMyData( data[0] ); // Model_class > set with useState hook\n /// ftPopupMessage( setPopup, \"Success\", result.message, {} ); // Ft.dirs( \"SUCCESS:\", result.message );\n /// },\n /// error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ), // Ft.dirs( \"ERROR:\", result );\n /// complete: () => setBusy( false ),\n /// });\n static async callRead( url: string, id: number, args: FtRapiCallArgs ): Promise\n {\n const urlData: any = this.call_encodeUrlData( args, true ); // takes urlParms/inRec/xData/inList\n const fullUrl: string = this.makeUrlRapi( `${url}/${id}`, urlData );\n let rapiResult: FtRapiResult|null = null;\n try {\n const response: any = await fetch( fullUrl, {\n method: 'GET', // GET, POST, PUT, DELETE\n headers: {\n Accept: 'application/json', // data type understood by client\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n } as any\n } as any );\n const decJson: any = await this.call_checkResponse( response );\n rapiResult = FtRapiResult.decodeFromObj( decJson );\n if ( rapiResult?.status == 'OK' ) {\n const outResults: any[] = this.call_parseResults( decJson );\n if ( args.success != undefined ) args.success( rapiResult, outResults );\n } else {\n if ( args.error != undefined ) args.error( rapiResult );\n }\n if ( args.complete != undefined ) args.complete( rapiResult );\n return true;\n } catch ( ex ) {\n rapiResult = FtRapiResult.stdError();\n if ( args.error != undefined ) args.error( rapiResult );\n if ( args.complete != undefined ) args.complete( rapiResult );\n return false;\n }\n }\n\n /// Call server for new: POST & no id\n /// NOTE: data is temporarily encoded into url as field \"data\" encoded as base64-json\n ///\n /// String [url] Basic URL to call server on\n /// Map [args.urlParms] Data to be added to url as is (no encoding)\n /// List [args.inList] Input multi-record data, ignores xData\n /// FtDtModel [args.inRec] Input record data\n /// Map [args.xData] Additional record data, only used with inRec\n /// void Function( FtRapiResult result, List data ) [args.success] Success event handler\n /// void Function( FtRapiResult result ) [args.error] Error event handler\n /// void Function( FtRapiResult result ) [args.complete] Complete event handler\n /// Example:\n /// setBusy( true );\n /// FtRapi.callNew( 'myBackendNew', {\n /// urlParms: { 'parm1': parm1 },\n /// inList: myListOfRecords, // will ignore inRec if inList is present\n /// inRec: mySingleRecord,\n /// xData: { newField: val1 }, // adds newFields to inRec before sending\n /// success: ( result, data ) => {\n /// setBusy( false );\n /// setMyData( data[0] ); // Model-class > set with useState hook\n /// ftPopupMessage( setPopup, \"Success\", result.message, {} ); // Ft.dirs( \"SUCCESS:\", result.message );\n /// },\n /// error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ), // Ft.dirs( \"ERROR:\", result );\n /// complete: () => setBusy( false ),\n /// });\n static async callNew( url: string, args: FtRapiCallArgs ): Promise\n {\n const urlData: any = this.call_encodeUrlData( args, false ); // takes urlParms/inRec/xData/inList\n const fullUrl: string = this.makeUrlRapi( url, urlData );\n const payload: string|null = this.call_encodePayload( args );\n let rapiResult: FtRapiResult|null = null;\n try {\n const response: any = await fetch( fullUrl, {\n method: 'POST', // GET, POST, PUT, DELETE\n headers: {\n Accept: 'application/json', // data type understood by client\n 'Content-Type': 'application/json',\n } as any,\n body: payload\n } as any );\n const decJson: any = await this.call_checkResponse( response );\n rapiResult = FtRapiResult.decodeFromObj( decJson );\n if ( rapiResult?.status == 'OK' ) {\n const outResults: any[] = this.call_parseResults( decJson );\n if ( args.success != undefined ) args.success( rapiResult, outResults );\n } else {\n if ( args.error != undefined ) args.error( rapiResult );\n }\n if ( args.complete != undefined ) args.complete( rapiResult );\n return true;\n } catch ( ex ) {\n rapiResult = FtRapiResult.stdError();\n if ( args.error != undefined ) args.error( rapiResult );\n if ( args.complete != undefined ) args.complete( rapiResult );\n return false;\n }\n }\n\n /// Call server for updating: PUT & given id\n /// NOTE: data is temporarily encoded into url as field \"data\" encoded as base64-json\n ///\n /// String [url] Basic URL to call server on\n /// int [id] Resource id to send, use 0 if multi-id\n /// Map [args.urlParms] Data to be added to url as is (no encoding)\n /// List [args.inList] Input multi-record data, ignores xData\n /// FtModel [args.inRec] Input record data\n /// Map [args.xData] Additional record data, only used with inRec\n /// void Function( FtRapiResult result, List data ) [args.success] Success event handler\n /// void Function( FtRapiResult result ) [args.error] Error event handler\n /// void Function( FtRapiResult result ) [args.complete] Complete event handler\n /// Example:\n /// setBusy( true );\n /// FtRapi.callUpdate( 'myBackendUpdate', 1, {\n /// urlParms: { 'parm1': parm1 },\n /// inList: myListOfRecords, // will ignore inRec if inList is present\n /// inRec: mySingleRecord,\n /// xData: { newField: val1 }, // adds newFields to inRec before sending\n /// success: ( result, data ) => {\n /// setBusy( false );\n /// setMyData( data[0] ); // Model-class > set with useState hook\n /// ftPopupMessage( setPopup, \"Success\", result.message, {} ); // Ft.dirs( \"SUCCESS:\", result.message );\n /// },\n /// error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ), // Ft.dirs( \"ERROR:\", result );\n /// complete: () => setBusy( false ),\n /// });\n static async callUpdate( url: string, id: number, args: FtRapiCallArgs ): Promise\n {\n const urlData: any = this.call_encodeUrlData( args, false ); // takes urlParms/inRec/xData/inList\n const fullUrl: string = this.makeUrlRapi( `${url}/${id}`, urlData );\n const payload: string|null = this.call_encodePayload( args );\n let rapiResult: FtRapiResult|null = null;\n try {\n const response = await fetch( fullUrl, {\n method: 'PUT', // GET, POST, PUT, DELETE\n headers: {\n Accept: 'application/json', // data type understood by client\n 'Content-Type': 'application/json',\n },\n body: payload\n } as any );\n const decJson: any = await this.call_checkResponse( response );\n rapiResult = FtRapiResult.decodeFromObj( decJson );\n if ( rapiResult?.status == 'OK' ) {\n const outResults: any[] = this.call_parseResults( decJson );\n if ( args.success != undefined ) args.success( rapiResult, outResults );\n } else {\n if ( args.error != undefined ) args.error( rapiResult );\n }\n if ( args.complete != undefined ) args.complete( rapiResult );\n return true;\n } catch ( ex ) {\n rapiResult = FtRapiResult.stdError();\n if ( args.error != undefined ) args.error( rapiResult );\n if ( args.complete != undefined ) args.complete( rapiResult );\n return false;\n }\n }\n\n /// Call server for deleting: DELETE & given id\n ///\n /// String [url] Basic URL to call server on\n /// int [id] Resource id to send, use 0 if multi-id\n /// Map [args.urlParms] Data to be added to url as is (no encoding)\n /// FtModel [args.inRec] Input record data\n /// Map [args.xData] Additional record data, only used with inRec\n /// List [args.inList] Input multi-record data, ignores xData\n /// void Function( FtRapiResult result, List data ) [args.success] Success event handler\n /// void Function( FtRapiResult result ) [args.error] Error event handler\n /// void Function( FtRapiResult result ) [args.complete] Complete event handler\n /// Example:\n /// setBusy( true );\n /// FtRapi.callDelete( 'myBackendDelete', 1, {\n /// urlParms: { 'parm1': parm1 },\n /// success: ( result, data ) => {\n /// setBusy( false );\n /// setMyData( data[0] ); // Model-class > set with useState hook\n /// ftPopupMessage( setPopup, \"Success\", result.message, {} ); // Ft.dirs( \"SUCCESS:\", result.message );\n /// },\n /// error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ), // Ft.dirs( \"ERROR:\", result );\n /// complete: () => setBusy( false ),\n /// });\n static async callDelete( url: string, id: number, args: FtRapiCallArgs ): Promise\n {\n const urlData: any = this.call_encodeUrlData( args, true ); // takes urlParms/inRec/xData/inList\n const fullUrl: string = this.makeUrlRapi( `${url}/${id}`, urlData );\n let rapiResult: FtRapiResult|null = null;\n try {\n const response: any = await fetch( fullUrl, {\n method: 'DELETE', // GET, POST, PUT, DELETE\n headers: {\n Accept: 'application/json', // data type understood by client\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n } as any\n } as any );\n const decJson: any = await this.call_checkResponse( response );\n rapiResult = FtRapiResult.decodeFromObj( decJson );\n if ( rapiResult?.status == 'OK' ) {\n const outResults: any[] = this.call_parseResults( decJson );\n if ( args.success != undefined ) args.success( rapiResult, outResults );\n } else {\n if ( args.error != undefined ) args.error( rapiResult );\n }\n if ( args.complete != undefined ) args.complete( rapiResult );\n return true;\n } catch ( ex ) {\n rapiResult = FtRapiResult.stdError();\n if ( args.error != undefined ) args.error( rapiResult );\n if ( args.complete != undefined ) args.complete( rapiResult );\n return false;\n }\n }\n }","import AdminTaskBase from './base/adminTaskBase';\r\n\r\n//********************************************************************\r\n// AdminTask class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class AdminTask extends AdminTaskBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// AdminTaskBase class : Generated : DO NOT MODIFY\r\nexport default class AdminTaskBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n tid: number|null;\n create_date: Date|null;\n description: string|null;\n category_id: number|null;\n category_name: string|null;\n responsible_id: number|null;\n responsible_user: string|null;\n is_done: boolean|null;\n due_by: Date|null;\n member_no: string|null;\n assembly_id: number|null;\n assembly_no: string|null;\n request_cat: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.tid = 0;\n this.create_date = moment( '0001-01-01 00:00:00' ).toDate();\n this.description = '';\n this.category_id = 0;\n this.category_name = '';\n this.responsible_id = 0;\n this.responsible_user = '';\n this.is_done = false;\n this.due_by = moment( '0001-01-01 00:00:00' ).toDate();\n this.member_no = '';\n this.assembly_id = 0;\n this.assembly_no = '';\n this.request_cat = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.tid = obj.tid;\n this.create_date = FtRapi.decodeDttm( obj.create_date );\n this.description = obj.description;\n this.category_id = obj.category_id;\n this.category_name = obj.category_name;\n this.responsible_id = obj.responsible_id;\n this.responsible_user = obj.responsible_user;\n this.is_done = obj.is_done;\n this.due_by = FtRapi.decodeDttm( obj.due_by );\n this.member_no = obj.member_no;\n this.assembly_id = obj.assembly_id;\n this.assembly_no = obj.assembly_no;\n this.request_cat = obj.request_cat;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n tid : this.tid,\n create_date : FtRapi.encodeDttm( this.create_date ),\n description : FtRapi.encodeStr( this.description ),\n category_id : this.category_id,\n category_name : FtRapi.encodeStr( this.category_name ),\n responsible_id : this.responsible_id,\n responsible_user : FtRapi.encodeStr( this.responsible_user ),\n is_done : FtRapi.encodeBool( this.is_done ),\n due_by : FtRapi.encodeDttm( this.due_by ),\n member_no : FtRapi.encodeStr( this.member_no ),\n assembly_id : this.assembly_id,\n assembly_no : FtRapi.encodeStr( this.assembly_no ),\n request_cat : FtRapi.encodeStr( this.request_cat ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.tid = Ft.parseInt0Null( src.tid );\n this.create_date = src.create_date;\n this.description = src.description;\n this.category_id = Ft.parseInt0Null( src.category_id );\n this.category_name = src.category_name;\n this.responsible_id = Ft.parseInt0Null( src.responsible_id );\n this.responsible_user = src.responsible_user;\n this.is_done = Ft.parseBool( src.is_done );\n this.due_by = src.due_by;\n this.member_no = src.member_no;\n this.assembly_id = Ft.parseInt0Null( src.assembly_id );\n this.assembly_no = src.assembly_no;\n this.request_cat = src.request_cat;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.tid = null;\n this.create_date = moment( '0001-01-01 00:00:00' ).toDate();\n this.description = null;\n this.category_id = null;\n this.category_name = null;\n this.responsible_id = null;\n this.responsible_user = null;\n this.is_done = false;\n this.due_by = moment( '0001-01-01 00:00:00' ).toDate();\n this.member_no = null;\n this.assembly_id = null;\n this.assembly_no = null;\n this.request_cat = null;\r\n }\r\n}\r\n","import AdminTaskCategoryBase from './base/adminTaskCategoryBase';\r\n\r\n//********************************************************************\r\n// AdminTaskCategory class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class AdminTaskCategory extends AdminTaskCategoryBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static ATC_NOT_URGENT = 1;\n static ATC_FAIRLY = 2;\n static ATC_URGENT = 3;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// AdminTaskCategoryBase class : Generated : DO NOT MODIFY\r\nexport default class AdminTaskCategoryBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import ArcRepoBase from './base/arcRepoBase';\r\n\r\n//********************************************************************\r\n// ArcRepo class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class ArcRepo extends ArcRepoBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// ArcRepoBase class : Generated : DO NOT MODIFY\r\nexport default class ArcRepoBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n upload_dttm: Date|null;\n store_dttm: Date|null;\n repo_key: string|null;\n size: number|null;\n ext: string|null;\n media_type_id: number|null;\n hash: string|null;\n title: string|null;\n descr: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.upload_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.store_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.repo_key = '';\n this.size = 0;\n this.ext = '';\n this.media_type_id = 0;\n this.hash = '';\n this.title = '';\n this.descr = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.upload_dttm = FtRapi.decodeDttm( obj.upload_dttm );\n this.store_dttm = FtRapi.decodeDttm( obj.store_dttm );\n this.repo_key = obj.repo_key;\n this.size = obj.size;\n this.ext = obj.ext;\n this.media_type_id = obj.media_type_id;\n this.hash = obj.hash;\n this.title = obj.title;\n this.descr = obj.descr;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n upload_dttm : FtRapi.encodeDttm( this.upload_dttm ),\n store_dttm : FtRapi.encodeDttm( this.store_dttm ),\n repo_key : FtRapi.encodeStr( this.repo_key ),\n size : this.size,\n ext : FtRapi.encodeStr( this.ext ),\n media_type_id : this.media_type_id,\n hash : FtRapi.encodeStr( this.hash ),\n title : FtRapi.encodeStr( this.title ),\n descr : FtRapi.encodeStr( this.descr ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.upload_dttm = src.upload_dttm;\n this.store_dttm = src.store_dttm;\n this.repo_key = src.repo_key;\n this.size = Ft.parseInt0Null( src.size );\n this.ext = src.ext;\n this.media_type_id = Ft.parseInt0Null( src.media_type_id );\n this.hash = src.hash;\n this.title = src.title;\n this.descr = src.descr;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.upload_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.store_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.repo_key = null;\n this.size = null;\n this.ext = null;\n this.media_type_id = null;\n this.hash = null;\n this.title = null;\n this.descr = null;\r\n }\r\n}\r\n","import ArcRepoMediaTypeBase from './base/arcRepoMediaTypeBase';\r\n\r\n//********************************************************************\r\n// ArcRepoMediaType class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class ArcRepoMediaType extends ArcRepoMediaTypeBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static ARMT_IMAGE = 1;\n static ARMT_VIDEO = 2;\n static ARMT_GENERAL = 3;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// ArcRepoMediaTypeBase class : Generated : DO NOT MODIFY\r\nexport default class ArcRepoMediaTypeBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n code: string|null;\n name: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.code = '';\n this.name = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.code = obj.code;\n this.name = obj.name;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n code : FtRapi.encodeStr( this.code ),\n name : FtRapi.encodeStr( this.name ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.code = src.code;\n this.name = src.name;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.code = null;\n this.name = null;\r\n }\r\n}\r\n","import ArcUploadBase from './base/arcUploadBase';\r\n\r\n//********************************************************************\r\n// ArcUpload class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class ArcUpload extends ArcUploadBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// ArcUploadBase class : Generated : DO NOT MODIFY\r\nexport default class ArcUploadBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n mime: string|null;\n file_size: number|null;\n upload_key: string|null;\n block_index: number|null;\n block_size: number|null;\n block_data: Uint8Array|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.mime = '';\n this.file_size = 0;\n this.upload_key = '';\n this.block_index = 0;\n this.block_size = 0;\n this.block_data = new Uint8Array(0);\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.mime = obj.mime;\n this.file_size = obj.file_size;\n this.upload_key = obj.upload_key;\n this.block_index = obj.block_index;\n this.block_size = obj.block_size;\n this.block_data = FtRapi.decodeBin( obj.block_data );\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n mime : FtRapi.encodeStr( this.mime ),\n file_size : this.file_size,\n upload_key : FtRapi.encodeStr( this.upload_key ),\n block_index : this.block_index,\n block_size : this.block_size,\n block_data : FtRapi.encodeBin( this.block_data ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.mime = src.mime;\n this.file_size = Ft.parseInt0Null( src.file_size );\n this.upload_key = src.upload_key;\n this.block_index = Ft.parseInt0Null( src.block_index );\n this.block_size = Ft.parseInt0Null( src.block_size );\n this.block_data = src.block_data;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.mime = null;\n this.file_size = null;\n this.upload_key = null;\n this.block_index = null;\n this.block_size = null;\n this.block_data = null;\r\n }\r\n}\r\n","import AssemblyBase from './base/assemblyBase';\r\n\r\n//********************************************************************\r\n// Assembly class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class Assembly extends AssemblyBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// AssemblyBase class : Generated : DO NOT MODIFY\r\nexport default class AssemblyBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n gemid: number|null;\n assembly_no: string|null;\n assembly_name: string|null;\n type_id: number|null;\n region_id: number|null;\n region_no: string|null;\n region_name: string|null;\n physical_adr_1: string|null;\n physical_adr_2: string|null;\n physical_adr_city: string|null;\n physical_adr_code: string|null;\n postal_adr_1: string|null;\n postal_adr_2: string|null;\n postal_adr_city: string|null;\n postal_code: string|null;\n asset_register: boolean|null;\n fax_no: string|null;\n phone_no: string|null;\n phone_extension: string|null;\n procedure: string|null;\n bank: string|null;\n bank_branch: string|null;\n bank_account: string|null;\n bank_account_type: string|null;\n treasurer_name: string|null;\n treasurer_phone_extension: string|null;\n treasurer_procedure: string|null;\n treasurer_phone: string|null;\n treasurer_postal_adr_1: string|null;\n treasurer_postal_adr_2: string|null;\n treasurer_postal_adr_city: string|null;\n treasurer_postal_code: string|null;\n secretary_name: string|null;\n secretary_phone_extension: string|null;\n secretary_procedure: string|null;\n secretary_phone: string|null;\n secretary_postal_adr_1: string|null;\n secretary_postal_adr_2: string|null;\n secretary_postal_adr_city: string|null;\n secretary_postal_adr_code: string|null;\n input_date: Date|null;\n vicechairperson_name: string|null;\n vicechairperson_phone_extension: string|null;\n vicechairperson_procedure: string|null;\n vicechairperson_phone: string|null;\n vicechairperson_postal_adr_1: string|null;\n vicechairperson_postal_adr_2: string|null;\n vicechairperson_postal_adr_city: string|null;\n vicechairperson_postal_adr_code: string|null;\n main_pastor: string|null;\n pentecost_pastor: number|null;\n file_date: Date|null;\n is_filed: boolean|null;\n move_no: string|null;\n last_updated: Date|null;\n email: string|null;\n website: string|null;\n date_registered: Date|null;\n census_date: Date|null;\n census_women_count: string|null;\n census_men_count: string|null;\n census_youth_count: string|null;\n census_children_count: string|null;\n spoken_languages: string|null;\n title_deed: boolean|null;\n baptised_water_count: number|null;\n baptised_spirit_count: number|null;\n attending_sunday_service_count: number|null;\n attending_sunday_school_count: number|null;\n attending_over_35_count: number|null;\n attending_under_35_count: number|null;\n attending_other_count: number|null;\n audit_books: boolean|null;\n assembly_policy: boolean|null;\n assembly_gb: boolean|null;\n site_no_building: boolean|null;\n site_and_building: boolean|null;\n no_property: boolean|null;\n stat_funds_months: number|null;\n ordained_pastors_count: number|null;\n non_ordained_pastors_count: number|null;\n assembly_leader: boolean|null;\n service_contract: boolean|null;\n branch_assemblies_count: number|null;\n nlf: boolean|null;\n notes: string|null;\n last_edited_by_id: number|null;\n last_edited: string|null;\n web_usedid: string|null;\n scode: string|null;\n gps_lat: string|null;\n gps_long: string|null;\n bin: string|null;\n justice_case_active: boolean|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.gemid = 0;\n this.assembly_no = '';\n this.assembly_name = '';\n this.type_id = 0;\n this.region_id = 0;\n this.region_no = '';\n this.region_name = '';\n this.physical_adr_1 = '';\n this.physical_adr_2 = '';\n this.physical_adr_city = '';\n this.physical_adr_code = '';\n this.postal_adr_1 = '';\n this.postal_adr_2 = '';\n this.postal_adr_city = '';\n this.postal_code = '';\n this.asset_register = false;\n this.fax_no = '';\n this.phone_no = '';\n this.phone_extension = '';\n this.procedure = '';\n this.bank = '';\n this.bank_branch = '';\n this.bank_account = '';\n this.bank_account_type = '';\n this.treasurer_name = '';\n this.treasurer_phone_extension = '';\n this.treasurer_procedure = '';\n this.treasurer_phone = '';\n this.treasurer_postal_adr_1 = '';\n this.treasurer_postal_adr_2 = '';\n this.treasurer_postal_adr_city = '';\n this.treasurer_postal_code = '';\n this.secretary_name = '';\n this.secretary_phone_extension = '';\n this.secretary_procedure = '';\n this.secretary_phone = '';\n this.secretary_postal_adr_1 = '';\n this.secretary_postal_adr_2 = '';\n this.secretary_postal_adr_city = '';\n this.secretary_postal_adr_code = '';\n this.input_date = moment( '0001-01-01' ).toDate();\n this.vicechairperson_name = '';\n this.vicechairperson_phone_extension = '';\n this.vicechairperson_procedure = '';\n this.vicechairperson_phone = '';\n this.vicechairperson_postal_adr_1 = '';\n this.vicechairperson_postal_adr_2 = '';\n this.vicechairperson_postal_adr_city = '';\n this.vicechairperson_postal_adr_code = '';\n this.main_pastor = '';\n this.pentecost_pastor = 0;\n this.file_date = moment( '0001-01-01' ).toDate();\n this.is_filed = false;\n this.move_no = '';\n this.last_updated = moment( '0001-01-01 00:00:00' ).toDate();\n this.email = '';\n this.website = '';\n this.date_registered = moment( '0001-01-01' ).toDate();\n this.census_date = moment( '0001-01-01' ).toDate();\n this.census_women_count = '';\n this.census_men_count = '';\n this.census_youth_count = '';\n this.census_children_count = '';\n this.spoken_languages = '';\n this.title_deed = false;\n this.baptised_water_count = 0;\n this.baptised_spirit_count = 0;\n this.attending_sunday_service_count = 0;\n this.attending_sunday_school_count = 0;\n this.attending_over_35_count = 0;\n this.attending_under_35_count = 0;\n this.attending_other_count = 0;\n this.audit_books = false;\n this.assembly_policy = false;\n this.assembly_gb = false;\n this.site_no_building = false;\n this.site_and_building = false;\n this.no_property = false;\n this.stat_funds_months = 0;\n this.ordained_pastors_count = 0;\n this.non_ordained_pastors_count = 0;\n this.assembly_leader = false;\n this.service_contract = false;\n this.branch_assemblies_count = 0;\n this.nlf = false;\n this.notes = '';\n this.last_edited_by_id = 0;\n this.last_edited = '';\n this.web_usedid = '';\n this.scode = '';\n this.gps_lat = '';\n this.gps_long = '';\n this.bin = '';\n this.justice_case_active = false;\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.gemid = obj.gemid;\n this.assembly_no = obj.assembly_no;\n this.assembly_name = obj.assembly_name;\n this.type_id = obj.type_id;\n this.region_id = obj.region_id;\n this.region_no = obj.region_no;\n this.region_name = obj.region_name;\n this.physical_adr_1 = obj.physical_adr_1;\n this.physical_adr_2 = obj.physical_adr_2;\n this.physical_adr_city = obj.physical_adr_city;\n this.physical_adr_code = obj.physical_adr_code;\n this.postal_adr_1 = obj.postal_adr_1;\n this.postal_adr_2 = obj.postal_adr_2;\n this.postal_adr_city = obj.postal_adr_city;\n this.postal_code = obj.postal_code;\n this.asset_register = obj.asset_register;\n this.fax_no = obj.fax_no;\n this.phone_no = obj.phone_no;\n this.phone_extension = obj.phone_extension;\n this.procedure = obj.procedure;\n this.bank = obj.bank;\n this.bank_branch = obj.bank_branch;\n this.bank_account = obj.bank_account;\n this.bank_account_type = obj.bank_account_type;\n this.treasurer_name = obj.treasurer_name;\n this.treasurer_phone_extension = obj.treasurer_phone_extension;\n this.treasurer_procedure = obj.treasurer_procedure;\n this.treasurer_phone = obj.treasurer_phone;\n this.treasurer_postal_adr_1 = obj.treasurer_postal_adr_1;\n this.treasurer_postal_adr_2 = obj.treasurer_postal_adr_2;\n this.treasurer_postal_adr_city = obj.treasurer_postal_adr_city;\n this.treasurer_postal_code = obj.treasurer_postal_code;\n this.secretary_name = obj.secretary_name;\n this.secretary_phone_extension = obj.secretary_phone_extension;\n this.secretary_procedure = obj.secretary_procedure;\n this.secretary_phone = obj.secretary_phone;\n this.secretary_postal_adr_1 = obj.secretary_postal_adr_1;\n this.secretary_postal_adr_2 = obj.secretary_postal_adr_2;\n this.secretary_postal_adr_city = obj.secretary_postal_adr_city;\n this.secretary_postal_adr_code = obj.secretary_postal_adr_code;\n this.input_date = FtRapi.decodeDate( obj.input_date );\n this.vicechairperson_name = obj.vicechairperson_name;\n this.vicechairperson_phone_extension = obj.vicechairperson_phone_extension;\n this.vicechairperson_procedure = obj.vicechairperson_procedure;\n this.vicechairperson_phone = obj.vicechairperson_phone;\n this.vicechairperson_postal_adr_1 = obj.vicechairperson_postal_adr_1;\n this.vicechairperson_postal_adr_2 = obj.vicechairperson_postal_adr_2;\n this.vicechairperson_postal_adr_city = obj.vicechairperson_postal_adr_city;\n this.vicechairperson_postal_adr_code = obj.vicechairperson_postal_adr_code;\n this.main_pastor = obj.main_pastor;\n this.pentecost_pastor = obj.pentecost_pastor;\n this.file_date = FtRapi.decodeDate( obj.file_date );\n this.is_filed = obj.is_filed;\n this.move_no = obj.move_no;\n this.last_updated = FtRapi.decodeDttm( obj.last_updated );\n this.email = obj.email;\n this.website = obj.website;\n this.date_registered = FtRapi.decodeDate( obj.date_registered );\n this.census_date = FtRapi.decodeDate( obj.census_date );\n this.census_women_count = obj.census_women_count;\n this.census_men_count = obj.census_men_count;\n this.census_youth_count = obj.census_youth_count;\n this.census_children_count = obj.census_children_count;\n this.spoken_languages = obj.spoken_languages;\n this.title_deed = obj.title_deed;\n this.baptised_water_count = obj.baptised_water_count;\n this.baptised_spirit_count = obj.baptised_spirit_count;\n this.attending_sunday_service_count = obj.attending_sunday_service_count;\n this.attending_sunday_school_count = obj.attending_sunday_school_count;\n this.attending_over_35_count = obj.attending_over_35_count;\n this.attending_under_35_count = obj.attending_under_35_count;\n this.attending_other_count = obj.attending_other_count;\n this.audit_books = obj.audit_books;\n this.assembly_policy = obj.assembly_policy;\n this.assembly_gb = obj.assembly_gb;\n this.site_no_building = obj.site_no_building;\n this.site_and_building = obj.site_and_building;\n this.no_property = obj.no_property;\n this.stat_funds_months = obj.stat_funds_months;\n this.ordained_pastors_count = obj.ordained_pastors_count;\n this.non_ordained_pastors_count = obj.non_ordained_pastors_count;\n this.assembly_leader = obj.assembly_leader;\n this.service_contract = obj.service_contract;\n this.branch_assemblies_count = obj.branch_assemblies_count;\n this.nlf = obj.nlf;\n this.notes = obj.notes;\n this.last_edited_by_id = obj.last_edited_by_id;\n this.last_edited = obj.last_edited;\n this.web_usedid = obj.web_usedid;\n this.scode = obj.scode;\n this.gps_lat = obj.gps_lat;\n this.gps_long = obj.gps_long;\n this.bin = obj.bin;\n this.justice_case_active = obj.justice_case_active;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n gemid : this.gemid,\n assembly_no : FtRapi.encodeStr( this.assembly_no ),\n assembly_name : FtRapi.encodeStr( this.assembly_name ),\n type_id : this.type_id,\n region_id : this.region_id,\n region_no : FtRapi.encodeStr( this.region_no ),\n region_name : FtRapi.encodeStr( this.region_name ),\n physical_adr_1 : FtRapi.encodeStr( this.physical_adr_1 ),\n physical_adr_2 : FtRapi.encodeStr( this.physical_adr_2 ),\n physical_adr_city : FtRapi.encodeStr( this.physical_adr_city ),\n physical_adr_code : FtRapi.encodeStr( this.physical_adr_code ),\n postal_adr_1 : FtRapi.encodeStr( this.postal_adr_1 ),\n postal_adr_2 : FtRapi.encodeStr( this.postal_adr_2 ),\n postal_adr_city : FtRapi.encodeStr( this.postal_adr_city ),\n postal_code : FtRapi.encodeStr( this.postal_code ),\n asset_register : FtRapi.encodeBool( this.asset_register ),\n fax_no : FtRapi.encodeStr( this.fax_no ),\n phone_no : FtRapi.encodeStr( this.phone_no ),\n phone_extension : FtRapi.encodeStr( this.phone_extension ),\n procedure : FtRapi.encodeStr( this.procedure ),\n bank : FtRapi.encodeStr( this.bank ),\n bank_branch : FtRapi.encodeStr( this.bank_branch ),\n bank_account : FtRapi.encodeStr( this.bank_account ),\n bank_account_type : FtRapi.encodeStr( this.bank_account_type ),\n treasurer_name : FtRapi.encodeStr( this.treasurer_name ),\n treasurer_phone_extension : FtRapi.encodeStr( this.treasurer_phone_extension ),\n treasurer_procedure : FtRapi.encodeStr( this.treasurer_procedure ),\n treasurer_phone : FtRapi.encodeStr( this.treasurer_phone ),\n treasurer_postal_adr_1 : FtRapi.encodeStr( this.treasurer_postal_adr_1 ),\n treasurer_postal_adr_2 : FtRapi.encodeStr( this.treasurer_postal_adr_2 ),\n treasurer_postal_adr_city : FtRapi.encodeStr( this.treasurer_postal_adr_city ),\n treasurer_postal_code : FtRapi.encodeStr( this.treasurer_postal_code ),\n secretary_name : FtRapi.encodeStr( this.secretary_name ),\n secretary_phone_extension : FtRapi.encodeStr( this.secretary_phone_extension ),\n secretary_procedure : FtRapi.encodeStr( this.secretary_procedure ),\n secretary_phone : FtRapi.encodeStr( this.secretary_phone ),\n secretary_postal_adr_1 : FtRapi.encodeStr( this.secretary_postal_adr_1 ),\n secretary_postal_adr_2 : FtRapi.encodeStr( this.secretary_postal_adr_2 ),\n secretary_postal_adr_city : FtRapi.encodeStr( this.secretary_postal_adr_city ),\n secretary_postal_adr_code : FtRapi.encodeStr( this.secretary_postal_adr_code ),\n input_date : FtRapi.encodeDate( this.input_date ),\n vicechairperson_name : FtRapi.encodeStr( this.vicechairperson_name ),\n vicechairperson_phone_extension : FtRapi.encodeStr( this.vicechairperson_phone_extension ),\n vicechairperson_procedure : FtRapi.encodeStr( this.vicechairperson_procedure ),\n vicechairperson_phone : FtRapi.encodeStr( this.vicechairperson_phone ),\n vicechairperson_postal_adr_1 : FtRapi.encodeStr( this.vicechairperson_postal_adr_1 ),\n vicechairperson_postal_adr_2 : FtRapi.encodeStr( this.vicechairperson_postal_adr_2 ),\n vicechairperson_postal_adr_city : FtRapi.encodeStr( this.vicechairperson_postal_adr_city ),\n vicechairperson_postal_adr_code : FtRapi.encodeStr( this.vicechairperson_postal_adr_code ),\n main_pastor : FtRapi.encodeStr( this.main_pastor ),\n pentecost_pastor : this.pentecost_pastor,\n file_date : FtRapi.encodeDate( this.file_date ),\n is_filed : FtRapi.encodeBool( this.is_filed ),\n move_no : FtRapi.encodeStr( this.move_no ),\n last_updated : FtRapi.encodeDttm( this.last_updated ),\n email : FtRapi.encodeStr( this.email ),\n website : FtRapi.encodeStr( this.website ),\n date_registered : FtRapi.encodeDate( this.date_registered ),\n census_date : FtRapi.encodeDate( this.census_date ),\n census_women_count : FtRapi.encodeStr( this.census_women_count ),\n census_men_count : FtRapi.encodeStr( this.census_men_count ),\n census_youth_count : FtRapi.encodeStr( this.census_youth_count ),\n census_children_count : FtRapi.encodeStr( this.census_children_count ),\n spoken_languages : FtRapi.encodeStr( this.spoken_languages ),\n title_deed : FtRapi.encodeBool( this.title_deed ),\n baptised_water_count : this.baptised_water_count,\n baptised_spirit_count : this.baptised_spirit_count,\n attending_sunday_service_count : this.attending_sunday_service_count,\n attending_sunday_school_count : this.attending_sunday_school_count,\n attending_over_35_count : this.attending_over_35_count,\n attending_under_35_count : this.attending_under_35_count,\n attending_other_count : this.attending_other_count,\n audit_books : FtRapi.encodeBool( this.audit_books ),\n assembly_policy : FtRapi.encodeBool( this.assembly_policy ),\n assembly_gb : FtRapi.encodeBool( this.assembly_gb ),\n site_no_building : FtRapi.encodeBool( this.site_no_building ),\n site_and_building : FtRapi.encodeBool( this.site_and_building ),\n no_property : FtRapi.encodeBool( this.no_property ),\n stat_funds_months : this.stat_funds_months,\n ordained_pastors_count : this.ordained_pastors_count,\n non_ordained_pastors_count : this.non_ordained_pastors_count,\n assembly_leader : FtRapi.encodeBool( this.assembly_leader ),\n service_contract : FtRapi.encodeBool( this.service_contract ),\n branch_assemblies_count : this.branch_assemblies_count,\n nlf : FtRapi.encodeBool( this.nlf ),\n notes : FtRapi.encodeStr( this.notes ),\n last_edited_by_id : this.last_edited_by_id,\n last_edited : FtRapi.encodeStr( this.last_edited ),\n web_usedid : FtRapi.encodeStr( this.web_usedid ),\n scode : FtRapi.encodeStr( this.scode ),\n gps_lat : FtRapi.encodeStr( this.gps_lat ),\n gps_long : FtRapi.encodeStr( this.gps_long ),\n bin : FtRapi.encodeStr( this.bin ),\n justice_case_active : FtRapi.encodeBool( this.justice_case_active ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.gemid = Ft.parseInt0Null( src.gemid );\n this.assembly_no = src.assembly_no;\n this.assembly_name = src.assembly_name;\n this.type_id = Ft.parseInt0Null( src.type_id );\n this.region_id = Ft.parseInt0Null( src.region_id );\n this.region_no = src.region_no;\n this.region_name = src.region_name;\n this.physical_adr_1 = src.physical_adr_1;\n this.physical_adr_2 = src.physical_adr_2;\n this.physical_adr_city = src.physical_adr_city;\n this.physical_adr_code = src.physical_adr_code;\n this.postal_adr_1 = src.postal_adr_1;\n this.postal_adr_2 = src.postal_adr_2;\n this.postal_adr_city = src.postal_adr_city;\n this.postal_code = src.postal_code;\n this.asset_register = Ft.parseBool( src.asset_register );\n this.fax_no = src.fax_no;\n this.phone_no = src.phone_no;\n this.phone_extension = src.phone_extension;\n this.procedure = src.procedure;\n this.bank = src.bank;\n this.bank_branch = src.bank_branch;\n this.bank_account = src.bank_account;\n this.bank_account_type = src.bank_account_type;\n this.treasurer_name = src.treasurer_name;\n this.treasurer_phone_extension = src.treasurer_phone_extension;\n this.treasurer_procedure = src.treasurer_procedure;\n this.treasurer_phone = src.treasurer_phone;\n this.treasurer_postal_adr_1 = src.treasurer_postal_adr_1;\n this.treasurer_postal_adr_2 = src.treasurer_postal_adr_2;\n this.treasurer_postal_adr_city = src.treasurer_postal_adr_city;\n this.treasurer_postal_code = src.treasurer_postal_code;\n this.secretary_name = src.secretary_name;\n this.secretary_phone_extension = src.secretary_phone_extension;\n this.secretary_procedure = src.secretary_procedure;\n this.secretary_phone = src.secretary_phone;\n this.secretary_postal_adr_1 = src.secretary_postal_adr_1;\n this.secretary_postal_adr_2 = src.secretary_postal_adr_2;\n this.secretary_postal_adr_city = src.secretary_postal_adr_city;\n this.secretary_postal_adr_code = src.secretary_postal_adr_code;\n this.input_date = src.input_date;\n this.vicechairperson_name = src.vicechairperson_name;\n this.vicechairperson_phone_extension = src.vicechairperson_phone_extension;\n this.vicechairperson_procedure = src.vicechairperson_procedure;\n this.vicechairperson_phone = src.vicechairperson_phone;\n this.vicechairperson_postal_adr_1 = src.vicechairperson_postal_adr_1;\n this.vicechairperson_postal_adr_2 = src.vicechairperson_postal_adr_2;\n this.vicechairperson_postal_adr_city = src.vicechairperson_postal_adr_city;\n this.vicechairperson_postal_adr_code = src.vicechairperson_postal_adr_code;\n this.main_pastor = src.main_pastor;\n this.pentecost_pastor = Ft.parseInt0Null( src.pentecost_pastor );\n this.file_date = src.file_date;\n this.is_filed = Ft.parseBool( src.is_filed );\n this.move_no = src.move_no;\n this.last_updated = src.last_updated;\n this.email = src.email;\n this.website = src.website;\n this.date_registered = src.date_registered;\n this.census_date = src.census_date;\n this.census_women_count = src.census_women_count;\n this.census_men_count = src.census_men_count;\n this.census_youth_count = src.census_youth_count;\n this.census_children_count = src.census_children_count;\n this.spoken_languages = src.spoken_languages;\n this.title_deed = Ft.parseBool( src.title_deed );\n this.baptised_water_count = Ft.parseInt0Null( src.baptised_water_count );\n this.baptised_spirit_count = Ft.parseInt0Null( src.baptised_spirit_count );\n this.attending_sunday_service_count = Ft.parseInt0Null( src.attending_sunday_service_count );\n this.attending_sunday_school_count = Ft.parseInt0Null( src.attending_sunday_school_count );\n this.attending_over_35_count = Ft.parseInt0Null( src.attending_over_35_count );\n this.attending_under_35_count = Ft.parseInt0Null( src.attending_under_35_count );\n this.attending_other_count = Ft.parseInt0Null( src.attending_other_count );\n this.audit_books = Ft.parseBool( src.audit_books );\n this.assembly_policy = Ft.parseBool( src.assembly_policy );\n this.assembly_gb = Ft.parseBool( src.assembly_gb );\n this.site_no_building = Ft.parseBool( src.site_no_building );\n this.site_and_building = Ft.parseBool( src.site_and_building );\n this.no_property = Ft.parseBool( src.no_property );\n this.stat_funds_months = Ft.parseInt0Null( src.stat_funds_months );\n this.ordained_pastors_count = Ft.parseInt0Null( src.ordained_pastors_count );\n this.non_ordained_pastors_count = Ft.parseInt0Null( src.non_ordained_pastors_count );\n this.assembly_leader = Ft.parseBool( src.assembly_leader );\n this.service_contract = Ft.parseBool( src.service_contract );\n this.branch_assemblies_count = Ft.parseInt0Null( src.branch_assemblies_count );\n this.nlf = Ft.parseBool( src.nlf );\n this.notes = src.notes;\n this.last_edited_by_id = Ft.parseInt0Null( src.last_edited_by_id );\n this.last_edited = src.last_edited;\n this.web_usedid = src.web_usedid;\n this.scode = src.scode;\n this.gps_lat = src.gps_lat;\n this.gps_long = src.gps_long;\n this.bin = src.bin;\n this.justice_case_active = Ft.parseBool( src.justice_case_active );\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.gemid = null;\n this.assembly_no = null;\n this.assembly_name = null;\n this.type_id = null;\n this.region_id = null;\n this.region_no = null;\n this.region_name = null;\n this.physical_adr_1 = null;\n this.physical_adr_2 = null;\n this.physical_adr_city = null;\n this.physical_adr_code = null;\n this.postal_adr_1 = null;\n this.postal_adr_2 = null;\n this.postal_adr_city = null;\n this.postal_code = null;\n this.asset_register = false;\n this.fax_no = null;\n this.phone_no = null;\n this.phone_extension = null;\n this.procedure = null;\n this.bank = null;\n this.bank_branch = null;\n this.bank_account = null;\n this.bank_account_type = null;\n this.treasurer_name = null;\n this.treasurer_phone_extension = null;\n this.treasurer_procedure = null;\n this.treasurer_phone = null;\n this.treasurer_postal_adr_1 = null;\n this.treasurer_postal_adr_2 = null;\n this.treasurer_postal_adr_city = null;\n this.treasurer_postal_code = null;\n this.secretary_name = null;\n this.secretary_phone_extension = null;\n this.secretary_procedure = null;\n this.secretary_phone = null;\n this.secretary_postal_adr_1 = null;\n this.secretary_postal_adr_2 = null;\n this.secretary_postal_adr_city = null;\n this.secretary_postal_adr_code = null;\n this.input_date = moment( '0001-01-01' ).toDate();\n this.vicechairperson_name = null;\n this.vicechairperson_phone_extension = null;\n this.vicechairperson_procedure = null;\n this.vicechairperson_phone = null;\n this.vicechairperson_postal_adr_1 = null;\n this.vicechairperson_postal_adr_2 = null;\n this.vicechairperson_postal_adr_city = null;\n this.vicechairperson_postal_adr_code = null;\n this.main_pastor = null;\n this.pentecost_pastor = null;\n this.file_date = moment( '0001-01-01' ).toDate();\n this.is_filed = false;\n this.move_no = null;\n this.last_updated = moment( '0001-01-01 00:00:00' ).toDate();\n this.email = null;\n this.website = null;\n this.date_registered = moment( '0001-01-01' ).toDate();\n this.census_date = moment( '0001-01-01' ).toDate();\n this.census_women_count = null;\n this.census_men_count = null;\n this.census_youth_count = null;\n this.census_children_count = null;\n this.spoken_languages = null;\n this.title_deed = false;\n this.baptised_water_count = null;\n this.baptised_spirit_count = null;\n this.attending_sunday_service_count = null;\n this.attending_sunday_school_count = null;\n this.attending_over_35_count = null;\n this.attending_under_35_count = null;\n this.attending_other_count = null;\n this.audit_books = false;\n this.assembly_policy = false;\n this.assembly_gb = false;\n this.site_no_building = false;\n this.site_and_building = false;\n this.no_property = false;\n this.stat_funds_months = null;\n this.ordained_pastors_count = null;\n this.non_ordained_pastors_count = null;\n this.assembly_leader = false;\n this.service_contract = false;\n this.branch_assemblies_count = null;\n this.nlf = false;\n this.notes = null;\n this.last_edited_by_id = null;\n this.last_edited = null;\n this.web_usedid = null;\n this.scode = null;\n this.gps_lat = null;\n this.gps_long = null;\n this.bin = null;\n this.justice_case_active = false;\r\n }\r\n}\r\n","import AssemblyPropertyBase from './base/assemblyPropertyBase';\r\n\r\n//********************************************************************\r\n// AssemblyProperty class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class AssemblyProperty extends AssemblyPropertyBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// AssemblyPropertyBase class : Generated : DO NOT MODIFY\r\nexport default class AssemblyPropertyBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n oldid: number|null;\n physical_adr_1: string|null;\n physical_adr_2: string|null;\n physical_adr_area: string|null;\n physical_adr_region: string|null;\n physical_adr_city: string|null;\n physical_adr_country: string|null;\n assembly_id: number|null;\n assembly_name: string|null;\n assembly_no: string|null;\n erf_no: string|null;\n purch_value: Decimal|null;\n purch_date: Date|null;\n owner: string|null;\n phone: string|null;\n cell: string|null;\n email: string|null;\n notes: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.oldid = 0;\n this.physical_adr_1 = '';\n this.physical_adr_2 = '';\n this.physical_adr_area = '';\n this.physical_adr_region = '';\n this.physical_adr_city = '';\n this.physical_adr_country = '';\n this.assembly_id = 0;\n this.assembly_name = '';\n this.assembly_no = '';\n this.erf_no = '';\n this.purch_value = new Decimal('0.0');\n this.purch_date = moment( '0001-01-01' ).toDate();\n this.owner = '';\n this.phone = '';\n this.cell = '';\n this.email = '';\n this.notes = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.oldid = obj.oldid;\n this.physical_adr_1 = obj.physical_adr_1;\n this.physical_adr_2 = obj.physical_adr_2;\n this.physical_adr_area = obj.physical_adr_area;\n this.physical_adr_region = obj.physical_adr_region;\n this.physical_adr_city = obj.physical_adr_city;\n this.physical_adr_country = obj.physical_adr_country;\n this.assembly_id = obj.assembly_id;\n this.assembly_name = obj.assembly_name;\n this.assembly_no = obj.assembly_no;\n this.erf_no = obj.erf_no;\n this.purch_value = FtRapi.decodeDec( obj.purch_value );\n this.purch_date = FtRapi.decodeDate( obj.purch_date );\n this.owner = obj.owner;\n this.phone = obj.phone;\n this.cell = obj.cell;\n this.email = obj.email;\n this.notes = obj.notes;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n oldid : this.oldid,\n physical_adr_1 : FtRapi.encodeStr( this.physical_adr_1 ),\n physical_adr_2 : FtRapi.encodeStr( this.physical_adr_2 ),\n physical_adr_area : FtRapi.encodeStr( this.physical_adr_area ),\n physical_adr_region : FtRapi.encodeStr( this.physical_adr_region ),\n physical_adr_city : FtRapi.encodeStr( this.physical_adr_city ),\n physical_adr_country : FtRapi.encodeStr( this.physical_adr_country ),\n assembly_id : this.assembly_id,\n assembly_name : FtRapi.encodeStr( this.assembly_name ),\n assembly_no : FtRapi.encodeStr( this.assembly_no ),\n erf_no : FtRapi.encodeStr( this.erf_no ),\n purch_value : FtRapi.encodeDec( this.purch_value ),\n purch_date : FtRapi.encodeDate( this.purch_date ),\n owner : FtRapi.encodeStr( this.owner ),\n phone : FtRapi.encodeStr( this.phone ),\n cell : FtRapi.encodeStr( this.cell ),\n email : FtRapi.encodeStr( this.email ),\n notes : FtRapi.encodeStr( this.notes ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.oldid = Ft.parseInt0Null( src.oldid );\n this.physical_adr_1 = src.physical_adr_1;\n this.physical_adr_2 = src.physical_adr_2;\n this.physical_adr_area = src.physical_adr_area;\n this.physical_adr_region = src.physical_adr_region;\n this.physical_adr_city = src.physical_adr_city;\n this.physical_adr_country = src.physical_adr_country;\n this.assembly_id = Ft.parseInt0Null( src.assembly_id );\n this.assembly_name = src.assembly_name;\n this.assembly_no = src.assembly_no;\n this.erf_no = src.erf_no;\n this.purch_value = new Decimal( src.purch_value );\n this.purch_date = src.purch_date;\n this.owner = src.owner;\n this.phone = src.phone;\n this.cell = src.cell;\n this.email = src.email;\n this.notes = src.notes;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.oldid = null;\n this.physical_adr_1 = null;\n this.physical_adr_2 = null;\n this.physical_adr_area = null;\n this.physical_adr_region = null;\n this.physical_adr_city = null;\n this.physical_adr_country = null;\n this.assembly_id = null;\n this.assembly_name = null;\n this.assembly_no = null;\n this.erf_no = null;\n this.purch_value = null;\n this.purch_date = moment( '0001-01-01' ).toDate();\n this.owner = null;\n this.phone = null;\n this.cell = null;\n this.email = null;\n this.notes = null;\r\n }\r\n}\r\n","import AssemblyRegionBase from './base/assemblyRegionBase';\r\n\r\n//********************************************************************\r\n// AssemblyRegion class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class AssemblyRegion extends AssemblyRegionBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// AssemblyRegionBase class : Generated : DO NOT MODIFY\r\nexport default class AssemblyRegionBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n oldid: number|null;\n region_name: string|null;\n region_no: string|null;\n status: string|null;\n is_filed: boolean|null;\n file_date: Date|null;\n move_no: string|null;\n nlf: boolean|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.oldid = 0;\n this.region_name = '';\n this.region_no = '';\n this.status = '';\n this.is_filed = false;\n this.file_date = moment( '0001-01-01' ).toDate();\n this.move_no = '';\n this.nlf = false;\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.oldid = obj.oldid;\n this.region_name = obj.region_name;\n this.region_no = obj.region_no;\n this.status = obj.status;\n this.is_filed = obj.is_filed;\n this.file_date = FtRapi.decodeDate( obj.file_date );\n this.move_no = obj.move_no;\n this.nlf = obj.nlf;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n oldid : this.oldid,\n region_name : FtRapi.encodeStr( this.region_name ),\n region_no : FtRapi.encodeStr( this.region_no ),\n status : FtRapi.encodeStr( this.status ),\n is_filed : FtRapi.encodeBool( this.is_filed ),\n file_date : FtRapi.encodeDate( this.file_date ),\n move_no : FtRapi.encodeStr( this.move_no ),\n nlf : FtRapi.encodeBool( this.nlf ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.oldid = Ft.parseInt0Null( src.oldid );\n this.region_name = src.region_name;\n this.region_no = src.region_no;\n this.status = src.status;\n this.is_filed = Ft.parseBool( src.is_filed );\n this.file_date = src.file_date;\n this.move_no = src.move_no;\n this.nlf = Ft.parseBool( src.nlf );\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.oldid = null;\n this.region_name = null;\n this.region_no = null;\n this.status = null;\n this.is_filed = false;\n this.file_date = moment( '0001-01-01' ).toDate();\n this.move_no = null;\n this.nlf = false;\r\n }\r\n}\r\n","import AssemblyTypeBase from './base/assemblyTypeBase';\r\n\r\n//********************************************************************\r\n// AssemblyType class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class AssemblyType extends AssemblyTypeBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static AT_AFFILIATED = 1;\n static AT_NORMAL = 2;\n static AT_DEPARTMENT = 3;\n static AT_MISSION = 4;\n static AT_SPECIALIZED = 5;\n static AT_PROJECT = 6;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// AssemblyTypeBase class : Generated : DO NOT MODIFY\r\nexport default class AssemblyTypeBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import AttendeeBase from './base/attendeeBase';\r\n\r\n//********************************************************************\r\n// Attendee class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class Attendee extends AttendeeBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// AttendeeBase class : Generated : DO NOT MODIFY\r\nexport default class AttendeeBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n conference_id: number|null;\n surname: string|null;\n fullnames: string|null;\n title_id: number|null;\n rsaid_no: string|null;\n postal_adr_1: string|null;\n postal_adr_2: string|null;\n postal_adr_code: string|null;\n email: string|null;\n cell_no: string|null;\n phone: string|null;\n fax: string|null;\n assembly_id: number|null;\n province_id: number|null;\n region_id: number|null;\n attendee_type_id: number|null;\n contact_method_id: number|null;\n capture_dttm: Date|null;\n payment_date: Date|null;\n payment_online: boolean|null;\n payment: boolean|null;\n payment_amount: Decimal|null;\n payment_method_id: number|null;\n card_printing: boolean|null;\n card_printed: boolean|null;\n is_committee: boolean|null;\n reg_status_id: number|null;\n goodybag_received: boolean|null;\n goodybag_scan_user_id: number|null;\n goodybag_scan_dttm: Date|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.conference_id = 0;\n this.surname = '';\n this.fullnames = '';\n this.title_id = 0;\n this.rsaid_no = '';\n this.postal_adr_1 = '';\n this.postal_adr_2 = '';\n this.postal_adr_code = '';\n this.email = '';\n this.cell_no = '';\n this.phone = '';\n this.fax = '';\n this.assembly_id = 0;\n this.province_id = 0;\n this.region_id = 0;\n this.attendee_type_id = 0;\n this.contact_method_id = 0;\n this.capture_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.payment_date = moment( '0001-01-01' ).toDate();\n this.payment_online = false;\n this.payment = false;\n this.payment_amount = new Decimal('0.0');\n this.payment_method_id = 0;\n this.card_printing = false;\n this.card_printed = false;\n this.is_committee = false;\n this.reg_status_id = 0;\n this.goodybag_received = false;\n this.goodybag_scan_user_id = 0;\n this.goodybag_scan_dttm = moment( '0001-01-01 00:00:00' ).toDate();\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.conference_id = obj.conference_id;\n this.surname = obj.surname;\n this.fullnames = obj.fullnames;\n this.title_id = obj.title_id;\n this.rsaid_no = obj.rsaid_no;\n this.postal_adr_1 = obj.postal_adr_1;\n this.postal_adr_2 = obj.postal_adr_2;\n this.postal_adr_code = obj.postal_adr_code;\n this.email = obj.email;\n this.cell_no = obj.cell_no;\n this.phone = obj.phone;\n this.fax = obj.fax;\n this.assembly_id = obj.assembly_id;\n this.province_id = obj.province_id;\n this.region_id = obj.region_id;\n this.attendee_type_id = obj.attendee_type_id;\n this.contact_method_id = obj.contact_method_id;\n this.capture_dttm = FtRapi.decodeDttm( obj.capture_dttm );\n this.payment_date = FtRapi.decodeDate( obj.payment_date );\n this.payment_online = obj.payment_online;\n this.payment = obj.payment;\n this.payment_amount = FtRapi.decodeDec( obj.payment_amount );\n this.payment_method_id = obj.payment_method_id;\n this.card_printing = obj.card_printing;\n this.card_printed = obj.card_printed;\n this.is_committee = obj.is_committee;\n this.reg_status_id = obj.reg_status_id;\n this.goodybag_received = obj.goodybag_received;\n this.goodybag_scan_user_id = obj.goodybag_scan_user_id;\n this.goodybag_scan_dttm = FtRapi.decodeDttm( obj.goodybag_scan_dttm );\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n conference_id : this.conference_id,\n surname : FtRapi.encodeStr( this.surname ),\n fullnames : FtRapi.encodeStr( this.fullnames ),\n title_id : this.title_id,\n rsaid_no : FtRapi.encodeStr( this.rsaid_no ),\n postal_adr_1 : FtRapi.encodeStr( this.postal_adr_1 ),\n postal_adr_2 : FtRapi.encodeStr( this.postal_adr_2 ),\n postal_adr_code : FtRapi.encodeStr( this.postal_adr_code ),\n email : FtRapi.encodeStr( this.email ),\n cell_no : FtRapi.encodeStr( this.cell_no ),\n phone : FtRapi.encodeStr( this.phone ),\n fax : FtRapi.encodeStr( this.fax ),\n assembly_id : this.assembly_id,\n province_id : this.province_id,\n region_id : this.region_id,\n attendee_type_id : this.attendee_type_id,\n contact_method_id : this.contact_method_id,\n capture_dttm : FtRapi.encodeDttm( this.capture_dttm ),\n payment_date : FtRapi.encodeDate( this.payment_date ),\n payment_online : FtRapi.encodeBool( this.payment_online ),\n payment : FtRapi.encodeBool( this.payment ),\n payment_amount : FtRapi.encodeDec( this.payment_amount ),\n payment_method_id : this.payment_method_id,\n card_printing : FtRapi.encodeBool( this.card_printing ),\n card_printed : FtRapi.encodeBool( this.card_printed ),\n is_committee : FtRapi.encodeBool( this.is_committee ),\n reg_status_id : this.reg_status_id,\n goodybag_received : FtRapi.encodeBool( this.goodybag_received ),\n goodybag_scan_user_id : this.goodybag_scan_user_id,\n goodybag_scan_dttm : FtRapi.encodeDttm( this.goodybag_scan_dttm ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.conference_id = Ft.parseInt0Null( src.conference_id );\n this.surname = src.surname;\n this.fullnames = src.fullnames;\n this.title_id = Ft.parseInt0Null( src.title_id );\n this.rsaid_no = src.rsaid_no;\n this.postal_adr_1 = src.postal_adr_1;\n this.postal_adr_2 = src.postal_adr_2;\n this.postal_adr_code = src.postal_adr_code;\n this.email = src.email;\n this.cell_no = src.cell_no;\n this.phone = src.phone;\n this.fax = src.fax;\n this.assembly_id = Ft.parseInt0Null( src.assembly_id );\n this.province_id = Ft.parseInt0Null( src.province_id );\n this.region_id = Ft.parseInt0Null( src.region_id );\n this.attendee_type_id = Ft.parseInt0Null( src.attendee_type_id );\n this.contact_method_id = Ft.parseInt0Null( src.contact_method_id );\n this.capture_dttm = src.capture_dttm;\n this.payment_date = src.payment_date;\n this.payment_online = Ft.parseBool( src.payment_online );\n this.payment = Ft.parseBool( src.payment );\n this.payment_amount = new Decimal( src.payment_amount );\n this.payment_method_id = Ft.parseInt0Null( src.payment_method_id );\n this.card_printing = Ft.parseBool( src.card_printing );\n this.card_printed = Ft.parseBool( src.card_printed );\n this.is_committee = Ft.parseBool( src.is_committee );\n this.reg_status_id = Ft.parseInt0Null( src.reg_status_id );\n this.goodybag_received = Ft.parseBool( src.goodybag_received );\n this.goodybag_scan_user_id = Ft.parseInt0Null( src.goodybag_scan_user_id );\n this.goodybag_scan_dttm = src.goodybag_scan_dttm;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.conference_id = null;\n this.surname = null;\n this.fullnames = null;\n this.title_id = null;\n this.rsaid_no = null;\n this.postal_adr_1 = null;\n this.postal_adr_2 = null;\n this.postal_adr_code = null;\n this.email = null;\n this.cell_no = null;\n this.phone = null;\n this.fax = null;\n this.assembly_id = null;\n this.province_id = null;\n this.region_id = null;\n this.attendee_type_id = null;\n this.contact_method_id = null;\n this.capture_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.payment_date = moment( '0001-01-01' ).toDate();\n this.payment_online = false;\n this.payment = false;\n this.payment_amount = null;\n this.payment_method_id = null;\n this.card_printing = false;\n this.card_printed = false;\n this.is_committee = false;\n this.reg_status_id = null;\n this.goodybag_received = false;\n this.goodybag_scan_user_id = null;\n this.goodybag_scan_dttm = moment( '0001-01-01 00:00:00' ).toDate();\r\n }\r\n}\r\n","import AttendeeTitleBase from './base/attendeeTitleBase';\r\n\r\n//********************************************************************\r\n// AttendeeTitle class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class AttendeeTitle extends AttendeeTitleBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static AT_PAST = 1;\n static AT_MR = 2;\n static AT_MS = 3;\n static AT_MRS = 4;\n static AT_DR = 5;\n static AT_PROF = 6;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// AttendeeTitleBase class : Generated : DO NOT MODIFY\r\nexport default class AttendeeTitleBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import AttendeeTypeBase from './base/attendeeTypeBase';\r\n\r\n//********************************************************************\r\n// AttendeeType class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class AttendeeType extends AttendeeTypeBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static AT_DELPASTOR = 1;\n static AT_DELEGATE = 2;\n static AT_NLFMEMBER = 3;\n static AT_NATDEP = 4;\n static AT_STANCOMMEM = 5;\n static AT_OBSERVER = 6;\n static AT_EMIRITUS = 7;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// AttendeeTypeBase class : Generated : DO NOT MODIFY\r\nexport default class AttendeeTypeBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import AuditActionBase from './base/auditActionBase';\r\n\r\n//********************************************************************\r\n// AuditAction class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class AuditAction extends AuditActionBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static AA_VOTE_POSITION_OPEN = 1;\n static AA_VOTE_POSITION_CLOSE = 2;\n static AA_VOTE_POSITION_REVERSE = 3;\n static AA_VOTE_ROUND_REVERSE = 4;\n static AA_VOTE_ROUND_PROCESS = 5;\n static AA_VOTE_ROUND_OPEN = 6;\n static AA_VOTE_ROUND_CLOSE = 7;\n static AA_VOTE_ROUND_SUBMIT = 8;\n static AA_VOTE_CANDIDATE_CAPTURE_NOMIN = 9;\n static AA_VOTE_CANDIDATE_VOTE_EDIT = 10;\n static AA_VOTE_CANDIDATE_DELETE = 11;\n static AA_VOTE_CANDIDATE_PRIMARY_APPROVE = 12;\n static AA_VOTE_CANDIDATE_SECONDARY_APPROVE = 13;\n static AA_VOTE_CANDIDATE_SECONDARY_REJECT = 14;\n static AA_VOTE_CANDIDATE_FINALIST_SET = 15;\n static AA_VOTE_CANDIDATE_FINALIST_UNSET = 16;\n static AA_VOTE_CANDIDATE_DISQUALIFIY_SET = 17;\n static AA_VOTE_CANDIDATE_DISQUALIFIY_UNSET = 18;\n // #FTGEN_CONSTS_Z#\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// AuditActionBase class : Generated : DO NOT MODIFY\r\nexport default class AuditActionBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import CandidateStatusBase from './base/candidateStatusBase';\r\n\r\n//********************************************************************\r\n// CandidateStatus class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class CandidateStatus extends CandidateStatusBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static CS_OPEN_FOR_VOTING = 1;\n static CS_APPROVED_PRIMARY = 2;\n static CS_APPROVED_SECONDARY = 3;\n static CS_APPROVED_FINAL = 4;\n static CS_DISQUALIFIED = 5;\n // #FTGEN_CONSTS_Z#\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// CandidateStatusBase class : Generated : DO NOT MODIFY\r\nexport default class CandidateStatusBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = FtRapi.decodeUni( obj.name );\n this.description = FtRapi.decodeUni( obj.description );\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeUni( this.name ),\n description : FtRapi.encodeUni( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import ConferenceBase from './base/conferenceBase';\r\n\r\n//********************************************************************\r\n// Conference class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class Conference extends ConferenceBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// ConferenceBase class : Generated : DO NOT MODIFY\r\nexport default class ConferenceBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n is_active: boolean|null;\n conf_date: Date|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.is_active = false;\n this.conf_date = moment( '0001-01-01' ).toDate();\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.is_active = obj.is_active;\n this.conf_date = FtRapi.decodeDate( obj.conf_date );\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n is_active : FtRapi.encodeBool( this.is_active ),\n conf_date : FtRapi.encodeDate( this.conf_date ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.is_active = Ft.parseBool( src.is_active );\n this.conf_date = src.conf_date;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.is_active = false;\n this.conf_date = moment( '0001-01-01' ).toDate();\r\n }\r\n}\r\n","import ConfRegisterStatusBase from './base/confRegisterStatusBase';\r\n\r\n//********************************************************************\r\n// ConfRegisterStatus class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class ConfRegisterStatus extends ConfRegisterStatusBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static CRS_NOT_REGISTERED = 1;\n static CRS_REGISTERED_NOTPAID = 2;\n static CRS_REGISTERED_AND_PAID = 3;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// ConfRegisterStatusBase class : Generated : DO NOT MODIFY\r\nexport default class ConfRegisterStatusBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\r\n }\r\n}\r\n","import ContactMethodBase from './base/contactMethodBase';\r\n\r\n//********************************************************************\r\n// ContactMethod class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class ContactMethod extends ContactMethodBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static CM_SMS = 1;\n static CM_WHATSAPP = 2;\n static CM_EMAIL = 3;\n static CM_POST = 4;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// ContactMethodBase class : Generated : DO NOT MODIFY\r\nexport default class ContactMethodBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import GenderBase from './base/genderBase';\r\n\r\n//********************************************************************\r\n// Gender class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class Gender extends GenderBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static G_MALE = 1;\n static G_FEMALE = 2;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// GenderBase class : Generated : DO NOT MODIFY\r\nexport default class GenderBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import GenLookupBase from './base/genLookupBase';\r\n\r\n//********************************************************************\r\n// GenLookup class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class GenLookup extends GenLookupBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// GenLookupBase class : Generated : DO NOT MODIFY\r\nexport default class GenLookupBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\r\n }\r\n}\r\n","import JusticeBase from './base/justiceBase';\r\n\r\n//********************************************************************\r\n// Justice class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class Justice extends JusticeBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// JusticeBase class : Generated : DO NOT MODIFY\r\nexport default class JusticeBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n oldid: number|null;\n oldid2: number|null;\n userz_id: number|null;\n userz_who: string|null;\n assembly_id: number|null;\n pastor_id: number|null;\n entry_date: Date|null;\n description: string|null;\n member_no: string|null;\n case_no: string|null;\n resolution: string|null;\n date_resolved: Date|null;\n resolutionb_expiry_date: Date|null;\n status_id: number|null;\n status_name: string|null;\n category_id: number|null;\n category_name: string|null;\n com_name: string|null;\n com_natid: string|null;\n com_affil: string|null;\n com_gender_id: number|null;\n com_gender_name: string|null;\n com_phone: string|null;\n com_fax: string|null;\n com_email: string|null;\n com_physical_adr_1: string|null;\n com_physical_adr_2: string|null;\n com_physical_adr_city: string|null;\n com_physical_adr_code: string|null;\n com_cocom: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.oldid = 0;\n this.oldid2 = 0;\n this.userz_id = 0;\n this.userz_who = '';\n this.assembly_id = 0;\n this.pastor_id = 0;\n this.entry_date = moment( '0001-01-01' ).toDate();\n this.description = '';\n this.member_no = '';\n this.case_no = '';\n this.resolution = '';\n this.date_resolved = moment( '0001-01-01' ).toDate();\n this.resolutionb_expiry_date = moment( '0001-01-01' ).toDate();\n this.status_id = 0;\n this.status_name = '';\n this.category_id = 0;\n this.category_name = '';\n this.com_name = '';\n this.com_natid = '';\n this.com_affil = '';\n this.com_gender_id = 0;\n this.com_gender_name = '';\n this.com_phone = '';\n this.com_fax = '';\n this.com_email = '';\n this.com_physical_adr_1 = '';\n this.com_physical_adr_2 = '';\n this.com_physical_adr_city = '';\n this.com_physical_adr_code = '';\n this.com_cocom = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.oldid = obj.oldid;\n this.oldid2 = obj.oldid2;\n this.userz_id = obj.userz_id;\n this.userz_who = obj.userz_who;\n this.assembly_id = obj.assembly_id;\n this.pastor_id = obj.pastor_id;\n this.entry_date = FtRapi.decodeDate( obj.entry_date );\n this.description = obj.description;\n this.member_no = obj.member_no;\n this.case_no = obj.case_no;\n this.resolution = obj.resolution;\n this.date_resolved = FtRapi.decodeDate( obj.date_resolved );\n this.resolutionb_expiry_date = FtRapi.decodeDate( obj.resolutionb_expiry_date );\n this.status_id = obj.status_id;\n this.status_name = obj.status_name;\n this.category_id = obj.category_id;\n this.category_name = obj.category_name;\n this.com_name = obj.com_name;\n this.com_natid = obj.com_natid;\n this.com_affil = obj.com_affil;\n this.com_gender_id = obj.com_gender_id;\n this.com_gender_name = obj.com_gender_name;\n this.com_phone = obj.com_phone;\n this.com_fax = obj.com_fax;\n this.com_email = obj.com_email;\n this.com_physical_adr_1 = obj.com_physical_adr_1;\n this.com_physical_adr_2 = obj.com_physical_adr_2;\n this.com_physical_adr_city = obj.com_physical_adr_city;\n this.com_physical_adr_code = obj.com_physical_adr_code;\n this.com_cocom = obj.com_cocom;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n oldid : this.oldid,\n oldid2 : this.oldid2,\n userz_id : this.userz_id,\n userz_who : FtRapi.encodeStr( this.userz_who ),\n assembly_id : this.assembly_id,\n pastor_id : this.pastor_id,\n entry_date : FtRapi.encodeDate( this.entry_date ),\n description : FtRapi.encodeStr( this.description ),\n member_no : FtRapi.encodeStr( this.member_no ),\n case_no : FtRapi.encodeStr( this.case_no ),\n resolution : FtRapi.encodeStr( this.resolution ),\n date_resolved : FtRapi.encodeDate( this.date_resolved ),\n resolutionb_expiry_date : FtRapi.encodeDate( this.resolutionb_expiry_date ),\n status_id : this.status_id,\n status_name : FtRapi.encodeStr( this.status_name ),\n category_id : this.category_id,\n category_name : FtRapi.encodeStr( this.category_name ),\n com_name : FtRapi.encodeStr( this.com_name ),\n com_natid : FtRapi.encodeStr( this.com_natid ),\n com_affil : FtRapi.encodeStr( this.com_affil ),\n com_gender_id : this.com_gender_id,\n com_gender_name : FtRapi.encodeStr( this.com_gender_name ),\n com_phone : FtRapi.encodeStr( this.com_phone ),\n com_fax : FtRapi.encodeStr( this.com_fax ),\n com_email : FtRapi.encodeStr( this.com_email ),\n com_physical_adr_1 : FtRapi.encodeStr( this.com_physical_adr_1 ),\n com_physical_adr_2 : FtRapi.encodeStr( this.com_physical_adr_2 ),\n com_physical_adr_city : FtRapi.encodeStr( this.com_physical_adr_city ),\n com_physical_adr_code : FtRapi.encodeStr( this.com_physical_adr_code ),\n com_cocom : FtRapi.encodeStr( this.com_cocom ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.oldid = Ft.parseInt0Null( src.oldid );\n this.oldid2 = Ft.parseInt0Null( src.oldid2 );\n this.userz_id = Ft.parseInt0Null( src.userz_id );\n this.userz_who = src.userz_who;\n this.assembly_id = Ft.parseInt0Null( src.assembly_id );\n this.pastor_id = Ft.parseInt0Null( src.pastor_id );\n this.entry_date = src.entry_date;\n this.description = src.description;\n this.member_no = src.member_no;\n this.case_no = src.case_no;\n this.resolution = src.resolution;\n this.date_resolved = src.date_resolved;\n this.resolutionb_expiry_date = src.resolutionb_expiry_date;\n this.status_id = Ft.parseInt0Null( src.status_id );\n this.status_name = src.status_name;\n this.category_id = Ft.parseInt0Null( src.category_id );\n this.category_name = src.category_name;\n this.com_name = src.com_name;\n this.com_natid = src.com_natid;\n this.com_affil = src.com_affil;\n this.com_gender_id = Ft.parseInt0Null( src.com_gender_id );\n this.com_gender_name = src.com_gender_name;\n this.com_phone = src.com_phone;\n this.com_fax = src.com_fax;\n this.com_email = src.com_email;\n this.com_physical_adr_1 = src.com_physical_adr_1;\n this.com_physical_adr_2 = src.com_physical_adr_2;\n this.com_physical_adr_city = src.com_physical_adr_city;\n this.com_physical_adr_code = src.com_physical_adr_code;\n this.com_cocom = src.com_cocom;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.oldid = null;\n this.oldid2 = null;\n this.userz_id = null;\n this.userz_who = null;\n this.assembly_id = null;\n this.pastor_id = null;\n this.entry_date = moment( '0001-01-01' ).toDate();\n this.description = null;\n this.member_no = null;\n this.case_no = null;\n this.resolution = null;\n this.date_resolved = moment( '0001-01-01' ).toDate();\n this.resolutionb_expiry_date = moment( '0001-01-01' ).toDate();\n this.status_id = null;\n this.status_name = null;\n this.category_id = null;\n this.category_name = null;\n this.com_name = null;\n this.com_natid = null;\n this.com_affil = null;\n this.com_gender_id = null;\n this.com_gender_name = null;\n this.com_phone = null;\n this.com_fax = null;\n this.com_email = null;\n this.com_physical_adr_1 = null;\n this.com_physical_adr_2 = null;\n this.com_physical_adr_city = null;\n this.com_physical_adr_code = null;\n this.com_cocom = null;\r\n }\r\n}\r\n","import JusticeCategoryBase from './base/justiceCategoryBase';\r\n\r\n//********************************************************************\r\n// JusticeCategory class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class JusticeCategory extends JusticeCategoryBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static JC_ASSEMBLY = 1;\n static JC_PASTOR = 2;\n static JC_REGION = 3;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// JusticeCategoryBase class : Generated : DO NOT MODIFY\r\nexport default class JusticeCategoryBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import JusticeFileBase from './base/justiceFileBase';\r\n\r\n//********************************************************************\r\n// JusticeFile class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class JusticeFile extends JusticeFileBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// JusticeFileBase class : Generated : DO NOT MODIFY\r\nexport default class JusticeFileBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n justice_id: number|null;\n arcrepo_id: number|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.justice_id = 0;\n this.arcrepo_id = 0;\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.justice_id = obj.justice_id;\n this.arcrepo_id = obj.arcrepo_id;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n justice_id : this.justice_id,\n arcrepo_id : this.arcrepo_id,\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.justice_id = Ft.parseInt0Null( src.justice_id );\n this.arcrepo_id = Ft.parseInt0Null( src.arcrepo_id );\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.justice_id = null;\n this.arcrepo_id = null;\r\n }\r\n}\r\n","import JusticeNoteBase from './base/justiceNoteBase';\r\n\r\n//********************************************************************\r\n// JusticeNote class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class JusticeNote extends JusticeNoteBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// JusticeNoteBase class : Generated : DO NOT MODIFY\r\nexport default class JusticeNoteBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n oldid: number|null;\n oldid2: number|null;\n userz_id: number|null;\n userz_who: string|null;\n entry_date: Date|null;\n description: string|null;\n member_no: string|null;\n justice_id: number|null;\n justice_case_no: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.oldid = 0;\n this.oldid2 = 0;\n this.userz_id = 0;\n this.userz_who = '';\n this.entry_date = moment( '0001-01-01' ).toDate();\n this.description = '';\n this.member_no = '';\n this.justice_id = 0;\n this.justice_case_no = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.oldid = obj.oldid;\n this.oldid2 = obj.oldid2;\n this.userz_id = obj.userz_id;\n this.userz_who = obj.userz_who;\n this.entry_date = FtRapi.decodeDate( obj.entry_date );\n this.description = obj.description;\n this.member_no = obj.member_no;\n this.justice_id = obj.justice_id;\n this.justice_case_no = obj.justice_case_no;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n oldid : this.oldid,\n oldid2 : this.oldid2,\n userz_id : this.userz_id,\n userz_who : FtRapi.encodeStr( this.userz_who ),\n entry_date : FtRapi.encodeDate( this.entry_date ),\n description : FtRapi.encodeStr( this.description ),\n member_no : FtRapi.encodeStr( this.member_no ),\n justice_id : this.justice_id,\n justice_case_no : FtRapi.encodeStr( this.justice_case_no ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.oldid = Ft.parseInt0Null( src.oldid );\n this.oldid2 = Ft.parseInt0Null( src.oldid2 );\n this.userz_id = Ft.parseInt0Null( src.userz_id );\n this.userz_who = src.userz_who;\n this.entry_date = src.entry_date;\n this.description = src.description;\n this.member_no = src.member_no;\n this.justice_id = Ft.parseInt0Null( src.justice_id );\n this.justice_case_no = src.justice_case_no;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.oldid = null;\n this.oldid2 = null;\n this.userz_id = null;\n this.userz_who = null;\n this.entry_date = moment( '0001-01-01' ).toDate();\n this.description = null;\n this.member_no = null;\n this.justice_id = null;\n this.justice_case_no = null;\r\n }\r\n}\r\n","import JusticeStatusBase from './base/justiceStatusBase';\r\n\r\n//********************************************************************\r\n// JusticeStatus class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class JusticeStatus extends JusticeStatusBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static JS_ACTIVE = 1;\n static JS_CLOSED = 2;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// JusticeStatusBase class : Generated : DO NOT MODIFY\r\nexport default class JusticeStatusBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import LanguageBase from './base/languageBase';\r\n\r\n//********************************************************************\r\n// Language class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class Language extends LanguageBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// LanguageBase class : Generated : DO NOT MODIFY\r\nexport default class LanguageBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import MaritalStatusBase from './base/maritalStatusBase';\r\n\r\n//********************************************************************\r\n// MaritalStatus class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class MaritalStatus extends MaritalStatusBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static MS_SINGLE = 1;\n static MS_MARRIED = 2;\n static MS_WIDOWER = 3;\n static MS_WIDOW = 4;\n static MS_DIVORCED = 5;\n static MS_UNKNOWN = 6;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// MaritalStatusBase class : Generated : DO NOT MODIFY\r\nexport default class MaritalStatusBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import ParameterBase from './base/parameterBase';\r\n\r\n//********************************************************************\r\n// Parameter class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class Parameter extends ParameterBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// ParameterBase class : Generated : DO NOT MODIFY\r\nexport default class ParameterBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n version_app: string|null;\n version_break: boolean|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.version_app = '';\n this.version_break = false;\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.version_app = obj.version_app;\n this.version_break = obj.version_break;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n version_app : FtRapi.encodeStr( this.version_app ),\n version_break : FtRapi.encodeBool( this.version_break ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.version_app = src.version_app;\n this.version_break = Ft.parseBool( src.version_break );\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.version_app = null;\n this.version_break = false;\r\n }\r\n}\r\n","import PastorBase from './base/pastorBase';\r\n\r\n//********************************************************************\r\n// Pastor class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class Pastor extends PastorBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// PastorBase class : Generated : DO NOT MODIFY\r\nexport default class PastorBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n pastid: number|null;\n member_no: string|null;\n first_name: string|null;\n surname: string|null;\n maiden_name: string|null;\n initials: string|null;\n personal_title: string|null;\n title_id: number|null;\n idno: string|null;\n gender_id: number|null;\n gender_name: string|null;\n birth_date: Date|null;\n birth_place: string|null;\n death_date: Date|null;\n instruments: string|null;\n spouse_member_no: string|null;\n spouse_first_name: string|null;\n spouse_surname: string|null;\n spouse_maiden_name: string|null;\n spouse_initials: string|null;\n spouse_personal_title: string|null;\n spouse_idno: string|null;\n spouse_birth_date: Date|null;\n spouse_birth_place: string|null;\n spouse_death_date: Date|null;\n spouse_talents: string|null;\n phone_home: string|null;\n fax_home: string|null;\n phone_work: string|null;\n postal_adr_1: string|null;\n postal_adr_2: string|null;\n postal_adr_city: string|null;\n postal_adr_code: string|null;\n postal_adr_country: string|null;\n assembly_id: number|null;\n assembly_name: string|null;\n assembly_no: string|null;\n region_id: number|null;\n region_no: string|null;\n pastor_status: string|null;\n children_count: number|null;\n marital_status_id: number|null;\n marital_status: string|null;\n wedding_date: Date|null;\n fulltime_date: Date|null;\n marriage_officiant_date: Date|null;\n q_number: string|null;\n ordained_date: Date|null;\n legitimize_date: Date|null;\n preachers_panel_tv_date: Date|null;\n preachers_panel_radio_date: Date|null;\n phone_extension: string|null;\n phone_request_line: boolean|null;\n remarks: string|null;\n language_preference: string|null;\n physical_adr_1: string|null;\n physical_adr_2: string|null;\n physical_adr_city: string|null;\n physical_adr_code: string|null;\n input_date: Date|null;\n position_id: number|null;\n position_no: string|null;\n celno: string|null;\n email: string|null;\n expiry_date: Date|null;\n photo: string|null;\n photoz_id: number|null;\n application_date: Date|null;\n notes: string|null;\n file_date: string|null;\n is_filed: boolean|null;\n move_no: string|null;\n last_updated: Date|null;\n add_change_date: Date|null;\n preferred_addressee: boolean|null;\n ge_comms: boolean|null;\n special_start_date: Date|null;\n special_end_date: Date|null;\n special_reason: string|null;\n file_no: string|null;\n bin: string|null;\n seconded_to: string|null;\n seconded_report_date: Date|null;\n called_date: Date|null;\n accepted_date: Date|null;\n seconded_date: Date|null;\n country: string|null;\n justice_case_active: boolean|null;\n last_edited: string|null;\n field1_text: string|null;\n field2_num: string|null;\n field3_date: Date|null;\n field_text2: string|null;\n field_text3: string|null;\n field_text4: string|null;\n field_text5: string|null;\n pastor_own: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.pastid = 0;\n this.member_no = '';\n this.first_name = '';\n this.surname = '';\n this.maiden_name = '';\n this.initials = '';\n this.personal_title = '';\n this.title_id = 0;\n this.idno = '';\n this.gender_id = 0;\n this.gender_name = '';\n this.birth_date = moment( '0001-01-01' ).toDate();\n this.birth_place = '';\n this.death_date = moment( '0001-01-01' ).toDate();\n this.instruments = '';\n this.spouse_member_no = '';\n this.spouse_first_name = '';\n this.spouse_surname = '';\n this.spouse_maiden_name = '';\n this.spouse_initials = '';\n this.spouse_personal_title = '';\n this.spouse_idno = '';\n this.spouse_birth_date = moment( '0001-01-01' ).toDate();\n this.spouse_birth_place = '';\n this.spouse_death_date = moment( '0001-01-01' ).toDate();\n this.spouse_talents = '';\n this.phone_home = '';\n this.fax_home = '';\n this.phone_work = '';\n this.postal_adr_1 = '';\n this.postal_adr_2 = '';\n this.postal_adr_city = '';\n this.postal_adr_code = '';\n this.postal_adr_country = '';\n this.assembly_id = 0;\n this.assembly_name = '';\n this.assembly_no = '';\n this.region_id = 0;\n this.region_no = '';\n this.pastor_status = '';\n this.children_count = 0;\n this.marital_status_id = 0;\n this.marital_status = '';\n this.wedding_date = moment( '0001-01-01' ).toDate();\n this.fulltime_date = moment( '0001-01-01' ).toDate();\n this.marriage_officiant_date = moment( '0001-01-01' ).toDate();\n this.q_number = '';\n this.ordained_date = moment( '0001-01-01' ).toDate();\n this.legitimize_date = moment( '0001-01-01' ).toDate();\n this.preachers_panel_tv_date = moment( '0001-01-01' ).toDate();\n this.preachers_panel_radio_date = moment( '0001-01-01' ).toDate();\n this.phone_extension = '';\n this.phone_request_line = false;\n this.remarks = '';\n this.language_preference = '';\n this.physical_adr_1 = '';\n this.physical_adr_2 = '';\n this.physical_adr_city = '';\n this.physical_adr_code = '';\n this.input_date = moment( '0001-01-01' ).toDate();\n this.position_id = 0;\n this.position_no = '';\n this.celno = '';\n this.email = '';\n this.expiry_date = moment( '0001-01-01' ).toDate();\n this.photo = '';\n this.photoz_id = 0;\n this.application_date = moment( '0001-01-01' ).toDate();\n this.notes = '';\n this.file_date = '';\n this.is_filed = false;\n this.move_no = '';\n this.last_updated = moment( '0001-01-01 00:00:00' ).toDate();\n this.add_change_date = moment( '0001-01-01 00:00:00' ).toDate();\n this.preferred_addressee = false;\n this.ge_comms = false;\n this.special_start_date = moment( '0001-01-01' ).toDate();\n this.special_end_date = moment( '0001-01-01' ).toDate();\n this.special_reason = '';\n this.file_no = '';\n this.bin = '';\n this.seconded_to = '';\n this.seconded_report_date = moment( '0001-01-01' ).toDate();\n this.called_date = moment( '0001-01-01' ).toDate();\n this.accepted_date = moment( '0001-01-01' ).toDate();\n this.seconded_date = moment( '0001-01-01' ).toDate();\n this.country = '';\n this.justice_case_active = false;\n this.last_edited = '';\n this.field1_text = '';\n this.field2_num = '';\n this.field3_date = moment( '0001-01-01' ).toDate();\n this.field_text2 = '';\n this.field_text3 = '';\n this.field_text4 = '';\n this.field_text5 = '';\n this.pastor_own = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.pastid = obj.pastid;\n this.member_no = obj.member_no;\n this.first_name = obj.first_name;\n this.surname = obj.surname;\n this.maiden_name = obj.maiden_name;\n this.initials = obj.initials;\n this.personal_title = obj.personal_title;\n this.title_id = obj.title_id;\n this.idno = obj.idno;\n this.gender_id = obj.gender_id;\n this.gender_name = obj.gender_name;\n this.birth_date = FtRapi.decodeDate( obj.birth_date );\n this.birth_place = obj.birth_place;\n this.death_date = FtRapi.decodeDate( obj.death_date );\n this.instruments = obj.instruments;\n this.spouse_member_no = obj.spouse_member_no;\n this.spouse_first_name = obj.spouse_first_name;\n this.spouse_surname = obj.spouse_surname;\n this.spouse_maiden_name = obj.spouse_maiden_name;\n this.spouse_initials = obj.spouse_initials;\n this.spouse_personal_title = obj.spouse_personal_title;\n this.spouse_idno = obj.spouse_idno;\n this.spouse_birth_date = FtRapi.decodeDate( obj.spouse_birth_date );\n this.spouse_birth_place = obj.spouse_birth_place;\n this.spouse_death_date = FtRapi.decodeDate( obj.spouse_death_date );\n this.spouse_talents = obj.spouse_talents;\n this.phone_home = obj.phone_home;\n this.fax_home = obj.fax_home;\n this.phone_work = obj.phone_work;\n this.postal_adr_1 = obj.postal_adr_1;\n this.postal_adr_2 = obj.postal_adr_2;\n this.postal_adr_city = obj.postal_adr_city;\n this.postal_adr_code = obj.postal_adr_code;\n this.postal_adr_country = obj.postal_adr_country;\n this.assembly_id = obj.assembly_id;\n this.assembly_name = obj.assembly_name;\n this.assembly_no = obj.assembly_no;\n this.region_id = obj.region_id;\n this.region_no = obj.region_no;\n this.pastor_status = obj.pastor_status;\n this.children_count = obj.children_count;\n this.marital_status_id = obj.marital_status_id;\n this.marital_status = obj.marital_status;\n this.wedding_date = FtRapi.decodeDate( obj.wedding_date );\n this.fulltime_date = FtRapi.decodeDate( obj.fulltime_date );\n this.marriage_officiant_date = FtRapi.decodeDate( obj.marriage_officiant_date );\n this.q_number = obj.q_number;\n this.ordained_date = FtRapi.decodeDate( obj.ordained_date );\n this.legitimize_date = FtRapi.decodeDate( obj.legitimize_date );\n this.preachers_panel_tv_date = FtRapi.decodeDate( obj.preachers_panel_tv_date );\n this.preachers_panel_radio_date = FtRapi.decodeDate( obj.preachers_panel_radio_date );\n this.phone_extension = obj.phone_extension;\n this.phone_request_line = obj.phone_request_line;\n this.remarks = obj.remarks;\n this.language_preference = obj.language_preference;\n this.physical_adr_1 = obj.physical_adr_1;\n this.physical_adr_2 = obj.physical_adr_2;\n this.physical_adr_city = obj.physical_adr_city;\n this.physical_adr_code = obj.physical_adr_code;\n this.input_date = FtRapi.decodeDate( obj.input_date );\n this.position_id = obj.position_id;\n this.position_no = obj.position_no;\n this.celno = obj.celno;\n this.email = obj.email;\n this.expiry_date = FtRapi.decodeDate( obj.expiry_date );\n this.photo = obj.photo;\n this.photoz_id = obj.photoz_id;\n this.application_date = FtRapi.decodeDate( obj.application_date );\n this.notes = obj.notes;\n this.file_date = obj.file_date;\n this.is_filed = obj.is_filed;\n this.move_no = obj.move_no;\n this.last_updated = FtRapi.decodeDttm( obj.last_updated );\n this.add_change_date = FtRapi.decodeDttm( obj.add_change_date );\n this.preferred_addressee = obj.preferred_addressee;\n this.ge_comms = obj.ge_comms;\n this.special_start_date = FtRapi.decodeDate( obj.special_start_date );\n this.special_end_date = FtRapi.decodeDate( obj.special_end_date );\n this.special_reason = obj.special_reason;\n this.file_no = obj.file_no;\n this.bin = obj.bin;\n this.seconded_to = obj.seconded_to;\n this.seconded_report_date = FtRapi.decodeDate( obj.seconded_report_date );\n this.called_date = FtRapi.decodeDate( obj.called_date );\n this.accepted_date = FtRapi.decodeDate( obj.accepted_date );\n this.seconded_date = FtRapi.decodeDate( obj.seconded_date );\n this.country = obj.country;\n this.justice_case_active = obj.justice_case_active;\n this.last_edited = obj.last_edited;\n this.field1_text = obj.field1_text;\n this.field2_num = obj.field2_num;\n this.field3_date = FtRapi.decodeDate( obj.field3_date );\n this.field_text2 = obj.field_text2;\n this.field_text3 = obj.field_text3;\n this.field_text4 = obj.field_text4;\n this.field_text5 = obj.field_text5;\n this.pastor_own = obj.pastor_own;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n pastid : this.pastid,\n member_no : FtRapi.encodeStr( this.member_no ),\n first_name : FtRapi.encodeStr( this.first_name ),\n surname : FtRapi.encodeStr( this.surname ),\n maiden_name : FtRapi.encodeStr( this.maiden_name ),\n initials : FtRapi.encodeStr( this.initials ),\n personal_title : FtRapi.encodeStr( this.personal_title ),\n title_id : this.title_id,\n idno : FtRapi.encodeStr( this.idno ),\n gender_id : this.gender_id,\n gender_name : FtRapi.encodeStr( this.gender_name ),\n birth_date : FtRapi.encodeDate( this.birth_date ),\n birth_place : FtRapi.encodeStr( this.birth_place ),\n death_date : FtRapi.encodeDate( this.death_date ),\n instruments : FtRapi.encodeStr( this.instruments ),\n spouse_member_no : FtRapi.encodeStr( this.spouse_member_no ),\n spouse_first_name : FtRapi.encodeStr( this.spouse_first_name ),\n spouse_surname : FtRapi.encodeStr( this.spouse_surname ),\n spouse_maiden_name : FtRapi.encodeStr( this.spouse_maiden_name ),\n spouse_initials : FtRapi.encodeStr( this.spouse_initials ),\n spouse_personal_title : FtRapi.encodeStr( this.spouse_personal_title ),\n spouse_idno : FtRapi.encodeStr( this.spouse_idno ),\n spouse_birth_date : FtRapi.encodeDate( this.spouse_birth_date ),\n spouse_birth_place : FtRapi.encodeStr( this.spouse_birth_place ),\n spouse_death_date : FtRapi.encodeDate( this.spouse_death_date ),\n spouse_talents : FtRapi.encodeStr( this.spouse_talents ),\n phone_home : FtRapi.encodeStr( this.phone_home ),\n fax_home : FtRapi.encodeStr( this.fax_home ),\n phone_work : FtRapi.encodeStr( this.phone_work ),\n postal_adr_1 : FtRapi.encodeStr( this.postal_adr_1 ),\n postal_adr_2 : FtRapi.encodeStr( this.postal_adr_2 ),\n postal_adr_city : FtRapi.encodeStr( this.postal_adr_city ),\n postal_adr_code : FtRapi.encodeStr( this.postal_adr_code ),\n postal_adr_country : FtRapi.encodeStr( this.postal_adr_country ),\n assembly_id : this.assembly_id,\n assembly_name : FtRapi.encodeStr( this.assembly_name ),\n assembly_no : FtRapi.encodeStr( this.assembly_no ),\n region_id : this.region_id,\n region_no : FtRapi.encodeStr( this.region_no ),\n pastor_status : FtRapi.encodeStr( this.pastor_status ),\n children_count : this.children_count,\n marital_status_id : this.marital_status_id,\n marital_status : FtRapi.encodeStr( this.marital_status ),\n wedding_date : FtRapi.encodeDate( this.wedding_date ),\n fulltime_date : FtRapi.encodeDate( this.fulltime_date ),\n marriage_officiant_date : FtRapi.encodeDate( this.marriage_officiant_date ),\n q_number : FtRapi.encodeStr( this.q_number ),\n ordained_date : FtRapi.encodeDate( this.ordained_date ),\n legitimize_date : FtRapi.encodeDate( this.legitimize_date ),\n preachers_panel_tv_date : FtRapi.encodeDate( this.preachers_panel_tv_date ),\n preachers_panel_radio_date : FtRapi.encodeDate( this.preachers_panel_radio_date ),\n phone_extension : FtRapi.encodeStr( this.phone_extension ),\n phone_request_line : FtRapi.encodeBool( this.phone_request_line ),\n remarks : FtRapi.encodeStr( this.remarks ),\n language_preference : FtRapi.encodeStr( this.language_preference ),\n physical_adr_1 : FtRapi.encodeStr( this.physical_adr_1 ),\n physical_adr_2 : FtRapi.encodeStr( this.physical_adr_2 ),\n physical_adr_city : FtRapi.encodeStr( this.physical_adr_city ),\n physical_adr_code : FtRapi.encodeStr( this.physical_adr_code ),\n input_date : FtRapi.encodeDate( this.input_date ),\n position_id : this.position_id,\n position_no : FtRapi.encodeStr( this.position_no ),\n celno : FtRapi.encodeStr( this.celno ),\n email : FtRapi.encodeStr( this.email ),\n expiry_date : FtRapi.encodeDate( this.expiry_date ),\n photo : FtRapi.encodeStr( this.photo ),\n photoz_id : this.photoz_id,\n application_date : FtRapi.encodeDate( this.application_date ),\n notes : FtRapi.encodeStr( this.notes ),\n file_date : FtRapi.encodeStr( this.file_date ),\n is_filed : FtRapi.encodeBool( this.is_filed ),\n move_no : FtRapi.encodeStr( this.move_no ),\n last_updated : FtRapi.encodeDttm( this.last_updated ),\n add_change_date : FtRapi.encodeDttm( this.add_change_date ),\n preferred_addressee : FtRapi.encodeBool( this.preferred_addressee ),\n ge_comms : FtRapi.encodeBool( this.ge_comms ),\n special_start_date : FtRapi.encodeDate( this.special_start_date ),\n special_end_date : FtRapi.encodeDate( this.special_end_date ),\n special_reason : FtRapi.encodeStr( this.special_reason ),\n file_no : FtRapi.encodeStr( this.file_no ),\n bin : FtRapi.encodeStr( this.bin ),\n seconded_to : FtRapi.encodeStr( this.seconded_to ),\n seconded_report_date : FtRapi.encodeDate( this.seconded_report_date ),\n called_date : FtRapi.encodeDate( this.called_date ),\n accepted_date : FtRapi.encodeDate( this.accepted_date ),\n seconded_date : FtRapi.encodeDate( this.seconded_date ),\n country : FtRapi.encodeStr( this.country ),\n justice_case_active : FtRapi.encodeBool( this.justice_case_active ),\n last_edited : FtRapi.encodeStr( this.last_edited ),\n field1_text : FtRapi.encodeStr( this.field1_text ),\n field2_num : FtRapi.encodeStr( this.field2_num ),\n field3_date : FtRapi.encodeDate( this.field3_date ),\n field_text2 : FtRapi.encodeStr( this.field_text2 ),\n field_text3 : FtRapi.encodeStr( this.field_text3 ),\n field_text4 : FtRapi.encodeStr( this.field_text4 ),\n field_text5 : FtRapi.encodeStr( this.field_text5 ),\n pastor_own : FtRapi.encodeStr( this.pastor_own ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.pastid = Ft.parseInt0Null( src.pastid );\n this.member_no = src.member_no;\n this.first_name = src.first_name;\n this.surname = src.surname;\n this.maiden_name = src.maiden_name;\n this.initials = src.initials;\n this.personal_title = src.personal_title;\n this.title_id = Ft.parseInt0Null( src.title_id );\n this.idno = src.idno;\n this.gender_id = Ft.parseInt0Null( src.gender_id );\n this.gender_name = src.gender_name;\n this.birth_date = src.birth_date;\n this.birth_place = src.birth_place;\n this.death_date = src.death_date;\n this.instruments = src.instruments;\n this.spouse_member_no = src.spouse_member_no;\n this.spouse_first_name = src.spouse_first_name;\n this.spouse_surname = src.spouse_surname;\n this.spouse_maiden_name = src.spouse_maiden_name;\n this.spouse_initials = src.spouse_initials;\n this.spouse_personal_title = src.spouse_personal_title;\n this.spouse_idno = src.spouse_idno;\n this.spouse_birth_date = src.spouse_birth_date;\n this.spouse_birth_place = src.spouse_birth_place;\n this.spouse_death_date = src.spouse_death_date;\n this.spouse_talents = src.spouse_talents;\n this.phone_home = src.phone_home;\n this.fax_home = src.fax_home;\n this.phone_work = src.phone_work;\n this.postal_adr_1 = src.postal_adr_1;\n this.postal_adr_2 = src.postal_adr_2;\n this.postal_adr_city = src.postal_adr_city;\n this.postal_adr_code = src.postal_adr_code;\n this.postal_adr_country = src.postal_adr_country;\n this.assembly_id = Ft.parseInt0Null( src.assembly_id );\n this.assembly_name = src.assembly_name;\n this.assembly_no = src.assembly_no;\n this.region_id = Ft.parseInt0Null( src.region_id );\n this.region_no = src.region_no;\n this.pastor_status = src.pastor_status;\n this.children_count = Ft.parseInt0Null( src.children_count );\n this.marital_status_id = Ft.parseInt0Null( src.marital_status_id );\n this.marital_status = src.marital_status;\n this.wedding_date = src.wedding_date;\n this.fulltime_date = src.fulltime_date;\n this.marriage_officiant_date = src.marriage_officiant_date;\n this.q_number = src.q_number;\n this.ordained_date = src.ordained_date;\n this.legitimize_date = src.legitimize_date;\n this.preachers_panel_tv_date = src.preachers_panel_tv_date;\n this.preachers_panel_radio_date = src.preachers_panel_radio_date;\n this.phone_extension = src.phone_extension;\n this.phone_request_line = Ft.parseBool( src.phone_request_line );\n this.remarks = src.remarks;\n this.language_preference = src.language_preference;\n this.physical_adr_1 = src.physical_adr_1;\n this.physical_adr_2 = src.physical_adr_2;\n this.physical_adr_city = src.physical_adr_city;\n this.physical_adr_code = src.physical_adr_code;\n this.input_date = src.input_date;\n this.position_id = Ft.parseInt0Null( src.position_id );\n this.position_no = src.position_no;\n this.celno = src.celno;\n this.email = src.email;\n this.expiry_date = src.expiry_date;\n this.photo = src.photo;\n this.photoz_id = Ft.parseInt0Null( src.photoz_id );\n this.application_date = src.application_date;\n this.notes = src.notes;\n this.file_date = src.file_date;\n this.is_filed = Ft.parseBool( src.is_filed );\n this.move_no = src.move_no;\n this.last_updated = src.last_updated;\n this.add_change_date = src.add_change_date;\n this.preferred_addressee = Ft.parseBool( src.preferred_addressee );\n this.ge_comms = Ft.parseBool( src.ge_comms );\n this.special_start_date = src.special_start_date;\n this.special_end_date = src.special_end_date;\n this.special_reason = src.special_reason;\n this.file_no = src.file_no;\n this.bin = src.bin;\n this.seconded_to = src.seconded_to;\n this.seconded_report_date = src.seconded_report_date;\n this.called_date = src.called_date;\n this.accepted_date = src.accepted_date;\n this.seconded_date = src.seconded_date;\n this.country = src.country;\n this.justice_case_active = Ft.parseBool( src.justice_case_active );\n this.last_edited = src.last_edited;\n this.field1_text = src.field1_text;\n this.field2_num = src.field2_num;\n this.field3_date = src.field3_date;\n this.field_text2 = src.field_text2;\n this.field_text3 = src.field_text3;\n this.field_text4 = src.field_text4;\n this.field_text5 = src.field_text5;\n this.pastor_own = src.pastor_own;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.pastid = null;\n this.member_no = null;\n this.first_name = null;\n this.surname = null;\n this.maiden_name = null;\n this.initials = null;\n this.personal_title = null;\n this.title_id = null;\n this.idno = null;\n this.gender_id = null;\n this.gender_name = null;\n this.birth_date = moment( '0001-01-01' ).toDate();\n this.birth_place = null;\n this.death_date = moment( '0001-01-01' ).toDate();\n this.instruments = null;\n this.spouse_member_no = null;\n this.spouse_first_name = null;\n this.spouse_surname = null;\n this.spouse_maiden_name = null;\n this.spouse_initials = null;\n this.spouse_personal_title = null;\n this.spouse_idno = null;\n this.spouse_birth_date = moment( '0001-01-01' ).toDate();\n this.spouse_birth_place = null;\n this.spouse_death_date = moment( '0001-01-01' ).toDate();\n this.spouse_talents = null;\n this.phone_home = null;\n this.fax_home = null;\n this.phone_work = null;\n this.postal_adr_1 = null;\n this.postal_adr_2 = null;\n this.postal_adr_city = null;\n this.postal_adr_code = null;\n this.postal_adr_country = null;\n this.assembly_id = null;\n this.assembly_name = null;\n this.assembly_no = null;\n this.region_id = null;\n this.region_no = null;\n this.pastor_status = null;\n this.children_count = null;\n this.marital_status_id = null;\n this.marital_status = null;\n this.wedding_date = moment( '0001-01-01' ).toDate();\n this.fulltime_date = moment( '0001-01-01' ).toDate();\n this.marriage_officiant_date = moment( '0001-01-01' ).toDate();\n this.q_number = null;\n this.ordained_date = moment( '0001-01-01' ).toDate();\n this.legitimize_date = moment( '0001-01-01' ).toDate();\n this.preachers_panel_tv_date = moment( '0001-01-01' ).toDate();\n this.preachers_panel_radio_date = moment( '0001-01-01' ).toDate();\n this.phone_extension = null;\n this.phone_request_line = false;\n this.remarks = null;\n this.language_preference = null;\n this.physical_adr_1 = null;\n this.physical_adr_2 = null;\n this.physical_adr_city = null;\n this.physical_adr_code = null;\n this.input_date = moment( '0001-01-01' ).toDate();\n this.position_id = null;\n this.position_no = null;\n this.celno = null;\n this.email = null;\n this.expiry_date = moment( '0001-01-01' ).toDate();\n this.photo = null;\n this.photoz_id = null;\n this.application_date = moment( '0001-01-01' ).toDate();\n this.notes = null;\n this.file_date = null;\n this.is_filed = false;\n this.move_no = null;\n this.last_updated = moment( '0001-01-01 00:00:00' ).toDate();\n this.add_change_date = moment( '0001-01-01 00:00:00' ).toDate();\n this.preferred_addressee = false;\n this.ge_comms = false;\n this.special_start_date = moment( '0001-01-01' ).toDate();\n this.special_end_date = moment( '0001-01-01' ).toDate();\n this.special_reason = null;\n this.file_no = null;\n this.bin = null;\n this.seconded_to = null;\n this.seconded_report_date = moment( '0001-01-01' ).toDate();\n this.called_date = moment( '0001-01-01' ).toDate();\n this.accepted_date = moment( '0001-01-01' ).toDate();\n this.seconded_date = moment( '0001-01-01' ).toDate();\n this.country = null;\n this.justice_case_active = false;\n this.last_edited = null;\n this.field1_text = null;\n this.field2_num = null;\n this.field3_date = moment( '0001-01-01' ).toDate();\n this.field_text2 = null;\n this.field_text3 = null;\n this.field_text4 = null;\n this.field_text5 = null;\n this.pastor_own = null;\r\n }\r\n}\r\n","import PastorFileBase from './base/pastorFileBase';\r\n\r\n//********************************************************************\r\n// PastorFile class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class PastorFile extends PastorFileBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// PastorFileBase class : Generated : DO NOT MODIFY\r\nexport default class PastorFileBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n pastor_id: number|null;\n arcrepo_id: number|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.pastor_id = 0;\n this.arcrepo_id = 0;\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.pastor_id = obj.pastor_id;\n this.arcrepo_id = obj.arcrepo_id;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n pastor_id : this.pastor_id,\n arcrepo_id : this.arcrepo_id,\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.pastor_id = Ft.parseInt0Null( src.pastor_id );\n this.arcrepo_id = Ft.parseInt0Null( src.arcrepo_id );\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.pastor_id = null;\n this.arcrepo_id = null;\r\n }\r\n}\r\n","import PastorHistoryBase from './base/pastorHistoryBase';\r\n\r\n//********************************************************************\r\n// PastorHistory class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class PastorHistory extends PastorHistoryBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// PastorHistoryBase class : Generated : DO NOT MODIFY\r\nexport default class PastorHistoryBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n oldid: number|null;\n title: string|null;\n compliance_asset_idx: string|null;\n pastid: number|null;\n member_no: string|null;\n accepted_date: Date|null;\n called_date: Date|null;\n position_no: string|null;\n region_no: string|null;\n assembly_name: string|null;\n assembly_no: string|null;\n special_reason: string|null;\n content_type: string|null;\n app_created_by: string|null;\n app_modified_by: string|null;\n workflow_instance_idx: string|null;\n file_type: string|null;\n modified: Date|null;\n created: Date|null;\n created_by: number|null;\n modified_by: number|null;\n url_path: string|null;\n path: string|null;\n item_type: string|null;\n encoded_absolute_url: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.oldid = 0;\n this.title = '';\n this.compliance_asset_idx = '';\n this.pastid = 0;\n this.member_no = '';\n this.accepted_date = moment( '0001-01-01' ).toDate();\n this.called_date = moment( '0001-01-01' ).toDate();\n this.position_no = '';\n this.region_no = '';\n this.assembly_name = '';\n this.assembly_no = '';\n this.special_reason = '';\n this.content_type = '';\n this.app_created_by = '';\n this.app_modified_by = '';\n this.workflow_instance_idx = '';\n this.file_type = '';\n this.modified = moment( '0001-01-01 00:00:00' ).toDate();\n this.created = moment( '0001-01-01 00:00:00' ).toDate();\n this.created_by = 0;\n this.modified_by = 0;\n this.url_path = '';\n this.path = '';\n this.item_type = '';\n this.encoded_absolute_url = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.oldid = obj.oldid;\n this.title = obj.title;\n this.compliance_asset_idx = obj.compliance_asset_idx;\n this.pastid = obj.pastid;\n this.member_no = obj.member_no;\n this.accepted_date = FtRapi.decodeDate( obj.accepted_date );\n this.called_date = FtRapi.decodeDate( obj.called_date );\n this.position_no = obj.position_no;\n this.region_no = obj.region_no;\n this.assembly_name = obj.assembly_name;\n this.assembly_no = obj.assembly_no;\n this.special_reason = obj.special_reason;\n this.content_type = obj.content_type;\n this.app_created_by = obj.app_created_by;\n this.app_modified_by = obj.app_modified_by;\n this.workflow_instance_idx = obj.workflow_instance_idx;\n this.file_type = obj.file_type;\n this.modified = FtRapi.decodeDttm( obj.modified );\n this.created = FtRapi.decodeDttm( obj.created );\n this.created_by = obj.created_by;\n this.modified_by = obj.modified_by;\n this.url_path = obj.url_path;\n this.path = obj.path;\n this.item_type = obj.item_type;\n this.encoded_absolute_url = obj.encoded_absolute_url;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n oldid : this.oldid,\n title : FtRapi.encodeStr( this.title ),\n compliance_asset_idx : FtRapi.encodeStr( this.compliance_asset_idx ),\n pastid : this.pastid,\n member_no : FtRapi.encodeStr( this.member_no ),\n accepted_date : FtRapi.encodeDate( this.accepted_date ),\n called_date : FtRapi.encodeDate( this.called_date ),\n position_no : FtRapi.encodeStr( this.position_no ),\n region_no : FtRapi.encodeStr( this.region_no ),\n assembly_name : FtRapi.encodeStr( this.assembly_name ),\n assembly_no : FtRapi.encodeStr( this.assembly_no ),\n special_reason : FtRapi.encodeStr( this.special_reason ),\n content_type : FtRapi.encodeStr( this.content_type ),\n app_created_by : FtRapi.encodeStr( this.app_created_by ),\n app_modified_by : FtRapi.encodeStr( this.app_modified_by ),\n workflow_instance_idx : FtRapi.encodeStr( this.workflow_instance_idx ),\n file_type : FtRapi.encodeStr( this.file_type ),\n modified : FtRapi.encodeDttm( this.modified ),\n created : FtRapi.encodeDttm( this.created ),\n created_by : this.created_by,\n modified_by : this.modified_by,\n url_path : FtRapi.encodeStr( this.url_path ),\n path : FtRapi.encodeStr( this.path ),\n item_type : FtRapi.encodeStr( this.item_type ),\n encoded_absolute_url : FtRapi.encodeStr( this.encoded_absolute_url ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.oldid = Ft.parseInt0Null( src.oldid );\n this.title = src.title;\n this.compliance_asset_idx = src.compliance_asset_idx;\n this.pastid = Ft.parseInt0Null( src.pastid );\n this.member_no = src.member_no;\n this.accepted_date = src.accepted_date;\n this.called_date = src.called_date;\n this.position_no = src.position_no;\n this.region_no = src.region_no;\n this.assembly_name = src.assembly_name;\n this.assembly_no = src.assembly_no;\n this.special_reason = src.special_reason;\n this.content_type = src.content_type;\n this.app_created_by = src.app_created_by;\n this.app_modified_by = src.app_modified_by;\n this.workflow_instance_idx = src.workflow_instance_idx;\n this.file_type = src.file_type;\n this.modified = src.modified;\n this.created = src.created;\n this.created_by = Ft.parseInt0Null( src.created_by );\n this.modified_by = Ft.parseInt0Null( src.modified_by );\n this.url_path = src.url_path;\n this.path = src.path;\n this.item_type = src.item_type;\n this.encoded_absolute_url = src.encoded_absolute_url;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.oldid = null;\n this.title = null;\n this.compliance_asset_idx = null;\n this.pastid = null;\n this.member_no = null;\n this.accepted_date = moment( '0001-01-01' ).toDate();\n this.called_date = moment( '0001-01-01' ).toDate();\n this.position_no = null;\n this.region_no = null;\n this.assembly_name = null;\n this.assembly_no = null;\n this.special_reason = null;\n this.content_type = null;\n this.app_created_by = null;\n this.app_modified_by = null;\n this.workflow_instance_idx = null;\n this.file_type = null;\n this.modified = moment( '0001-01-01 00:00:00' ).toDate();\n this.created = moment( '0001-01-01 00:00:00' ).toDate();\n this.created_by = null;\n this.modified_by = null;\n this.url_path = null;\n this.path = null;\n this.item_type = null;\n this.encoded_absolute_url = null;\r\n }\r\n}\r\n","import PastorPositionBase from './base/pastorPositionBase';\r\n\r\n//********************************************************************\r\n// PastorPosition class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class PastorPosition extends PastorPositionBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// PastorPositionBase class : Generated : DO NOT MODIFY\r\nexport default class PastorPositionBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n ampid: number|null;\n position: string|null;\n position_no: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.ampid = 0;\n this.position = '';\n this.position_no = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.ampid = obj.ampid;\n this.position = obj.position;\n this.position_no = obj.position_no;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n ampid : this.ampid,\n position : FtRapi.encodeStr( this.position ),\n position_no : FtRapi.encodeStr( this.position_no ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.ampid = Ft.parseInt0Null( src.ampid );\n this.position = src.position;\n this.position_no = src.position_no;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.ampid = null;\n this.position = null;\n this.position_no = null;\r\n }\r\n}\r\n","import PastorQualificationBase from './base/pastorQualificationBase';\r\n\r\n//********************************************************************\r\n// PastorQualification class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class PastorQualification extends PastorQualificationBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// PastorQualificationBase class : Generated : DO NOT MODIFY\r\nexport default class PastorQualificationBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n oldid: number|null;\n pastor_id: number|null;\n member_no: string|null;\n description: string|null;\n category: string|null;\n awarding_date: string|null;\n accredited_by: string|null;\n obtained_from: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.oldid = 0;\n this.pastor_id = 0;\n this.member_no = '';\n this.description = '';\n this.category = '';\n this.awarding_date = '';\n this.accredited_by = '';\n this.obtained_from = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.oldid = obj.oldid;\n this.pastor_id = obj.pastor_id;\n this.member_no = obj.member_no;\n this.description = obj.description;\n this.category = obj.category;\n this.awarding_date = obj.awarding_date;\n this.accredited_by = obj.accredited_by;\n this.obtained_from = obj.obtained_from;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n oldid : this.oldid,\n pastor_id : this.pastor_id,\n member_no : FtRapi.encodeStr( this.member_no ),\n description : FtRapi.encodeStr( this.description ),\n category : FtRapi.encodeStr( this.category ),\n awarding_date : FtRapi.encodeStr( this.awarding_date ),\n accredited_by : FtRapi.encodeStr( this.accredited_by ),\n obtained_from : FtRapi.encodeStr( this.obtained_from ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.oldid = Ft.parseInt0Null( src.oldid );\n this.pastor_id = Ft.parseInt0Null( src.pastor_id );\n this.member_no = src.member_no;\n this.description = src.description;\n this.category = src.category;\n this.awarding_date = src.awarding_date;\n this.accredited_by = src.accredited_by;\n this.obtained_from = src.obtained_from;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.oldid = null;\n this.pastor_id = null;\n this.member_no = null;\n this.description = null;\n this.category = null;\n this.awarding_date = null;\n this.accredited_by = null;\n this.obtained_from = null;\r\n }\r\n}\r\n","import PastorStatusBase from './base/pastorStatusBase';\r\n\r\n//********************************************************************\r\n// PastorStatus class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class PastorStatus extends PastorStatusBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// PastorStatusBase class : Generated : DO NOT MODIFY\r\nexport default class PastorStatusBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n oldid: number|null;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.oldid = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.oldid = obj.oldid;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n oldid : this.oldid,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.oldid = Ft.parseInt0Null( src.oldid );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.oldid = null;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import PastorTitleBase from './base/pastorTitleBase';\r\n\r\n//********************************************************************\r\n// PastorTitle class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class PastorTitle extends PastorTitleBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// PastorTitleBase class : Generated : DO NOT MODIFY\r\nexport default class PastorTitleBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n title: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.title = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.title = obj.title;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n title : FtRapi.encodeStr( this.title ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.title = src.title;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.title = null;\r\n }\r\n}\r\n","import PaymentMethodBase from './base/paymentMethodBase';\r\n\r\n//********************************************************************\r\n// PaymentMethod class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class PaymentMethod extends PaymentMethodBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static PM_NONE = 1;\n static PM_ONLINE = 2;\n static PM_CASH = 3;\n static PM_EFT = 4;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// PaymentMethodBase class : Generated : DO NOT MODIFY\r\nexport default class PaymentMethodBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import PositionStatusBase from './base/positionStatusBase';\r\n\r\n//********************************************************************\r\n// PositionStatus class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class PositionStatus extends PositionStatusBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static PS_TO_BE_DONE = 1;\n static PS_OPEN = 2;\n static PS_COMPLETED = 3;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// PositionStatusBase class : Generated : DO NOT MODIFY\r\nexport default class PositionStatusBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = FtRapi.decodeUni( obj.name );\n this.description = FtRapi.decodeUni( obj.description );\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeUni( this.name ),\n description : FtRapi.encodeUni( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import ReceptionBase from './base/receptionBase';\r\n\r\n//********************************************************************\r\n// Reception class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class Reception extends ReceptionBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// ReceptionBase class : Generated : DO NOT MODIFY\r\nexport default class ReceptionBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n attendee_id: number|null;\n user_id: number|null;\n receive_date: Date|null;\n scan_dttm: Date|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.attendee_id = 0;\n this.user_id = 0;\n this.receive_date = moment( '0001-01-01' ).toDate();\n this.scan_dttm = moment( '0001-01-01 00:00:00' ).toDate();\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.attendee_id = obj.attendee_id;\n this.user_id = obj.user_id;\n this.receive_date = FtRapi.decodeDate( obj.receive_date );\n this.scan_dttm = FtRapi.decodeDttm( obj.scan_dttm );\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n attendee_id : this.attendee_id,\n user_id : this.user_id,\n receive_date : FtRapi.encodeDate( this.receive_date ),\n scan_dttm : FtRapi.encodeDttm( this.scan_dttm ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.attendee_id = Ft.parseInt0Null( src.attendee_id );\n this.user_id = Ft.parseInt0Null( src.user_id );\n this.receive_date = src.receive_date;\n this.scan_dttm = src.scan_dttm;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.attendee_id = null;\n this.user_id = null;\n this.receive_date = moment( '0001-01-01' ).toDate();\n this.scan_dttm = moment( '0001-01-01 00:00:00' ).toDate();\r\n }\r\n}\r\n","import RoundStatusBase from './base/roundStatusBase';\r\n\r\n//********************************************************************\r\n// RoundStatus class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class RoundStatus extends RoundStatusBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static RS_CREATED = 1;\n static RS_OPEN_FOR_VOTING = 2;\n static RS_PROCESSING = 3;\n static RS_APPROVED_FINAL = 4;\n static RS_COMPLETED = 5;\n // #FTGEN_CONSTS_Z#\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// RoundStatusBase class : Generated : DO NOT MODIFY\r\nexport default class RoundStatusBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = FtRapi.decodeUni( obj.name );\n this.description = FtRapi.decodeUni( obj.description );\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeUni( this.name ),\n description : FtRapi.encodeUni( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import RsaProvinceBase from './base/rsaProvinceBase';\r\n\r\n//********************************************************************\r\n// RsaProvince class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class RsaProvince extends RsaProvinceBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// RsaProvinceBase class : Generated : DO NOT MODIFY\r\nexport default class RsaProvinceBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\r\n }\r\n}\r\n","import UserAuthRoleBase from './base/userAuthRoleBase';\r\n\r\n//********************************************************************\r\n// UserAuthRole class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class UserAuthRole extends UserAuthRoleBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// UserAuthRoleBase class : Generated : DO NOT MODIFY\r\nexport default class UserAuthRoleBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n userz_id: number|null;\n role_id: number|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.userz_id = 0;\n this.role_id = 0;\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.userz_id = obj.userz_id;\n this.role_id = obj.role_id;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n userz_id : this.userz_id,\n role_id : this.role_id,\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.userz_id = Ft.parseInt0Null( src.userz_id );\n this.role_id = Ft.parseInt0Null( src.role_id );\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.userz_id = null;\n this.role_id = null;\r\n }\r\n}\r\n","import UserAuthRoleTypeBase from './base/userAuthRoleTypeBase';\r\n\r\n//********************************************************************\r\n// UserAuthRoleType class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class UserAuthRoleType extends UserAuthRoleTypeBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n static UART_SYSTEMADMIN = 1;\r\n static UART_NOB = 2;\r\n static UART_ADMINISTRATION = 3;\r\n static UART_ADMINJUSTICE = 4;\r\n static UART_NLF = 5;\r\n static UART_REGIONAL_SECRETARY = 6;\r\n static UART_REGIONAL_TREASURER = 7;\r\n static UART_ADMIN_CLERK = 8;\r\n static UART_CONF_SUPERVISOR = 9;\r\n static UART_CONF_RECEPTION_SCANNING = 10;\r\n static UART_CONF_GOODYBAG_SCANNING = 11;\r\n static UART_CONF_DISPLAY_STATS = 12;\r\n static UART_VOTING_MANAGER = 13;\r\n static UART_VOTING_CAPTURE_PRIMARY = 14;\r\n static UART_VOTING_APPROVAL_SECONDARY = 15;\r\n static UART_VOTING_APPROVAL_FINAL = 16;\r\n // #FTGEN_CONSTS_Z# \r\n \r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// UserAuthRoleTypeBase class : Generated : DO NOT MODIFY\r\nexport default class UserAuthRoleTypeBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\n parent_id: number|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\n this.parent_id = 0;\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\n this.parent_id = obj.parent_id;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\n parent_id : this.parent_id,\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\n this.parent_id = Ft.parseInt0Null( src.parent_id );\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\n this.parent_id = null;\r\n }\r\n}\r\n","import UserDeviceBase from './base/userDeviceBase';\r\n\r\n//********************************************************************\r\n// UserDevice class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class UserDevice extends UserDeviceBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// UserDeviceBase class : Generated : DO NOT MODIFY\r\nexport default class UserDeviceBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n userz_id: number|null;\n device_lid: string|null;\n device_dttm: Date|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.userz_id = 0;\n this.device_lid = '';\n this.device_dttm = moment( '0001-01-01 00:00:00' ).toDate();\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.userz_id = obj.userz_id;\n this.device_lid = obj.device_lid;\n this.device_dttm = FtRapi.decodeDttm( obj.device_dttm );\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n userz_id : this.userz_id,\n device_lid : FtRapi.encodeStr( this.device_lid ),\n device_dttm : FtRapi.encodeDttm( this.device_dttm ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.userz_id = Ft.parseInt0Null( src.userz_id );\n this.device_lid = src.device_lid;\n this.device_dttm = src.device_dttm;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.userz_id = null;\n this.device_lid = null;\n this.device_dttm = moment( '0001-01-01 00:00:00' ).toDate();\r\n }\r\n}\r\n","import UserTypeBase from './base/userTypeBase';\r\n\r\n//********************************************************************\r\n// UserType class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class UserType extends UserTypeBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\n static UT_ADMIN = 1;\n static UT_CLIENT = 2;\n static UT_GUEST = 3;\n // #FTGEN_CONSTS_Z#\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// UserTypeBase class : Generated : DO NOT MODIFY\r\nexport default class UserTypeBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = obj.name;\n this.description = obj.description;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeStr( this.name ),\n description : FtRapi.encodeStr( this.description ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\r\n }\r\n}\r\n","import UserzBase from './base/userzBase';\r\n\r\n//********************************************************************\r\n// Userz class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class Userz extends UserzBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// UserzBase class : Generated : DO NOT MODIFY\r\nexport default class UserzBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n username: string|null;\n password: string|null;\n disp_name: string|null;\n email: string|null;\n init: boolean|null;\n init_code: string|null;\n active: boolean|null;\n pass_reset: boolean|null;\n user_type_id: number|null;\n create_dttm: Date|null;\n last_login: Date|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.username = '';\n this.password = '';\n this.disp_name = '';\n this.email = '';\n this.init = false;\n this.init_code = '';\n this.active = false;\n this.pass_reset = false;\n this.user_type_id = 0;\n this.create_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.last_login = moment( '0001-01-01 00:00:00' ).toDate();\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.username = obj.username;\n this.password = obj.password;\n this.disp_name = obj.disp_name;\n this.email = obj.email;\n this.init = obj.init;\n this.init_code = obj.init_code;\n this.active = obj.active;\n this.pass_reset = obj.pass_reset;\n this.user_type_id = obj.user_type_id;\n this.create_dttm = FtRapi.decodeDttm( obj.create_dttm );\n this.last_login = FtRapi.decodeDttm( obj.last_login );\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n username : FtRapi.encodeStr( this.username ),\n password : FtRapi.encodeStr( this.password ),\n disp_name : FtRapi.encodeStr( this.disp_name ),\n email : FtRapi.encodeStr( this.email ),\n init : FtRapi.encodeBool( this.init ),\n init_code : FtRapi.encodeStr( this.init_code ),\n active : FtRapi.encodeBool( this.active ),\n pass_reset : FtRapi.encodeBool( this.pass_reset ),\n user_type_id : this.user_type_id,\n create_dttm : FtRapi.encodeDttm( this.create_dttm ),\n last_login : FtRapi.encodeDttm( this.last_login ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.username = src.username;\n this.password = src.password;\n this.disp_name = src.disp_name;\n this.email = src.email;\n this.init = Ft.parseBool( src.init );\n this.init_code = src.init_code;\n this.active = Ft.parseBool( src.active );\n this.pass_reset = Ft.parseBool( src.pass_reset );\n this.user_type_id = Ft.parseInt0Null( src.user_type_id );\n this.create_dttm = src.create_dttm;\n this.last_login = src.last_login;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.username = null;\n this.password = null;\n this.disp_name = null;\n this.email = null;\n this.init = false;\n this.init_code = null;\n this.active = false;\n this.pass_reset = false;\n this.user_type_id = null;\n this.create_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.last_login = moment( '0001-01-01 00:00:00' ).toDate();\r\n }\r\n}\r\n","import VotingCandidateBase from './base/votingCandidateBase';\r\n\r\n//********************************************************************\r\n// VotingCandidate class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class VotingCandidate extends VotingCandidateBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// VotingCandidateBase class : Generated : DO NOT MODIFY\r\nexport default class VotingCandidateBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n round_id: number|null;\n position_id: number|null;\n attendee_id: number|null;\n name: string|null;\n surname: string|null;\n assembly_name: string|null;\n region_name: string|null;\n vote_count: number|null;\n total_count: number|null;\n vote_perc: Decimal|null;\n is_finalist: number|null;\n calc_dttm: Date|null;\n calc_user_id: number|null;\n status_id: number|null;\n status_capture_dttm: Date|null;\n status_capture_user_id: number|null;\n status_approve_primary_dttm: Date|null;\n status_approve_primary_user_id: number|null;\n status_approve_second_dttm: Date|null;\n status_approve_second_user_id: number|null;\n status_final_disq_dttm: Date|null;\n status_final_disq_user_id: number|null;\n disq_reason: string|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.round_id = 0;\n this.position_id = 0;\n this.attendee_id = 0;\n this.name = '';\n this.surname = '';\n this.assembly_name = '';\n this.region_name = '';\n this.vote_count = 0;\n this.total_count = 0;\n this.vote_perc = new Decimal('0.0');\n this.is_finalist = 0;\n this.calc_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.calc_user_id = 0;\n this.status_id = 0;\n this.status_capture_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.status_capture_user_id = 0;\n this.status_approve_primary_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.status_approve_primary_user_id = 0;\n this.status_approve_second_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.status_approve_second_user_id = 0;\n this.status_final_disq_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.status_final_disq_user_id = 0;\n this.disq_reason = '';\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.round_id = obj.round_id;\n this.position_id = obj.position_id;\n this.attendee_id = obj.attendee_id;\n this.name = obj.name;\n this.surname = obj.surname;\n this.assembly_name = obj.assembly_name;\n this.region_name = obj.region_name;\n this.vote_count = obj.vote_count;\n this.total_count = obj.total_count;\n this.vote_perc = FtRapi.decodeDec( obj.vote_perc );\n this.is_finalist = obj.is_finalist;\n this.calc_dttm = FtRapi.decodeDttm( obj.calc_dttm );\n this.calc_user_id = obj.calc_user_id;\n this.status_id = obj.status_id;\n this.status_capture_dttm = FtRapi.decodeDttm( obj.status_capture_dttm );\n this.status_capture_user_id = obj.status_capture_user_id;\n this.status_approve_primary_dttm = FtRapi.decodeDttm( obj.status_approve_primary_dttm );\n this.status_approve_primary_user_id = obj.status_approve_primary_user_id;\n this.status_approve_second_dttm = FtRapi.decodeDttm( obj.status_approve_second_dttm );\n this.status_approve_second_user_id = obj.status_approve_second_user_id;\n this.status_final_disq_dttm = FtRapi.decodeDttm( obj.status_final_disq_dttm );\n this.status_final_disq_user_id = obj.status_final_disq_user_id;\n this.disq_reason = obj.disq_reason;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n round_id : this.round_id,\n position_id : this.position_id,\n attendee_id : this.attendee_id,\n name : FtRapi.encodeStr( this.name ),\n surname : FtRapi.encodeStr( this.surname ),\n assembly_name : FtRapi.encodeStr( this.assembly_name ),\n region_name : FtRapi.encodeStr( this.region_name ),\n vote_count : this.vote_count,\n total_count : this.total_count,\n vote_perc : FtRapi.encodeDec( this.vote_perc ),\n is_finalist : this.is_finalist,\n calc_dttm : FtRapi.encodeDttm( this.calc_dttm ),\n calc_user_id : this.calc_user_id,\n status_id : this.status_id,\n status_capture_dttm : FtRapi.encodeDttm( this.status_capture_dttm ),\n status_capture_user_id : this.status_capture_user_id,\n status_approve_primary_dttm : FtRapi.encodeDttm( this.status_approve_primary_dttm ),\n status_approve_primary_user_id : this.status_approve_primary_user_id,\n status_approve_second_dttm : FtRapi.encodeDttm( this.status_approve_second_dttm ),\n status_approve_second_user_id : this.status_approve_second_user_id,\n status_final_disq_dttm : FtRapi.encodeDttm( this.status_final_disq_dttm ),\n status_final_disq_user_id : this.status_final_disq_user_id,\n disq_reason : FtRapi.encodeStr( this.disq_reason ),\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.round_id = Ft.parseInt0Null( src.round_id );\n this.position_id = Ft.parseInt0Null( src.position_id );\n this.attendee_id = Ft.parseInt0Null( src.attendee_id );\n this.name = src.name;\n this.surname = src.surname;\n this.assembly_name = src.assembly_name;\n this.region_name = src.region_name;\n this.vote_count = Ft.parseInt0Null( src.vote_count );\n this.total_count = Ft.parseInt0Null( src.total_count );\n this.vote_perc = new Decimal( src.vote_perc );\n this.is_finalist = Ft.parseInt0Null( src.is_finalist );\n this.calc_dttm = src.calc_dttm;\n this.calc_user_id = Ft.parseInt0Null( src.calc_user_id );\n this.status_id = Ft.parseInt0Null( src.status_id );\n this.status_capture_dttm = src.status_capture_dttm;\n this.status_capture_user_id = Ft.parseInt0Null( src.status_capture_user_id );\n this.status_approve_primary_dttm = src.status_approve_primary_dttm;\n this.status_approve_primary_user_id = Ft.parseInt0Null( src.status_approve_primary_user_id );\n this.status_approve_second_dttm = src.status_approve_second_dttm;\n this.status_approve_second_user_id = Ft.parseInt0Null( src.status_approve_second_user_id );\n this.status_final_disq_dttm = src.status_final_disq_dttm;\n this.status_final_disq_user_id = Ft.parseInt0Null( src.status_final_disq_user_id );\n this.disq_reason = src.disq_reason;\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.round_id = null;\n this.position_id = null;\n this.attendee_id = null;\n this.name = null;\n this.surname = null;\n this.assembly_name = null;\n this.region_name = null;\n this.vote_count = null;\n this.total_count = null;\n this.vote_perc = null;\n this.is_finalist = null;\n this.calc_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.calc_user_id = null;\n this.status_id = null;\n this.status_capture_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.status_capture_user_id = null;\n this.status_approve_primary_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.status_approve_primary_user_id = null;\n this.status_approve_second_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.status_approve_second_user_id = null;\n this.status_final_disq_dttm = moment( '0001-01-01 00:00:00' ).toDate();\n this.status_final_disq_user_id = null;\n this.disq_reason = null;\r\n }\r\n}\r\n","import VotingPositionBase from './base/votingPositionBase';\r\n\r\n//********************************************************************\r\n// VotingPosition class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class VotingPosition extends VotingPositionBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// VotingPositionBase class : Generated : DO NOT MODIFY\r\nexport default class VotingPositionBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n name: string|null;\n description: string|null;\n status_id: number|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.name = '';\n this.description = '';\n this.status_id = 0;\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.name = FtRapi.decodeUni( obj.name );\n this.description = FtRapi.decodeUni( obj.description );\n this.status_id = obj.status_id;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n name : FtRapi.encodeUni( this.name ),\n description : FtRapi.encodeUni( this.description ),\n status_id : this.status_id,\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.name = src.name;\n this.description = src.description;\n this.status_id = Ft.parseInt0Null( src.status_id );\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.name = null;\n this.description = null;\n this.status_id = null;\r\n }\r\n}\r\n","import VotingRoundBase from './base/votingRoundBase';\r\n\r\n//********************************************************************\r\n// VotingRound class\r\n// @FTGEN_PROGRESS: busy\r\nexport default class VotingRound extends VotingRoundBase\r\n{\r\n //====================================================================\r\n // static data members\r\n\r\n // #FTGEN_CONSTS_A#\r\n // #FTGEN_CONSTS_Z#\r\n\r\n //====================================================================\r\n // init\r\n \r\n constructor()\r\n {\r\n super();\r\n }\r\n}\r\n","import Decimal from 'decimal.js';\r\nimport moment from 'moment';\r\nimport Ft from '../../first/ft';\r\nimport { FtModel } from '../../first/ftTypes';\r\nimport FtRapi from '../../first/ftRapi';\r\n\r\n//********************************************************************\r\n// VotingRoundBase class : Generated : DO NOT MODIFY\r\nexport default class VotingRoundBase implements FtModel \r\n{\r\n //====================================================================\r\n // properties\r\n id: number;\n round_no: number|null;\n round_name: string|null;\n position_id: number|null;\n status_id: number|null;\r\n\r\n //====================================================================\r\n // init\r\n\r\n constructor()\r\n {\r\n this.id = 0;\n this.round_no = 0;\n this.round_name = '';\n this.position_id = 0;\n this.status_id = 0;\r\n }\r\n\r\n //====================================================================\r\n // instance api\r\n\r\n /// decode relevant members of obj to this members\r\n decodeFromObj( obj: any ): any\r\n {\r\n this.id = obj.id;\n this.round_no = obj.round_no;\n this.round_name = obj.round_name;\n this.position_id = obj.position_id;\n this.status_id = obj.status_id;\r\n return this;\r\n }\r\n\r\n /// encode relevant members of this to obj\r\n encodeToObj(): any\r\n {\r\n const map: any = {\r\n id : this.id,\n round_no : this.round_no,\n round_name : FtRapi.encodeStr( this.round_name ),\n position_id : this.position_id,\n status_id : this.status_id,\r\n };\r\n return map;\r\n }\r\n\r\n /// copy members from src object of same type\r\n copyFrom( src: any ): any\r\n {\r\n this.id = Ft.parseInt0( src.id );\n this.round_no = Ft.parseInt0Null( src.round_no );\n this.round_name = src.round_name;\n this.position_id = Ft.parseInt0Null( src.position_id );\n this.status_id = Ft.parseInt0Null( src.status_id );\r\n return this;\r\n }\r\n\r\n /// clear all members to default values\r\n clear(): void\r\n {\r\n this.id = 0;\n this.round_no = null;\n this.round_name = null;\n this.position_id = null;\n this.status_id = null;\r\n }\r\n}\r\n","import FtRapi from './first/ftRapi';\r\nimport AdminTask from './models/adminTask';\nimport AdminTaskCategory from './models/adminTaskCategory';\nimport ArcRepo from './models/arcRepo';\nimport ArcRepoMediaType from './models/arcRepoMediaType';\nimport ArcUpload from './models/arcUpload';\nimport Assembly from './models/assembly';\nimport AssemblyProperty from './models/assemblyProperty';\nimport AssemblyRegion from './models/assemblyRegion';\nimport AssemblyType from './models/assemblyType';\nimport Attendee from './models/attendee';\nimport AttendeeTitle from './models/attendeeTitle';\nimport AttendeeType from './models/attendeeType';\nimport AuditAction from './models/auditAction';\nimport CandidateStatus from './models/candidateStatus';\nimport Conference from './models/conference';\nimport ConfRegisterStatus from './models/confRegisterStatus';\nimport ContactMethod from './models/contactMethod';\nimport Gender from './models/gender';\nimport GenLookup from './models/genLookup';\nimport Justice from './models/justice';\nimport JusticeCategory from './models/justiceCategory';\nimport JusticeFile from './models/justiceFile';\nimport JusticeNote from './models/justiceNote';\nimport JusticeStatus from './models/justiceStatus';\nimport Language from './models/language';\nimport MaritalStatus from './models/maritalStatus';\nimport Parameter from './models/parameter';\nimport Pastor from './models/pastor';\nimport PastorFile from './models/pastorFile';\nimport PastorHistory from './models/pastorHistory';\nimport PastorPosition from './models/pastorPosition';\nimport PastorQualification from './models/pastorQualification';\nimport PastorStatus from './models/pastorStatus';\nimport PastorTitle from './models/pastorTitle';\nimport PaymentMethod from './models/paymentMethod';\nimport PositionStatus from './models/positionStatus';\nimport Reception from './models/reception';\nimport RoundStatus from './models/roundStatus';\nimport RsaProvince from './models/rsaProvince';\nimport UserAuthRole from './models/userAuthRole';\nimport UserAuthRoleType from './models/userAuthRoleType';\nimport UserDevice from './models/userDevice';\nimport UserType from './models/userType';\nimport Userz from './models/userz';\nimport VotingCandidate from './models/votingCandidate';\nimport VotingPosition from './models/votingPosition';\nimport VotingRound from './models/votingRound';\r\n\r\n//********************************************************************\r\n// Models registry class\r\nexport default class Models \r\n{\r\n //====================================================================\r\n // static api\r\n\r\n /// Adds registered model classes to FtRapi.classMap\r\n /// Use in App():\r\n /// Models.addModelsClassMap();\r\n static addModelsClassMap(): void\r\n {\r\n FtRapi.classMap['AdminTask'] = AdminTask;\n FtRapi.classMap['AdminTaskCategory'] = AdminTaskCategory;\n FtRapi.classMap['ArcRepo'] = ArcRepo;\n FtRapi.classMap['ArcRepoMediaType'] = ArcRepoMediaType;\n FtRapi.classMap['ArcUpload'] = ArcUpload;\n FtRapi.classMap['Assembly'] = Assembly;\n FtRapi.classMap['AssemblyProperty'] = AssemblyProperty;\n FtRapi.classMap['AssemblyRegion'] = AssemblyRegion;\n FtRapi.classMap['AssemblyType'] = AssemblyType;\n FtRapi.classMap['Attendee'] = Attendee;\n FtRapi.classMap['AttendeeTitle'] = AttendeeTitle;\n FtRapi.classMap['AttendeeType'] = AttendeeType;\n FtRapi.classMap['AuditAction'] = AuditAction;\n FtRapi.classMap['CandidateStatus'] = CandidateStatus;\n FtRapi.classMap['Conference'] = Conference;\n FtRapi.classMap['ConfRegisterStatus'] = ConfRegisterStatus;\n FtRapi.classMap['ContactMethod'] = ContactMethod;\n FtRapi.classMap['Gender'] = Gender;\n FtRapi.classMap['GenLookup'] = GenLookup;\n FtRapi.classMap['Justice'] = Justice;\n FtRapi.classMap['JusticeCategory'] = JusticeCategory;\n FtRapi.classMap['JusticeFile'] = JusticeFile;\n FtRapi.classMap['JusticeNote'] = JusticeNote;\n FtRapi.classMap['JusticeStatus'] = JusticeStatus;\n FtRapi.classMap['Language'] = Language;\n FtRapi.classMap['MaritalStatus'] = MaritalStatus;\n FtRapi.classMap['Parameter'] = Parameter;\n FtRapi.classMap['Pastor'] = Pastor;\n FtRapi.classMap['PastorFile'] = PastorFile;\n FtRapi.classMap['PastorHistory'] = PastorHistory;\n FtRapi.classMap['PastorPosition'] = PastorPosition;\n FtRapi.classMap['PastorQualification'] = PastorQualification;\n FtRapi.classMap['PastorStatus'] = PastorStatus;\n FtRapi.classMap['PastorTitle'] = PastorTitle;\n FtRapi.classMap['PaymentMethod'] = PaymentMethod;\n FtRapi.classMap['PositionStatus'] = PositionStatus;\n FtRapi.classMap['Reception'] = Reception;\n FtRapi.classMap['RoundStatus'] = RoundStatus;\n FtRapi.classMap['RsaProvince'] = RsaProvince;\n FtRapi.classMap['UserAuthRole'] = UserAuthRole;\n FtRapi.classMap['UserAuthRoleType'] = UserAuthRoleType;\n FtRapi.classMap['UserDevice'] = UserDevice;\n FtRapi.classMap['UserType'] = UserType;\n FtRapi.classMap['Userz'] = Userz;\n FtRapi.classMap['VotingCandidate'] = VotingCandidate;\n FtRapi.classMap['VotingPosition'] = VotingPosition;\n FtRapi.classMap['VotingRound'] = VotingRound;\r\n }\r\n}\r\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React from 'react';\nimport { useWindowDimensions, View, Pressable, ScaledSize, LayoutChangeEvent, LayoutRectangle } from 'react-native';\nimport Ft from './ft';\nimport { FtConProps } from './ftTypes';\n\ninterface FtConProps2 extends FtConProps {\n children?: React.ReactNode;\n}\n\n//********************************************************************\n// FtCon : general purpose container\n//\n// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see below\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// rat self number width to height ratio, ratio = width/height - -\n// bkgClr self string background color - '#'\n// bkgClrX self string background color when disabled - '#'\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// show self int/bool Show/Hide true 0/1/false/true\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the innermost View for testing - -\n//\n// RESPONSIVENESS:\n// - formats:\n// - - '||||'\n// - - '|||'\n// - - '||'\n// - - '|'\n// - - ''\n// sizes (from Bootstrap4):\n// - xs : extra small, phone, 0 - 575 logical pixels\n// - sm : small, phone-landscape, 576 - 767 logical pixels\n// - md : medium, tablet, 768 - 991 logical pixels\n// - lg : large, laptop, 992 - 1199 logical pixels\n// - xl : extra-large, desktop, 1200+ logical pixels\n//\n// SIZE SPECIFICATION (ss):\n// each size:\n// - formats:\n// - - '..|:
:|..'\n// - - '..|:
|..'\n// - - '..|
|..'\n// - each size is out of 12\n// - lead : leading offset size\n// - main : main item size\n// - trail : trailing size\n// example:\n// ss='2:4|1:6|12' // sets xs: lead=1 main=4, md: lead=1 main=6, lg: lead=0 main=12\n//\n// LAYOUT MODE (md) examples:\n// md='rw' // row with wrapping on all displays\n// md='arw|rw|rw|rw' // anti-row with wrapping on xs displays, row with wrapping for larger displays\n//\n// LAYOUT ALIGNMENT (lt) examples:\n// lt='c,a' // main centered cross start on all displays\n// lt='a,a|z,a|z,a|z,a' // main start cross started on xs displays, main end cross start on larger displays\n//\n// flexbox : https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n//\n// LAYOUT DESIGN:\n// leading/offset view main view trailing view\n// +--------------------------++--------------------------++--------------------------+\n// | ... || ... || ... |\n// +--------------------------++--------------------------++--------------------------+\n//\n// PROPS LAYOUT RELATION:\n// <---------- WIDTH ------------>\n// +-----------------------------+ ^\n// | MARGIN | |\n// | +-----------------------+ | |\n// | | BORDER | | |\n// | | +-----------------+ | | |\n// | | | PADDING/BKG-CLR | | | H\n// | | | +-----------+ | | | E\n// | | | | CONTENT | | | | I\n// | | | +-----------+ | | | G\n// | | | | | | H\n// | | +-----------------+ | | T\n// | | | | |\n// | +-----------------------+ | |\n// | | |\n// +-----------------------------+ v\n//\nexport default function FtCon(\n {\n children,\n onTap, onSize,\n ss, md, lt,\n flex, inflex, w, h, rat,\n bkgClr, bkgClrX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, show,\n en, id,\n }: FtConProps2\n): JSX.Element\n{\n //- hooks, no conditions here -----\n const winDim = useWindowDimensions();\n\n //- handle show -----\n if ( Ft.isDefFalse( show ) ) return (<>);\n\n //- create placeholder for decoding results -----\n const spec: any = {\n hasTap: false, // has onTap event handler\n hasLead: false, // has leading view\n hasTrail: false, // has trailing view\n hasMain: false, // has main views, may be hidden by responsiveness\n hasMar: false, // main views has margins\n stlLead: {} as any, // leading view style\n stlTrail: {} as any, // trailing view style\n stlInner: {} as any, // inner main view style\n stlOuter: {} as any, // outer main view style\n propOuter: {} as any, // outer main special props, eg onLayout for onSize handler\n };\n\n //- decode props into spec -----\n decodeTap( onTap, spec );\n decodeSs( ss, winDim, spec );\n if ( spec.hasMain ) { // don't bother parsing other props if main is hidden\n decodeFlex( flex, inflex, spec );\n decodeWHRat( w, h, rat, spec );\n decodeMar( mar, marT, marL, marR, marB, spec );\n decodeBkgClr( bkgClr, bkgClrX, en, spec );\n decodeBor( bor, spec );\n decodePad( pad, padT, padR, padB, padL, spec );\n decodeOnSize( onSize, spec );\n decodeMdLt( md, lt, winDim, spec );\n }\n\n //- render views -----\n const lead : JSX.Element = spec.hasLead ? () : (<>);\n const trail: JSX.Element = spec.hasTrail ? () : (<>);\n\n //- main can be hidden by responsiveness -----\n if ( !spec.hasMain ) return (<>{lead}{trail});\n\n //- main is visisble ----- \n if ( spec.hasTap ) { // use Pressable instead of View for main\n if ( spec.hasMar ) // main has margins, use two nested views\n return (<>{lead}{children}{trail});\n else // main has no margins, use single view\n return (<>{lead}{children}{trail});\n }\n //- no onTap so use View instead of Pressable for main -----\n if ( spec.hasMar ) // main has margins, use two nested views \n return (<>{lead}{children}{trail});\n //- no onTap and no-margin use single view -----\n return (<>{lead}{children}{trail});\n}\nFtCon.ftcompname = \"FtCon\";\n\n// Decode arguments: onTap\n// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n//\n// Output in spec:\n// hasTap : has onTap event handler\n// propOuter : outer main special props, eg onLayout for onSize handler\n//\nfunction decodeTap( onTap: ( () => void )|undefined, spec: any ): void\n{\n spec.hasTap = !Ft.e( onTap );\n spec.propOuter.onPress = onTap;\n}\n\n// Decode argument: ss\n// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ss self string size specification within parent container '' see below\n//\n// Output in spec:\n// hasLead : has leading view\n// hasTrail : has trailing view\n// hasMain : has main views, may be hidden by responsiveness\n// stlLead : leading view styles\n// stlTrail : trailing view styles\n// stlOuter : outer main view styles\n//\n// each size after responsive parse:\n// - formats:\n// - - '..|:
:|..'\n// - - '..|:
|..'\n// - - '..|
|..'\n// - each size is out of 12\n// - lead : leading offset size, 0 or empty = hide\n// - main : main item size, 0 or empty = hide\n// - trail : trailing size, 0 or empty = hide\n// example:\n// ss='2:4|1:6|12' // sets xs: lead=1 main=4, md: lead=1 main=6, lg: lead=0 main=12\nfunction decodeSs( ss: string|undefined, winDim: ScaledSize, spec: any, id?: string ): void\n{\n if ( ss == undefined || Ft.e( ss ) ) {\n // we have to provide for containerless components, so if ss is empty assume display children as-is\n spec.hasMain = true; \n return;\n }\n const sizeSpec: string|undefined|null = Ft.parseResp( ss, winDim );\n if ( sizeSpec == undefined || sizeSpec == null ) return;\n\n //- regex patterns -----\n const ptnColons: string = '^((\\\\d+):)?(\\\\d+)(:(\\\\d+))?$' // (lead:)(main)(:trail)\n \n //- split display set size into lead/main/trail -----\n const resSz = Ft.regMatch( sizeSpec, ptnColons );\n const resLead: string = resSz ? ( resSz[2] ?? '' ) : '';\n const resMain: string = resSz ? ( resSz[3] ?? '' ) : '';\n const resTrail: string = resSz ? ( resSz[5] ?? '' ) : '';\n\n //- set final spec -----\n if ( resLead != '' && resLead != '0' ) {\n const resLeadNum: number = parseInt( resLead ) * 100 / 12;\n spec.hasLead = true;\n spec.stlLead.width = `${resLeadNum}%`;\n }\n if ( resMain == '0' ) { // width specifier is 0 hide main\n spec.hasMain = false;\n } else if ( resMain != '' ) { // width specifier has a non-0 width\n const resMainNum: number = parseInt( resMain ) * 100 / 12;\n spec.stlOuter.width = `${resMainNum}%`;\n spec.hasMain = true;\n }\n if ( resTrail != '' && resTrail != '0' ) {\n const resTrailNum: number = parseInt( resTrail ) * 100 / 12;\n spec.stlTrail.width = `${resTrailNum}%`;\n spec.hasTrail = true;\n }\n}\n\n// Decode argument: flex\n// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// flex self int size in main direction in ratio to other children - -\n//\n// Output in spec:\n// stlInner : inner main view styles\n// stlOuter : outer main view styles\n//\nfunction decodeFlex( flex: number|undefined, inflex: number|undefined, spec: any ): void\n{\n if ( Ft.isDef( flex ) ) spec.stlOuter.flex = flex;\n if ( Ft.isDef( inflex ) ) spec.stlInner.flex = inflex;\n}\n\n// Decode argument: w/h\n// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// rat self number width to height ratio, ratio = width/height - -\n//\n// Output in spec:\n// stlOuter : outer main view styles\n//\nfunction decodeWHRat( w: number|string|undefined, h: number|string|undefined, rat: number|undefined, spec: any ): void\n{\n //- process width -----\n if ( Ft.isDef( w ) ) spec.stlOuter.width = w;\n\n //- process height -----\n if ( Ft.isDef( h ) ) spec.stlOuter.height = h;\n\n if ( Ft.isDef( rat ) ) spec.stlOuter.aspectRatio = rat;\n}\n\n// Decode argument: mar\n// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n//\n// Notes:\n// - margin is implemented as padding on outer view to retain width/height/aspect-ratio on FtCon\n//\n// Output in spec:\n// hasMar : main views has margins\n// stlOuter : outer main view styles\n//\nfunction decodeMar(\n mar: number|number[]|string|undefined,\n marT: number|string|undefined,\n marL: number|string|undefined,\n marR: number|string|undefined,\n marB: number|string|undefined,\n spec: any\n): void\n{\n //- handle argMar -----\n if ( Ft.isNum( mar ) ) {\n spec.stlOuter.padding = mar;\n spec.hasMar = true;\n } else if ( Array.isArray( mar ) ) {\n if ( mar.length == 1 ) {\n spec.stlOuter.padding = mar[0];\n spec.hasMar = true;\n } else if ( mar.length == 2 ) {\n spec.stlOuter.paddingLeft = mar[0];\n spec.stlOuter.paddingRight = mar[0];\n spec.stlOuter.paddingTop = mar[1];\n spec.stlOuter.paddingBottom = mar[1];\n spec.hasMar = true;\n } else if ( mar.length == 4 ) {\n spec.stlOuter.paddingTop = mar[0];\n spec.stlOuter.paddingRight = mar[2];\n spec.stlOuter.paddingBottom = mar[3];\n spec.stlOuter.paddingLeft = mar[4];\n spec.hasMar = true;\n }\n } else if ( typeof mar == \"string\" ) {\n const sides: any = {...Ft.parseSidesDescr(mar)};\n if ( !Ft.e( sides ) ) {\n spec.hasMar = true;\n if ( Ft.isDef( sides.a ) ) {\n spec.stlOuter.padding = sides.a;\n } else if ( Ft.isDef( sides.h ) ) {\n spec.stlOuter.paddingLeft = sides.h;\n spec.stlOuter.paddingRight = sides.h;\n spec.stlOuter.paddingTop = sides.v;\n spec.stlOuter.paddingBottom = sides.v;\n } else if ( Ft.isDef( sides.t ) ) {\n spec.stlOuter.paddingTop = sides.t;\n spec.stlOuter.paddingRight = sides.r;\n spec.stlOuter.paddingBottom = sides.b;\n spec.stlOuter.paddingLeft = sides.l;\n }\n }\n }\n\n //- handle individual sides -----\n if ( !Ft.e( marT ) ) {\n spec.stlOuter.paddingTop = marT;\n spec.hasMar = true;\n }\n if ( !Ft.e( marR ) ) {\n spec.stlOuter.paddingRight = marR;\n spec.hasMar = true;\n }\n if ( !Ft.e( marB ) ) {\n spec.stlOuter.paddingBottom = marB;\n spec.hasMar = true;\n }\n if ( !Ft.e( marL ) ) {\n spec.stlOuter.paddingLeft = marL;\n spec.hasMar = true;\n }\n\n //- handle inner height when has margin -----\n if ( spec.hasMar && !Ft.eAll( spec.stlOuter.height, spec.stlOuter.aspectRatio ) )\n spec.stlInner.height = '100%';\n}\n\n// Decode arguments: bkgClr, bkgClrX (color part only)\n// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n//\n// Output in spec:\n// stlInner : inner main view styles\n//\nfunction decodeBkgClr(\n bkgClr: string|undefined,\n bkgClrX: string|undefined,\n en: number|boolean|undefined,\n spec: any\n): void\n{\n const isEn: boolean = !Ft.isDefFalse( en );\n const clrX: string|undefined = !Ft.e( bkgClrX ) ? bkgClrX : bkgClr;\n const clr: string|undefined = isEn ? bkgClr : clrX;\n\n if ( Ft.e( clr ) || !clr?.startsWith( '#' ) ) return; // not a color\n\n spec.stlInner.backgroundColor = clr;\n}\n\n// Decode arguments: bor\n// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n//\n// Output in spec:\n// stlInner : inner main view styles\n//\nfunction decodeBor( bor: number|number[]|string|undefined, spec: any ): void\n{\n spec.stlInner = {\n ...spec.stlInner,\n ...Ft.parseBorderDescr( bor ),\n };\n}\n\n// Decode arguments: pad, padT, padR, padB, padL\n// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n//\n// Output in spec:\n// stlInner : inner main view styles\n//\nfunction decodePad(\n pad: number|number[]|string|undefined,\n padT: number|string|undefined,\n padR: number|string|undefined,\n padB: number|string|undefined,\n padL: number|string|undefined,\n spec: any\n): void\n{\n spec.stlInner = {\n ...spec.stlInner,\n ...Ft.parsePadding( pad, padT, padR, padB, padL ),\n };\n}\n\n// Decode arguments: onSize\n// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n//\n// Output in spec:\n// propOuter : outer main special props, eg onLayout for onSize handler\n//\nfunction decodeOnSize( onSize: ( ( layout: LayoutRectangle ) => void )|undefined, spec: any ): void\n{\n if ( onSize != undefined ) spec.propOuter.onLayout = ( e: LayoutChangeEvent ): void => onSize( e.nativeEvent.layout ) ;\n}\n\n// Decode arguments: md, dir, wrap\n// PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n//\n// Output:\n// stlInner : inner main view styles\n// stlOuter : outer main view styles\n//\nfunction decodeMdLt( md: string|undefined, lt: string|undefined|null, winDim: ScaledSize, spec: any ): void\n{\n //- precheck -----\n if ( md == undefined || Ft.e( md ) ) return; // if no md, don't parse or set anything else\n\n //- parse md & lt -----\n const dwSpec: string|undefined|null = Ft.parseResp( md, winDim );\n const ltSpec: string|undefined|null = Ft.parseResp( lt, winDim );\n const stl: any = Ft.parseLayout( dwSpec, ltSpec );\n\n spec.stlInner = {\n ...spec.stlInner,\n ...stl,\n };\n}\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { useState, useEffect } from 'react';\nimport { Platform, Image, ImageSourcePropType } from 'react-native';\nimport Ft from './ft';\nimport { FtConProps } from './ftTypes';\nimport FtCon from './ftCon';\n\ninterface FtImageProps extends FtConProps {\n src?: ImageSourcePropType|string;\n imgFit?: string;\n}\n\n//********************************************************************\n// FtImage : react-native image wrapped in FtCon\n//\n// IMAGE-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// src image image image source, use import - -\n// imgFit image string image fit descriptor - fit: cover/contain/stretch/repeat/center\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap container handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss container string size specification within parent container '' see FtCon docs\n// flex container int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w container int/string width, pixels/percentage - -\n// h container int/string height, pixels/percentage - -\n// rat container number width to height ratio, ratio = width/height - -\n// bkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg container string/array background image descriptor, must be in assets - , use import or require\n// bkgImgX container string/array background image descriptor when disabled, must be in assets - , use import or require\n// fit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// fitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// pad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor container int/array/string Border descriptor, all sides only 0 ',;'\n// elev container int elevation shadow 0 0 - 10\n// show container int/bool Show/Hide true 0/1/false/true\n// aligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// Example: \n// import im_logo from '../../assets/logo.png'; \n// \n//\nexport default function FtImage(\n { \n src, imgFit,\n onTap, onSize,\n ss, flex, inflex, w, h, rat,\n bkgClr, bkgClrX, bkgImg, bkgImgX, fit, fitX,\n pad, padT, padL, padB, padR, \n mar, marT, marL, marB, marR, \n bor, elev, show, aligni, \n en, id,\n }: FtImageProps\n): JSX.Element\n{\n //- hooks: no conditions here -----\n const [ imgRat,setImgRat ] = useState( undefined ); // image dimensions\n\n useEffect( (): void => {\n if ( Platform.OS == 'web' ) {\n Image.getSize( src as any, (width: number, height: number ): void => setImgRat( width / height ) );\n } else {\n const res = src != undefined ? Image.resolveAssetSource( src as ImageSourcePropType ) : undefined;\n if ( res != undefined ) setImgRat( res.width / res.height )\n }\n },[]);\n\n if ( Ft.e( imgRat ) ) return (<>); // wait until image info available before try to display\n\n //- prep container props -----\n const conProps: any = { \n onTap, onSize,\n ss, flex, inflex, w, h, rat,\n bkgClr, bkgClrX, bkgImg, bkgImgX, fit, fitX,\n pad, padT, padL, padB, padR, \n mar, marT, marL, marB, marR, \n bor, elev, show, aligni, \n en, id,\n };\n if ( ( Ft.e( h ) || h == 'auto' ) && Ft.e( rat ) ) conProps.rat = imgRat;\n const imgStyle: any = { width: '100%', height: '100%' };\n if ( !Ft.e( imgFit ) ) imgStyle.resizeMode = imgFit;\n\n return (\n \n {src != undefined ? () : (<>)}\n \n );\n}\n\nFtImage.ftcompname = \"FtImage\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\r\n///\r\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\r\nimport React from 'react';\r\nimport { useWindowDimensions, View } from 'react-native';\r\nimport { Button, Text, Dialog, Portal } from 'react-native-paper';\r\nimport Ft from './ft';\r\n\r\n//********************************************************************\r\n// FtPopupMessage : react-native-paper dialog for popup message\r\n//\r\n// PROP DATA_TYPE DESCRIPTION VALUES\r\n// open state-getter Open state getter from useState -\r\n// setOpen state-setter Open state setter from useState -\r\n// hd string Heading text -\r\n// msg string Message body text -\r\n// btn string Buttion text, default = 'OK' -\r\n// onClose callback Callback for after popup closes -\r\n// clr string Button background color '#'\r\n// txtClr string Button text color '#'\r\n//\r\n// Example:\r\n// { ...doSomething...}} \r\n// />\r\nexport default function FtPopupMessage(\r\n { open, setOpen, hd, msg, btn, onClose, clr, txtClr }:\r\n { \r\n open?: boolean;\r\n setOpen?: ( state: boolean ) => void;\r\n hd?: string;\r\n msg?: string;\r\n btn?: string;\r\n onClose?: () => void;\r\n clr?: string;\r\n txtClr?: string;\r\n }\r\n): JSX.Element \r\n{\r\n //- hooks, no conditions here -----\r\n const winDim = useWindowDimensions();\r\n\r\n function closer(): void \r\n {\r\n if ( setOpen != undefined ) setOpen( false );\r\n if ( onClose != undefined ) onClose();\r\n }\r\n\r\n const softBlue = '#1976d2';\r\n const btnLabel: string = btn ?? \"OK\";\r\n const btnProps: any = {};\r\n btnProps.buttonColor = !Ft.e( clr ) ? clr : softBlue;\r\n btnProps.textColor = !Ft.e( txtClr ) ? txtClr : '#ffffff';\r\n\r\n //- calculate dialog size -----\r\n const dlgStyle: any = {\r\n width: winDim.width < 850 ? winDim.width - 50 : 800,\r\n alignSelf: 'center',\r\n };\r\n\r\n return (<>\r\n \r\n {} } style={dlgStyle}>\r\n {hd}\r\n \r\n {msg}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nFtPopupMessage.ftcompname = \"FtPopupMessage\";\r\n\r\n/// Convenience FtPopupMessage creator\r\n///\r\n/// setter [setPopup] Popup placeholder setter, so it can close by itself\r\n/// string [hd] Heading text\r\n/// string [msg] Message body text\r\n/// callback [onClose] Callback for after popup closes\r\n/// string [btn] Buttion text\r\n/// string [clr] Button background color, '#'\r\n/// string [txtClr] Button text color, '#'\r\n///\r\n/// Usage:\r\n/// using button:\r\n/// ftPopupMessage(\r\n/// setPopup, \"A message\", \"This is a popup message\", {\r\n/// onClose: () => Ft.dirs( \"~~~ popup onclose ~~~\" ), \r\n/// btn: \"Aye-Captain\"\r\n/// )} />\r\n/// {popup}\r\n/// in success callback:\r\n/// ftPopupMessage( setPopup, \"Success\", \"Registration captured successfully\", {\r\n/// btn: \"Close\", onClose: () => nav.replace('AttendeeCapture'), \r\n/// });\r\n/// in error callback:\r\n/// ftPopupMessage( setPopup, \"Error\", result, {\r\n/// btn: \"Close\", onClose: () => nav.replace('AttendeeCapture'), \r\n/// });\r\nexport function ftPopupMessage( \r\n setPopup: ( content: JSX.Element ) => void, \r\n hd?: string, \r\n msg?: string, \r\n { \r\n onClose, btn = 'OK', \r\n clr, txtClr, \r\n setBusy \r\n }: {\r\n onClose?: () => void; \r\n btn?: string; \r\n clr?: string;\r\n txtClr?: string;\r\n setBusy?: ( content: boolean ) => void;\r\n } = {}\r\n): void\r\n{\r\n Ft.webScrollTop();\r\n setPopup( (\r\n {} }\r\n onClose={ (): void => {\r\n setPopup( <> );\r\n if ( setBusy != undefined ) setBusy( false );\r\n if ( onClose != undefined ) onClose();\r\n }} \r\n clr={clr}\r\n txtClr={txtClr}\r\n />\r\n ) );\r\n}\r\n\r\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React from 'react';\nimport { Text } from 'react-native-paper';\nimport Ft from './ft';\nimport { FtConProps } from './ftTypes';\nimport FtCon from './ftCon';\n\ninterface FtTextProps extends FtConProps {\n text?: string;\n txtDescr?: string;\n}\n\n//********************************************************************\n// FtText : react-native-paper Text wrapped in FtCon\n//\n// FTTEXT-PROP AFFECTS DATA_TYPE DESCRIPTION VALUES\n// text text string text to display -\n// txtDescr text string text styling descriptor ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss container string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex container int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w container int/string width, pixels/percentage - -\n// h container int/string height, pixels/percentage - -\n// bkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// fit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// fitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// pad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor container int/array/string Border descriptor, all sides only 0 ',;'\n// elev container int elevation shadow 0 0 - 10\n// show container int/bool Show/Hide true 0/1/false/true\n// aligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// Notes:\n// - To use line breaks in 'text', use double quotes and wrap in curly braces, eg:\n// \n// Example:\n// \n//\nexport default function FtText( { text, txtDescr, md, ...props }: FtTextProps ): JSX.Element\n{\n //- compose cosmetics -----\n if ( Ft.e( md ) ) md = 'rw';\n const txtProps = Ft.parseTextDescrAlign( txtDescr );\n \n //- render -----\n return ({text});\n}\nFtText.ftcompname = \"FtText\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React from 'react';\nimport FtCon from './ftCon';\n\ninterface FtSpacerProps {\n ss?: string;\n h?: number|string;\n show?: number|boolean;\n}\n\n//********************************************************************\n// FtSpacer : vertical spacer\n//\n// SPACER-PROP DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ss string size specification within parent container '12' see FtCon docs\n// h int/string height, pixels/percentage 10 -\n// show int/bool Show/Hide true 0/1/false/true\n//\n// Example:\n// \n//\nexport default function FtSpacer( { ss, h, show }: FtSpacerProps ): JSX.Element\n{\n const props: any = {\n ss: ( ss ?? '12' ),\n h: ( h ?? 20 ),\n show: show,\n };\n return ();\n}\nFtSpacer.ftcompname = \"FtSpacer\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2024 Jaco Bekker T/A LightSoft\n\nimport React from \"react\";\nimport { ActivityIndicator, ProgressBar } from 'react-native-paper';\nimport FtCon from './ftCon';\nimport FtText from './ftText';\nimport FtSpacer from \"./ftSpacer\";\n\ninterface FtBusyProps {\n clr: string;\n popup: JSX.Element;\n isUpload?: boolean;\n progress?: number;\n}\n\n//********************************************************************\n// FtBusy : react-native-paper activity indicator\n//\n// FTBUSY-PROP DATA_TYPE DESCRIPTION VALUES\n// clr string optional: input outline color '#'\n// popup elements optional popup modal from ftPopupMessage/ftPopupOptions -\n// isUpload boolean Flag to also show uploading text and progressbar true/false\n// progress number Value between 0 and 1 to set progressbar for 0.0 .. 1.0\n//\n// Examples:\n// \n// \n// \n// return ();\nexport default function FtBusy(\n {\n clr, \n popup = (<>), \n isUpload = false,\n progress,\n }: FtBusyProps\n): JSX.Element\n{\n //- cosmetics -----\n const color = clr ?? '#1976d2';\n\n return (\n \n {popup}\n \n \n \n \n \n \n \n \n \n \n );\n}\n\n/// Shorthand for FtBusy\n/// Examples:\n/// return ftBusy();\n/// if ( busy || Ft.eAny( mdlPost ) ) return ftBusy( { popup: popup } );\n/// if ( busy || uploading || Ft.eAny( mdlPost ) ) return ftBusy( { popup: popup, isUpload: uploading, progress: progress } );\n///\nexport function ftBusy( props: any ): JSX.Element\n{\n return ();\n}\n","import Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtAppInfo from '../first/ftAppInfo';\r\nimport FtRapiResult from '../first/ftRapiResult';\r\nimport type { FtRapiCallArgs } from '../first/ftTypes';\r\n\r\nimport UserAuthRoleType from '../models/userAuthRoleType';\r\nimport GenLookup from '../models/genLookup'\r\n\r\n//********************************************************************\r\n// App wide utilities\r\nexport default class Ut {\r\n\r\n //====================================================================\r\n // properties\r\n\r\n //- server info -----\r\n static svrVer: string = \"\";\r\n\r\n //- logged-in user -----\r\n static user_id: number = 0;\r\n static display_name: string = \"\";\r\n static role_id: number = 0; // user_auth_role_type id\r\n static user_roles: number[] = []; // roles user is authorized for\r\n\r\n //- cached lookups -----\r\n static lkpAttendeeTitle : GenLookup[]|null = null;\r\n static lkpProvince : GenLookup[]|null = null;\r\n static lkpContactMethod : GenLookup[]|null = null;\r\n static lkpPayMethod : GenLookup[]|null = null;\r\n static lkpAttendeeType : GenLookup[]|null = null;\r\n static lkpRegisterStatus : GenLookup[]|null = null;\r\n static lkpArcRepoMediaType : GenLookup[]|null = null;\r\n static lkpAssemblyType : GenLookup[]|null = null;\r\n static lkpMaritalStatus : GenLookup[]|null = null;\r\n static lkpGender : GenLookup[]|null = null;\r\n static lkpTaskCategory : GenLookup[]|null = null;\r\n static lkpJusticeStatus : GenLookup[]|null = null;\r\n static lkpJusticeCategory : GenLookup[]|null = null;\r\n static lkpPastorStatus : GenLookup[]|null = null;\r\n static lkpPastorTitle : GenLookup[]|null = null;\r\n static lkpPastorPosition : GenLookup[]|null = null;\r\n static lkpUserAuthRoleType : GenLookup[]|null = null;\r\n\r\n //- frontend urls -----\r\n static feBaseUrlDebug: string = 'http://localhost:19006/';\r\n static feBaseUrlRelease: string = 'https://afminfosystem.azurewebsites.net/frontend/index.html';\r\n\r\n //- sharepoint urls -----\r\n static pastorFolderLink = \"https://afmagsorg.sharepoint.com/:f:/r/sites/AFMDEVELOPMENT/Shared%20Documents/DEVELOPMENT/Comms/Pastors\";\r\n static assemblyFolderLink = \"https://afmagsorg.sharepoint.com/:f:/r/sites/AFMDEVELOPMENT/Shared%20Documents/DEVELOPMENT/Comms\";\r\n\r\n //- user role constants -----\r\n static RoleT: any = {\r\n SYSTEMADMIN : UserAuthRoleType.UART_SYSTEMADMIN,\r\n NOB : UserAuthRoleType.UART_NOB,\r\n ADMINISTRATION : UserAuthRoleType.UART_ADMINISTRATION,\r\n ADMINJUSTICE : UserAuthRoleType.UART_ADMINJUSTICE,\r\n NLF : UserAuthRoleType.UART_NLF,\r\n REGIONAL_SECRETARY : UserAuthRoleType.UART_REGIONAL_SECRETARY,\r\n REGIONAL_TREASURER : UserAuthRoleType.UART_REGIONAL_TREASURER,\r\n ADMIN_CLERK : UserAuthRoleType.UART_ADMIN_CLERK,\r\n CONF_SUPERVISOR : UserAuthRoleType.UART_CONF_SUPERVISOR,\r\n CONF_RECEPTION_SCANNING : UserAuthRoleType.UART_CONF_RECEPTION_SCANNING,\r\n CONF_GOODYBAG_SCANNING : UserAuthRoleType.UART_CONF_GOODYBAG_SCANNING,\r\n CONF_DISPLAY_STATS : UserAuthRoleType.UART_CONF_DISPLAY_STATS,\r\n VOTING_MANAGER : UserAuthRoleType.UART_VOTING_MANAGER,\r\n VOTING_CAPTURE_PRIMARY : UserAuthRoleType.UART_VOTING_CAPTURE_PRIMARY,\r\n VOTING_APPROVAL_SECONDARY : UserAuthRoleType.UART_VOTING_APPROVAL_SECONDARY,\r\n VOTING_APPROVAL_FINAL : UserAuthRoleType.UART_VOTING_APPROVAL_FINAL\r\n };\r\n\r\n //====================================================================\r\n // static api\r\n\r\n /// check if user and server info is loaded, load if not\r\n static checkUser( complete?: () => void ): void\r\n {\r\n //- check don't load more than once -----\r\n if ( Ut.svrVer == \"\" ) Ut.loadUser( complete );\r\n else if ( complete ) complete();\r\n }\r\n\r\n /// force loading user and server info\r\n static loadUser( complete?: () => void ): void\r\n {\r\n //- load server and user -----\r\n Ut.user_id = 0;\r\n FtRapi.callRead( 'serverExist', 0, {\r\n success: ( { message }, data ) => Ut.svrVer = data[0],\r\n complete: () => {\r\n FtRapi.callRead( 'authLoginCheck', 0, {\r\n success: ( { message }, data ) => {\r\n Ut.user_id = data[0].id;\r\n Ut.display_name = data[0].disp_name;\r\n Ut.role_id = data[2];\r\n Ut.user_roles = data[3];\r\n },\r\n error: () => { // clear if not logged in\r\n Ut.user_id = 0;\r\n Ut.display_name = \"\";\r\n Ut.role_id = 0;\r\n Ut.user_roles = [];\r\n },\r\n complete: () => {\r\n if ( complete ) complete();\r\n },\r\n });\r\n }\r\n });\r\n }\r\n\r\n /// test if current user has specified role\r\n static roleTest( role: number, role2?: number, role3?: number, role4?: number, role5?: number, role6?: number ): boolean\r\n {\r\n if ( Ut.user_roles.includes( role ) ) return true;\r\n if ( role2 != undefined && Ut.user_roles.includes( role2 ) ) return true;\r\n if ( role3 != undefined && Ut.user_roles.includes( role3 ) ) return true;\r\n if ( role4 != undefined && Ut.user_roles.includes( role4 ) ) return true;\r\n if ( role5 != undefined && Ut.user_roles.includes( role5 ) ) return true;\r\n if ( role6 != undefined && Ut.user_roles.includes( role6 ) ) return true;\r\n return false;\r\n }\r\n\r\n static roleTxtClr(): string\r\n {\r\n switch ( Ut.role_id ) {\r\n case this.RoleT.UART_SYSTEMADMIN: return '#ff6060';\r\n case this.RoleT.UART_NOB: return '#ff6060';\r\n case this.RoleT.UART_ADMINISTRATION: return '#00b0f0';\r\n case this.RoleT.UART_ADMINJUSTICE: return '#fc4efb';\r\n case this.RoleT.UART_NLF: return '#ffc000';\r\n case this.RoleT.UART_REGIONAL_SECRETARY: return '#09fa80';\r\n case this.RoleT.UART_REGIONAL_TREASURER: return '#ffff00';\r\n case this.RoleT.UART_ADMIN_CLERK: return '#00b0f0';\r\n }\r\n return '#ff0000';\r\n }\r\n\r\n static feBaseUrl(): string\r\n {\r\n return FtAppInfo.isDebug ? this.feBaseUrlDebug : this.feBaseUrlRelease;\r\n }\r\n\r\n /// load basic lookups if not already loaded\r\n ///\r\n /// Example:\r\n /// setBusy( true );\r\n /// Ut.loadLookups( {\r\n /// success: ( result, data ) => setBusy( false ),\r\n /// error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n /// });\r\n ///\r\n static loadLookups( args: FtRapiCallArgs ): void\r\n {\r\n //- check already loaded -----\r\n if ( this.lkpArcRepoMediaType != null ) {\r\n if ( args.success != null ) args.success( new FtRapiResult(), [] as any[] );\r\n if ( args.complete != null ) args.complete( new FtRapiResult() );\r\n return;\r\n }\r\n\r\n //- load from server -----\r\n FtRapi.callList( 'basicLookups', {\r\n success: ( result, data ) => {\r\n this.lkpAttendeeTitle = data[0];\r\n this.lkpProvince = data[1];\r\n this.lkpContactMethod = data[2];\r\n this.lkpPayMethod = data[3];\r\n this.lkpAttendeeType = data[4];\r\n this.lkpRegisterStatus = data[5];\r\n this.lkpArcRepoMediaType = data[6];\r\n this.lkpAssemblyType = data[7];\r\n this.lkpMaritalStatus = data[8];\r\n this.lkpGender = data[9];\r\n this.lkpTaskCategory = data[10];\r\n this.lkpJusticeStatus = data[11];\r\n this.lkpJusticeCategory = data[12];\r\n this.lkpPastorStatus = data[13];\r\n this.lkpPastorTitle = data[14];\r\n this.lkpPastorPosition = data[15];\r\n this.lkpUserAuthRoleType = data[16];\r\n if ( args.success != null ) args.success( result, data );\r\n },\r\n error: ( result ) => {\r\n if ( args.error != null ) args.error( result );\r\n },\r\n complete: ( result ) => {\r\n if ( args.complete != null ) args.complete( result );\r\n }\r\n });\r\n }\r\n\r\n /// open url in new tab, url is relative to server\r\n ///\r\n /// Example: Ut.openUrlSvr( 'myreport' );\r\n static openUrlSvr( url: string, args: any = {} ): void\r\n {\r\n Ft.openUrl( FtAppInfo.baseUrl + url, args );\r\n }\r\n\r\n /// open url in new tab, url is relative to server\r\n ///\r\n /// Example: Ut.openReport( 'myreport', prms );\r\n static openReport( url: string, parms: any = {} ): void\r\n {\r\n Ft.openUrl( FtAppInfo.baseUrl + url, { p: Ft.objToJsonBase64( parms ) } );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Appbar } from 'react-native-paper';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtAppInfo from '../first/ftAppInfo';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtImage from '../first/ftImage';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport Ut from '../general/ut';\r\n\r\nimport im_logo from '../../assets/logo-heading.png';\r\n\r\n//********************************************************************\r\n// FragHeader\r\n// @FTGEN_PROGRESS: done\r\n// Description:\r\n// App wise page header\r\nexport default function FragHeader( { navigation, options }: FtPageProps ): JSX.Element \r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> );\r\n const [ visible , setVisible ] = useState( false );\r\n const [ busy , setBusy ] = useState( false );\r\n\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy ) return ftBusy( { popup: popup } );\r\n\r\n const txtClr = \"#ffffff\";\r\n const headStr\r\n = ( !!Ut.display_name ? `[ ${Ut.display_name} ] ` : '[ Guest ] ' )\r\n + `App: v${Ft.prettyVersionExt( FtAppInfo.version )}, Server: v${Ft.prettyVersionExt( Ut.svrVer )}`;\r\n\r\n return (<>\r\n \r\n \r\n {nav.canPop() ? nav.pop()} /> : null}\r\n \r\n {!busy && ()}\r\n {!Ft.e(Ut.user_id) && !busy && ()}\r\n {!Ft.e(Ut.user_id) && ()}\r\n \r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void \r\n {\r\n setBusy( true );\r\n Ut.checkUser( () => setBusy( false ) );\r\n }\r\n\r\n function onTapHome(): void\r\n {\r\n nav.popAllTo( 'Menu' );\r\n }\r\n\r\n function logout(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callNew( 'authLogout', {\r\n success: ( { message }, data ) => Ut.loadUser( () => nav.popAllTo( 'AuthLogin' ) ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, 'Server Error', message, { onClose: () => nav.popAllTo( 'Menu' ) } ),\r\n } );\r\n }\r\n}\r\n","import React from 'react';\nimport { ScrollView, View, ImageSourcePropType, ImageBackground } from 'react-native';\nimport Ft from './ft';\n\n//********************************************************************\n// FtCanvas : react-native-paper View/ScrollView wrapped in FtCon\n//\n// CANVAS-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// scroll children bool Allow canvas to scroll vertically, ignored for web true true/false\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// bkgClr self string background color - '#'\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// id self string id attribute to be applied to the outermost View for testing - -\n// bkgImg self image background image, must be in assets - \n//\nexport default function FtCanvas(\n {\n scroll = 1,\n md, lt,\n bkgClr,\n pad, padT, padL, padB, padR,\n bor, id,\n bkgImg,\n children\n }:\n {\n scroll?: boolean|number;\n md?: string;\n lt?: string;\n bkgClr?: string;\n pad?: number|number[]|string;\n padT?: number|string;\n padB?: number|string;\n padL?: number|string;\n padR?: number|string;\n bor?: number|number[]|string;\n id?: string;\n bkgImg?: ImageSourcePropType;\n children?: React.ReactNode;\n }\n): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n\n //====================================================================\n // layout & render\n\n //- prep container props -----\n let style: any = {\n flex: 1,\n ...Ft.parsePadding( pad, padT, padL, padB, padR ),\n ...Ft.parseBorderDescr( bor ),\n };\n let style2: any = {};\n if ( scroll && !Ft.isWeb() ) { // provide for ScrollView styling\n style2 = Ft.parseLayout( md, lt );\n } else { // put everything inside main View\n style = {\n ...style,\n ...Ft.parseLayout( md, lt ),\n };\n }\n if ( bkgClr ) style.backgroundColor = bkgClr;\n\n //- don't use ScrollView on web, browser already does this internally, only needed on mobile -----\n return !bkgImg\n ? ( scroll && !Ft.isWeb()\n ? ({children})\n : ({children})\n ) \n : ( scroll && !Ft.isWeb()\n ? ({children})\n : ({children})\n ); \n}\nFtCanvas.ftcompname = \"FtCanvas\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\n\nimport React from 'react';\nimport { Button } from 'react-native-paper';\nimport Ft from './ft';\nimport { FtConProps } from './ftTypes';\nimport FtCon from './ftCon';\n\ninterface FtButtonProps extends FtConProps {\n label?: string;\n clr?: string;\n clrX?: string;\n txtClr?: string;\n txtClrX?: string;\n busy?: boolean|number;\n setBusy?: any;\n small?: boolean;\n}\n\n//********************************************************************\n// FtButton : react-native-paper Button wrapped in FtCon\n//\n// BUTTON-PROP DATA_TYPE DESCRIPTION DEFAULT VALUES\n// label string button label - -\n// clr string color - '#'\n// clrX string color when disabled - '#'\n// txtClr string text color - '#'\n// txtClrX string text color when disabled - '#'\n// small boolean make button small false true/false\n// busy bool show busy spinner - -\n// setBusy function hook function to automatically set busy on tap 0 -\n// en int/bool enable button, select prop vs propX 1 0/1/false/true\n// onTap code on-tap/click event handler - -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// Example: \n//\nexport default function FtButton(\n {\n label,\n clr, clrX, txtClr, txtClrX,\n small,\n busy, setBusy, en = 1,\n onTap,\n ...ftConProps\n }: FtButtonProps\n): JSX.Element\n{\n //- button props -----\n const btnClr: string|undefined = !busy && en\n ? ( Ft.isDef( clr ) ? clr : '#1976d2' )\n : ( Ft.isDef( clrX ) ? clrX : '#e0e0e0' );\n const btnTxtClr: string|undefined = !busy && en\n ? ( Ft.isDef( txtClr ) ? txtClr : '#ffffff' )\n : ( Ft.isDef( txtClrX ) ? txtClrX : '#000000' );\n const btnStl: any = small ? { margin: 2, fontSize: 12 } : {};\n\n //- submit handler -----\n const submitHandler = !busy && en\n ? ((): void => {\n if ( !Ft.e( setBusy ) ) setBusy(true);\n if ( onTap != undefined ) onTap();\n })\n : ((): void => {});\n\n return (\n \n \n {label}\n \n \n );\n}\nFtButton.ftcompname = \"FtButton\";\n","//********************************************************************\r\n// App wide theme\r\nexport default class Th {\r\n\r\n //====================================================================\r\n // properties\r\n\r\n //- page -----\r\n static page: any = {\r\n md : 'c',\r\n lt : 'a,c',\r\n bkgClr : '#eeeeee',\r\n padT : '20',\r\n padL : '10',\r\n padR : '10',\r\n padB : '10',\r\n };\r\n\r\n //- content frame -----\r\n static frame: any = {\r\n ss : '12|12|12|12|9',\r\n md : 'c',\r\n lt : 'a,c',\r\n txtDescr : '20,B#ffffff;Helvetica', // d4ab50\r\n headBkgClr : '#005493',\r\n // bodyBor : '2,#d4ab50',\r\n marB : 20,\r\n };\r\n\r\n //- form -----\r\n // OB static formBkgDescr = '#ffffff';\r\n // OB static formPaddingDescr = '15,10,15,10';\r\n // OB static formMarginDescr = '0,5,10,5';\r\n // OB static formBordersDescr = '5,#8388ca;5';\r\n static form: any = {\r\n ss : '12',\r\n md : 'rw',\r\n lt : 'a,a',\r\n bkgClr : '#ffffff',\r\n pad : '15,10,15,10',\r\n mar : 3,\r\n bor : '1,#cccccc;2',\r\n };\r\n\r\n //- grid -----\r\n static grid = {\r\n ss : '12',\r\n dir : 'row',\r\n pad : 10,\r\n hdBkg : '#cccccc',\r\n bor : '1,#cccccc;2',\r\n };\r\n\r\n //- flow level 1 -----\r\n static flow1BkgDescr = '#7e90be';\r\n static flow1PaddingDescr = '5';\r\n static flow1MarginDescr = '5';\r\n static flow1BordersDescr = '5,#7e90be;5';\r\n static flow1ShadowDescr = ''; // 1,1,#ff000000\r\n\r\n //- header -----\r\n static headerBkgDescr = '#696dcf';\r\n\r\n //- main head -----\r\n static mainheadBkgDescr = '/TC:BC,#ececf0,#5158b4,#858aca';\r\n static mainheadTextDescr = '20,WCO#ffffff';\r\n static mainheadMarginDescr = '0,5,0,5';\r\n static mainheadMarginDescrL = '10,5,0,5';\r\n static mainheadMarginDescrU = '0,5,10,5';\r\n static mainheadShadowDescr = '1,1,#000000';\r\n static mainhead = {\r\n bkgClr: '#7678dd', // '|#ececf0,#5158b4,#858aca',\r\n txtDescr: '20,CO#ffffff',\r\n pad: '10',\r\n mar: '0,5,0,5',\r\n };\r\n\r\n //- subhead -----\r\n static subheadBkgDescr = '#cccccc';\r\n static subheadTextDescr = '20,WCO#ffffff';\r\n static subheadTextDescr2 = '18,WCO#ffffff';\r\n static subheadTextDescr3 = '16,WCO#ffffff';\r\n static subheadMarginDescr = '0,5,0,5';\r\n static subhead = {\r\n bkgClr: '#cccccc',\r\n txtDescr: '20,CO#ffffff',\r\n pad: '5',\r\n mar: '0,5,0,5',\r\n };\r\n\r\n //- lists -----\r\n static list = {\r\n ss : '12',\r\n md : 'rw',\r\n lt : 'c,a',\r\n bkgClr : '#8388ca',\r\n bor : '1,#cccccc', // cccccc\r\n };\r\n\r\n //- listHead -----\r\n static listHead = {\r\n bkgClr: '#5b61c1', // 4e56b4\r\n txtDescr: '22,WC#ffffff',\r\n pad: '10,15,10,15',\r\n just: 'C,A'\r\n };\r\n\r\n //- listItemHead -----\r\n static listItemHead = {\r\n bkgClr: '#aec3d9',\r\n txtDescr: '22,WC#ffffff',\r\n pad: '10,5,10,5',\r\n just: 'C,A',\r\n icMarL: 5,\r\n icMarR: 5,\r\n };\r\n static listItemHeadBkg0 = '#aec3d9'; // bbbbbb\r\n static listItemHeadBkg1 = '#9fb4ca'; // aaaaaa\r\n\r\n //- list item -----\r\n static listItemLabel = {\r\n bkgClr: '#4e55b3',\r\n pad: '3,6,3,3',\r\n txtDescr: '16,L#ffffff',\r\n just: 'Z,A'\r\n };\r\n static listItemField = {\r\n bkgClr: '#ffffff',\r\n pad: '3',\r\n txtDescr: '16,L#000000',\r\n };\r\n\r\n //- head small -----\r\n static headSmall = {\r\n bkgClr: '#9fb4ca',\r\n bor: '3,#9fb4ca;3',\r\n txtDescr: '16,WC#ffffff',\r\n pad: '5,15,5,15',\r\n mar: '3,3,3,3',\r\n just: 'C,A',\r\n };\r\n\r\n //- field con & head -----\r\n static fieldCon = {\r\n dir: 'row',\r\n wrap: 1,\r\n mar: '5,5,5,5',\r\n pad: '2',\r\n bor: '1,#79747e;2',\r\n };\r\n static fieldHead = {\r\n txtDescr: '12,C#49454f', // '18,WC#ffffff',\r\n pad: '2,2,2,2',\r\n just: 'C,A',\r\n };\r\n\r\n //- field panel -----\r\n static fldpnlBkgDescr = '#8388ca';\r\n static fldpnlPaddingDescr = '10,5,10,5';\r\n static fldpnlMarginDescr = '0,5,0,5';\r\n\r\n //- field -----\r\n static field: any = {\r\n ext : '0|1|1|1|1',\r\n ss : '12|0:7:1|0:3:1|0:3:1|0:3:1',\r\n labSs : '0|4|2|2|2',\r\n bkgClr : '#ffffff',\r\n pad : '3,5,3,5',\r\n labMd : 'r',\r\n labLt : 'z,c',\r\n labTxtDescr : '16,#000000',\r\n labPad : '16,5,0,5',\r\n };\r\n static field12: any = { // full width fields\r\n ext : '0|1|1|1|1',\r\n ss : '12|0:7:1|0:6:2|0:6:2|0:6:2',\r\n labSs : '0|4|4|4|4',\r\n bkgClr : '#ffffff',\r\n pad : '3,5,3,5',\r\n labMd : 'r',\r\n labLt : 'z,c',\r\n labTxtDescr : '16,#000000',\r\n labPad : '16,5,0,5',\r\n }; \r\n static fieldLg: any = {\r\n ext : '0|1|1|1|1',\r\n ss : '12|0:8|0:4|0:4|0:4',\r\n labSs : '0|4|2|2|2',\r\n bkgClr : '#ffffff',\r\n pad : '3,5,3,5',\r\n labMd : 'r',\r\n labLt : 'z,c',\r\n labTxtDescr : '16,#000000',\r\n labPad : '16,5,0,5',\r\n lines : 5,\r\n }; \r\n static fieldLabel = {\r\n txtDescr: '18,#ffffffff',\r\n };\r\n\r\n //- field icon -----\r\n static fieldIcon = {\r\n dir : 'row',\r\n justM : 'C',\r\n pad : '17,0,12,0',\r\n };\r\n\r\n //- button -----\r\n static buttonClr = '#283891';\r\n static buttonTxtClr = '#ffffff';\r\n static buttonBkgDescr = '#ffffff';\r\n static buttonLabelClr = '#ffffff';\r\n static buttonLabelSize = 24;\r\n static buttonLabelClr2 = '#ffffff';\r\n static buttonLabelSize2 = 14;\r\n static buttonLabelClr3 = '#ffffff';\r\n static buttonLabelSize3 = 20;\r\n static buttonPadding = '10,5,10,5';\r\n static buttonMargin = '10,5,10,5';\r\n static buttonMarginU = '10,5,20,5';\r\n static buttonMarginL = '20,5,10,5';\r\n static buttonMarginS = '0,5,5,5';\r\n static buttonElev = 3;\r\n static buttonBorder = '';\r\n static button = {\r\n clr : '#005493',\r\n };\r\n\r\n //- more buttons -----\r\n static submit: any = { \r\n ss: '12|1:10:1|8:4|8:3:1|9:2:1',\r\n pad : \"5,5,5,5\",\r\n // md : \"c\",\r\n clr : \"#005493\",\r\n };\r\n\r\n static submit2: any = { \r\n // ss: '12|1:10:1|8:4|8:3:1|9:2:1',\r\n pad : \"5,5,5,5\",\r\n // md : \"c\",\r\n clr : \"#005493\",\r\n }; \r\n \r\n //- genText -----\r\n static genTextHeadTextDescr = '20,WCO#273891';\r\n static genTextHeadTextDescr2 = '16,WJ#273891';\r\n\r\n //- menus -----\r\n static menuBtnBkgDescr = '#ffffff';\r\n static menuBtnPaddingDescr = '5,2,0,2';\r\n static menuBtnBordersDescr = '5,#ffffff;5';\r\n static menuBtnShadowDescr = '2,5,#808080';\r\n static menuBtnMarginDescr = '5,10,5,10';\r\n static menuRow = {\r\n ss: '12',\r\n dir: 'row',\r\n wrap: 1,\r\n justM: 'C',\r\n align: 'A',\r\n };\r\n static menuButton = {\r\n ss: '4',\r\n elev: 4,\r\n pad: 5,\r\n mar: 5,\r\n };\r\n //- menu styles -----\r\n static menuFrame: any = {\r\n ss : '12|12|6|6|4',\r\n md : 'rw',\r\n lt : 'a,a',\r\n txtDescr : '20,B#ffffff;Helvetica',\r\n headBkgClr : '#005493',\r\n // bodyBor : '2,#d4ab50',\r\n marB : 20,\r\n };\r\n static menuBlock: any = {\r\n ss : '12|12|12|12|12',\r\n pad : '12',\r\n md : 'rw',\r\n lt : 'a,a',\r\n };\r\n static menuHeading: any = {\r\n ss : '12',\r\n md : 'r',\r\n lt : 'c,c',\r\n bkgClr : '#e32727',\r\n txtDescr : '18,O#ffffff',\r\n pad : '10',\r\n };\r\n static menuBtn = {\r\n ss : '12',\r\n pad : '5,5,5,5',\r\n clr : '#005493',\r\n };\r\n static menuBtnW = {\r\n ss : '0|12|12',\r\n pad : '5,5,5,5',\r\n clr : '#005493',\r\n };\r\n static menuBtnM = {\r\n ss : '12|0|0',\r\n pad : '5,5,5,5',\r\n clr : '#005493',\r\n };\r\n static menuBtnX = {\r\n ss : '0|12|12',\r\n txtClr : '#ffffff',\r\n pad : '5,5,5,5',\r\n clr : '#555555',\r\n };\r\n static btnMenuB = {\r\n ss : '0|12|12',\r\n // txtDescr : '12,L#ffffff',\r\n // flex : 1,\r\n pad : '5,5,5,5',\r\n dir : 'col',\r\n clr : '#9B59B6',\r\n };\r\n\r\n\r\n\r\n //- logoSmall -----\r\n static logoSmallBsSpec = '12,10:80,C';\r\n static logoSmallPaddingDescr = '5,0,0,0';\r\n static logoSmallBordersDescr = '5,#ffffff;5';\r\n\r\n //- misc -----\r\n static textLg: any = {\r\n txtDescr : '20,L#000000',\r\n flex : 1,\r\n pad : '5,5,5,5',\r\n md : 'c',\r\n };\r\n\r\n //- report styles -----\r\n static reportBtn: any = {\r\n clr : '#005493',\r\n ss : '2:8|3:6|3:6|3:6|3:6',\r\n };\r\n static reportBtn2: any = {\r\n clr : '#005493',\r\n ss : '2:8|3:6|6:4|7:3|8:2',\r\n }; \r\n\r\n //- chart -----\r\n static lineChart = {\r\n ss : '12',\r\n rat : 1.5,\r\n elev : 3,\r\n mar : 3,\r\n labelXDescr: '12,#202020;Arial',\r\n labelYDescr: '12,#202020;Arial',\r\n titleXDescr: '14,O#283891;Arial',\r\n titleYDescr: '14,O#283891;Arial',\r\n };\r\n static lineColors = [\r\n '#0000AA', // vga blue\r\n '#00AA00', // vga green\r\n '#00AAAA', // vga cyan\r\n '#AA0000', // vga red\r\n '#AA00AA', // vga magenta\r\n '#AA5500', // vga brown\r\n '#AAAAAA', // vga light grey\r\n '#555555', // vga dark grey\r\n '#5555FF', // vga light blue\r\n '#55FF55', // vga light green\r\n '#55FFFF', // vga light cyan\r\n '#FF5555', // vga light red\r\n '#FF55FF', // vga light magenta\r\n '#FFFF55', // vga light yellow\r\n '#FFFFFF', // vga white\r\n '#000000', // vga black\r\n ];\r\n\r\n static chartBordersDescr = '1,#cccccc;0';\r\n static chartTextDescr = '16,BO#000000';\r\n static chartColor00 = '#000000'; // vga black\r\n static chartColor01 = '#0000AA'; // vga blue\r\n static chartColor02 = '#00AA00'; // vga green\r\n static chartColor03 = '#00AAAA'; // vga cyan\r\n static chartColor04 = '#AA0000'; // vga red\r\n static chartColor05 = '#AA00AA'; // vga magenta\r\n static chartColor06 = '#AA5500'; // vga brown\r\n static chartColor07 = '#AAAAAA'; // vga light grey\r\n static chartColor08 = '#555555'; // vga dark grey\r\n static chartColor09 = '#5555FF'; // vga light blue\r\n static chartColor10 = '#55FF55'; // vga light green\r\n static chartColor11 = '#55FFFF'; // vga light cyan\r\n static chartColor12 = '#FF5555'; // vga light red\r\n static chartColor13 = '#FF55FF'; // vga light magenta\r\n static chartColor14 = '#FFFF55'; // vga light yellow\r\n static chartColor15 = '#FFFFFF'; // vga white\r\n\r\n //====================================================================\r\n // static api\r\n}\r\n","import React, { useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtImage from '../first/ftImage';\r\nimport FtButton from '../first/ftButton';\r\nimport Th from '../general/th';\r\nimport FtAppInfo from '../first/ftAppInfo';\r\n\r\nimport im_nob from '../../assets/logo-landing.png';\r\n\r\n//********************************************************************\r\n// PageLanding\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageLanding( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n \r\n\r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onLoad(): void \r\n {\r\n if ( FtAppInfo.isDebug ) return; // only force new login session on production\r\n \r\n FtRapi.callRead( 'authLoginCheck', 0, {\r\n success: ( result, data ) => {\r\n if ( Ft.e( data[0] ) ) \r\n return;\r\n FtRapi.callNew( 'authLogout', {} );\r\n },\r\n });\r\n }\r\n\r\n function onTapLogin(): void\r\n {\r\n nav.replace( 'AuthLogin' );\r\n }\r\n\r\n}\r\n","/// FIRST: Framework Insuring Rapid Systems Typing\r\n///\r\n/// Copyright (c) 2024 Jaco Bekker T/A LightSoft\r\nimport React from 'react';\r\nimport { FtConProps } from './ftTypes';\r\nimport Ft from './ft';\r\nimport FtCon from './ftCon';\r\nimport FtText from './ftText';\r\n\r\ninterface FtFrameProps extends FtConProps {\r\n children?: React.ReactNode;\r\n text?: string;\r\n txtDescr?: string;\r\n headBkgClr?: string;\r\n headLt?: string;\r\n headPad?:string;\r\n headPadT?:string;\r\n headPadL?:string;\r\n headPadB?:string;\r\n headPadR?:string;\r\n bodyBkgClr?: string;\r\n bodyBor?: string;\r\n bodyPad?:string;\r\n bodyPadT?:string;\r\n bodyPadL?:string;\r\n bodyPadB?:string;\r\n bodyPadR?:string; \r\n}\r\n\r\n//********************************************************************\r\n// FtFrame : heading text and body container\r\n//\r\n// HEADING-PROP DATA_TYPE DESCRIPTION VALUES\r\n// text string text to display -\r\n// txtDescr string text styling descriptor ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\r\n// headBkgClr string Heading background color/gradient descriptor '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\r\n// headPad/* int/array/string Heading padding descriptor, side = t/l/b/r | | \r\n// headLt string Heading layout, '
,', responsive main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\r\n// bodyBkgClr string Body background color/gradient descriptor '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\r\n// bodyBor int/array/string Body border descriptor, all sides only ',;'\r\n// bodyPad/* int/array/string Bosy padding descriptor, side = t/l/b/r | | \r\n//\r\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\r\n// onTap self handler() on tap/click handler function - -\r\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\r\n// ss self string size specification within parent container '' see FtCon docs\r\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\r\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\r\n// flex self int size in main direction in ratio to other children - -\r\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\r\n// w self int/string width, pixels/percentage - -\r\n// h self int/string height, pixels/percentage - -\r\n// rat self number width to height ratio, ratio = width/height - -\r\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\r\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\r\n// bkgImg self string/array background image descriptor, must be in assets - , use import or require\r\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - , use import or require\r\n// fit self string background image fit descriptor - fit: cover/contain/stretch/repeat/center\r\n// fitX self string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\r\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \r\n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \r\n// bor self int/array/string Border descriptor, all sides only 0 ',;'\r\n// elev self int elevation shadow 0 0 - 10\r\n// show self int/bool Show/Hide true 0/1/false/true\r\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\r\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\r\n// id self string id attribute to be applied to the outermost View for testing - -\r\n//\r\n// Example:\r\n// \r\n// content\r\n// \r\n//\r\nexport default function FtFrame(\r\n {\r\n children,\r\n text, txtDescr, headBkgClr, headLt, \r\n bodyBor, bodyBkgClr,\r\n headPad, headPadT, headPadL, headPadB, headPadR,\r\n bodyPad, bodyPadT, bodyPadL, bodyPadB, bodyPadR,\r\n onTap, onSize,\r\n id, ss, md, lt,\r\n flex, inflex, w, h,\r\n bkgClr, bkgClrX, bkgImg, bkgImgX, fit, fitX,\r\n pad, padT, padL, padB, padR,\r\n mar, marT, marL, marB, marR,\r\n bor, elev, show, aligni, en,\r\n }: FtFrameProps\r\n): JSX.Element\r\n{\r\n //- prep container props -----\r\n const conProps: any = {\r\n onTap, onSize,\r\n id, ss: ( ss ?? '12' ), md: 'rw', lt: 'c,a',\r\n flex, w, h,\r\n bkgClr, bkgClrX, bkgImg, bkgImgX, fit, fitX,\r\n pad: ( pad ?? 2 ), padT, padL, padB, padR,\r\n mar, marT, marL, marB, marR,\r\n bor, elev, show, aligni, en,\r\n };\r\n \r\n const txtProps: any = {\r\n ss: '12',\r\n bkgClr: ( headBkgClr ?? '#808080' ),\r\n txtDescr,\r\n pad: headPad, padT: headPadT, padL: headPadL, padB: headPadB, padR: headPadR,\r\n md: 'rw',\r\n lt: ( headLt ?? 'c,a' ),\r\n };\r\n if ( Ft.eAll( txtProps.pad, txtProps.padT, txtProps.padL, txtProps.padB, txtProps.padR ) )\r\n txtProps.pad = '10,10,10,10';\r\n\r\n const bodyProps: any = {\r\n ss: '12',\r\n md: ( md ?? 'c'), lt: ( lt ?? 'c,a'), // because these refer to how children must be layed out\r\n inflex: inflex,\r\n bor: ( bodyBor ?? '#808080' ),\r\n pad: bodyPad, padT: bodyPadT, padL: bodyPadL, padB: bodyPadB, padR: bodyPadR,\r\n };\r\n if ( !Ft.e( bodyBkgClr ) ) bodyProps.bkgClr = bodyBkgClr;\r\n if ( Ft.eAll( bodyProps.pad, bodyProps.padT, bodyProps.padL, bodyProps.padB, bodyProps.padR ) )\r\n bodyProps.pad = '10,10,20,10';\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nFtFrame.ftcompname = \"FtFrame\";\r\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { createContext, useState, useEffect } from 'react';\nimport { Formik } from 'formik';\nimport * as yup from 'yup';\nimport Ft from './ft';\nimport { FtConProps } from './ftTypes';\nimport FtCon from './ftCon';\n\nexport const FtFormContext = createContext({}); // Context to share data with form controls\n\ninterface FtFormProps extends FtConProps {\n spacing?: number|string;\n models: any;\n onSubmit?: ( data: any ) => void;\n onChange?: () => void;\n children: React.ReactNode;\n}\n\n//********************************************************************\n// FtForm : Formik/yup/react-native-paper based form\n//\n// FTFORM-PROP DATA_TYPE DESCRIPTION VALUES\n// models object models object, see format below -\n// onSubmit callback (data) => ... called after update back to models -\n// onChange callback () => ... called when any FtFm* child changes -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// rat self number width to height ratio, ratio = width/height - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - , use import or require\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - , use import or require\n// fit self string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// fitX self string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// Examples:\n// { .. }}\n// >\n// \n// \n// \n// \n// \n// \n// \n// \n// \n// \n// \n// \n// \n//\n// \n// \n//\nexport default function FtForm(\n { spacing, models, onSubmit, onChange, children, ...conProps }: FtFormProps\n): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n\n //- hooks: state -----\n const [ yupSchema , setYupSchema ] = useState( undefined as any ); // form validation schema\n const [ info , setInfo ] = useState( { customSubmitter: ( data: any ) => {} } ); // store non-render trigger state variables\n\n //- hooks: effect -----\n useEffect( (): void => { // componentDidMount\n //- compose yup validator from form children -----\n const yupModels: any = {}; // yup models populated recursively\n parseValidationsChildren( (<>{children}), yupModels ); // parse children props into yupModels\n setYupSchema( convertModelsToSchema( yupModels ) ); // compose yupSchema from yupModels\n },[]);\n\n //- prepare onSubmit with data binding -----\n function formSubmit( data: any ): void\n {\n // NB: this is only called if the form validated OK\n for ( let mdl in data ) { // this does not trigger a new render\n if ( models[mdl]?.copyFrom != undefined ) models[mdl].copyFrom( data[mdl] ); // use each model obj's copyFrom to update fields form returned values\n else Object.assign( models[mdl], data[mdl] );\n }\n if ( onSubmit != undefined ) onSubmit( models );\n info.customSubmitter( models );\n }\n\n //- prepare custom submitter setter: called by children FtFmSubmit to have their custom submit handlers called if any -----\n function setCustomSubmitter( submitter: ( data: any ) => void ): void\n {\n info.customSubmitter = submitter;\n }\n\n function childChanged(): void\n {\n if ( onChange != undefined ) onChange();\n }\n\n //====================================================================\n // render\n\n //- bail if formSubmit or any model empty or yupSchema not init yet -----\n if ( Ft.e( formSubmit ) || Ft.e( models ) || yupSchema == null ) return (<>);\n\n //- create initData from models, may only become available after component already mounted -----\n let initData: any = {};\n for ( let mdl in models )\n initData[mdl] = models[mdl];\n\n //- render -----\n return (\n \n {(): JSX.Element => ( // OB { handleChange, handleBlur, handleSubmit, values }\n \n \n {children}\n \n \n )}\n \n );\n}\n\n//====================================================================\n// internal api\n\n/// Convert yupModels to schema\n///\n/// object [yupModels] Parsed yup objects by models\n/// object [returns] Yup schema\nfunction convertModelsToSchema( yupModels: any ): any\n{\n let mdlSchema: any = {};\n for ( let mdlName in yupModels )\n mdlSchema[mdlName] = yup.object( yupModels[mdlName] ); // wrap each model in a yup.object\n let yupSchema: any = yup.object( mdlSchema ); // wrap whole mdlSchema in a yup.object\n return yupSchema;\n}\n\n/// Check if comp is a FtFtm* component with name prop\n///\n/// object [comp] Component to parse props object for\n/// bool [returns] True if parsable component\nfunction parseValidationsChildren_isFtFmComp( comp: any ): boolean\n{\n if ( !Ft.isDef( comp?.type?.ftcompname ) ) return false; // must know its type name\n if ( !comp.props.hasOwnProperty( 'name' ) ) return false; // must have a name attribute\n switch ( comp.type.ftcompname ) {\n case 'FtFmTextField':\n case 'FtFmTextareaField':\n case 'FtFmPasswordField':\n case 'FtFmEmailField':\n case 'FtFmIntegerField':\n case 'FtFmDecimalField':\n case 'FtFmDoubleField':\n case 'FtFmDateField':\n case 'FtFmDttmField':\n case 'FtFmDttmzField':\n case 'FtFmTimeField':\n case 'FtFmDropdownField':\n case 'FtFmSearchField':\n case 'FtFmCheckboxField':\n case 'FtFmSwitch':\n case 'FtFmSwitchField':\n case 'FtFmUploadImage':\n case 'FtFmUploadFile':\n return true;\n }\n return false;\n}\n\n/// parseValidationsChildren helper: parse rule into yup rule\n///\n/// object [comp] Component to parse props object for\n/// object [yupModels] Yup models object to populate into\n///\n/// see: https://github.com/jquense/yup#api\nfunction parseValidationsChildren_parseRule( comp: any, yupModels: any ): void\n{\n //- compose schema for this component -----\n if ( !parseValidationsChildren_isFtFmComp( comp ) ) return; // check if parsable component\n const props: any = comp.props;\n\n const ptnMdlFld: RegExp = /^ *(\\w+)\\.(\\w+) *$/; // [1]= model, [2]= field, pattern to split model & field\n let nameParts: string[]|null = Ft.regMatch( props.name, ptnMdlFld );\n if ( nameParts == null ) return; // bail if couldn't decipher name\n const [dummy, model, field] = nameParts;\n\n //- error messages -----\n const msgReq: string = \"This field is required\";\n const msgMin: string = \"Expecting a number larger than\";\n const msgMax: string = \"Expecting a number smaller than\";\n const msgMinS: string = \"Expecting an entry longer than\";\n const msgMaxS: string = \"Expecting an entry shorter than\";\n const msgMinD: string = \"Expecting a date later than\";\n const msgMaxD: string = \"Expecting a date earlier than\";\n const msgMinT: string = \"Expecting a time later than\";\n const msgMaxT: string = \"Expecting a time earlier than\";\n const msgEmail: string = \"Expecting an email address\";\n const msgRegex: string = \"Invalid value for this field\";\n\n //- handle component level checks -----\n let schema: any|null = null; // start with null so we can detect when there were no rules\n\n //- loop props and parse rules -----\n for ( let propName in props ) { // loop properties in current component\n if ( !propName.startsWith( \"ft\" ) ) continue; // only parse yup_* attributes\n switch ( comp.type.ftcompname ) {\n case 'FtFmTextField':\n case 'FtFmTextareaField':\n case 'FtFmPasswordField':\n switch ( propName ) {\n case 'ftreq' : schema = ( schema ?? yup.string() ).required( props?.ftreqmsg ?? msgReq ); break;\n case 'ftmin' : schema = ( schema ?? yup.string() ).min( props.ftmin, props?.ftminmsg ?? `${msgMinS} ${props.ftmin}` ); break;\n case 'ftmax' : schema = ( schema ?? yup.string() ).max( props.ftmax, props?.ftmaxmsg ?? `${msgMaxS} ${props.ftmax}` ); break;\n case 'ftregex': schema = ( schema ?? yup.string() ).matches( props.ftregex, props?.ftregexmsg ?? msgRegex ); break;\n }\n break;\n case 'FtFmEmailField':\n schema = yup.string().email( msgEmail );\n switch ( propName ) {\n case 'ftreq': schema = ( schema ?? yup.string() ).required( props?.ftreqmsg ?? msgReq ); break;\n case 'ftmin': schema = ( schema ?? yup.string() ).min( props.ftmin, props?.ftminmsg ?? `${msgMinS} ${props.ftmin}` ); break;\n case 'ftmax': schema = ( schema ?? yup.string() ).max( props.ftmax, props?.ftmaxmsg ?? `${msgMaxS} ${props.ftmax}` ); break;\n }\n break;\n case 'FtFmIntegerField':\n case 'FtFmDecimalField':\n case 'FtFmDoubleField':\n switch ( propName ) {\n case 'ftreq': schema = ( schema ?? yup.number() ).required( props?.ftreqmsg ?? msgReq ); break;\n case 'ftmin': schema = ( schema ?? yup.number() ).min( props.ftmin, props?.ftminmsg ?? `${msgMin} ${props.ftmin}` ); break;\n case 'ftmax': schema = ( schema ?? yup.number() ).max( props.ftmax, props?.ftmaxmsg ?? `${msgMax} ${props.ftmax}` ); break;\n }\n break;\n case 'FtFmDateField':\n case 'FtFmDttmField':\n case 'FtFmDttmzField':\n switch ( propName ) {\n case 'ftreq': schema = ( schema ?? yup.date() ).required( props?.ftreqmsg ?? msgReq ); break;\n case 'ftmin': schema = ( schema ?? yup.date() ).min( props.ftmin, props?.ftminmsg ?? `${msgMinD} ${props.ftmin}` ); break;\n case 'ftmax': schema = ( schema ?? yup.date() ).max( props.ftmax, props?.ftmaxmsg ?? `${msgMaxD} ${props.ftmax}` ); break;\n }\n break;\n case 'FtFmTimeField':\n //case 'ftval_tim_req': schema = ( schema ?? yup.string() ).required( props?.ftreqmsg ?? msgReq ); break; // FtFmTimeField\n //case 'ftval_tim_min': schema = ( schema ?? yup.string() ).min( props.ftval_tim_min, props?.ftminmsg ?? `${msgMinT} ${props.ftval_tim_min}` ); break; // FtFmTimeField\n //case 'ftval_tim_max': schema = ( schema ?? yup.string() ).max( props.ftval_tim_max, props?.ftmaxmsg ?? `${msgMaxT} ${props.ftval_tim_max}` ); break; // FtFmTimeField\n break;\n case 'FtFmDropdownField':\n case 'FtFmSearchField':\n switch ( propName ) {\n case 'ftreq': schema = ( schema ?? yup.number() ).required( props?.ftreqmsg ?? msgReq ).min( 1, msgReq ); break;\n }\n break;\n case 'FtFmUploadImage':\n case 'FtFmUploadFile': \n switch ( propName ) {\n case 'ftreq': schema = ( schema ?? yup.string() ).required( props?.ftreqmsg ?? msgReq ); break;\n }\n break;\n }\n }\n\n if ( schema != null ) { // schema entries were added\n if ( !yupModels.hasOwnProperty( model ) ) yupModels[model] = {};\n yupModels[model][field] = schema; // replace any previous rules for this model.field\n }\n}\nFtForm.ftcompname = \"FtForm\";\n\n/// Parse validations\n/// Parse props.children components for ftreq/ftmin/ftmax validation rules, recursive\n/// Component [comp] Input component to parse, recursive parameter\n/// object [returns] Yup models\n///\n/// yupModels: {\n/// : {\n/// : ,\n/// ... // more fields\n/// },\n/// ... // more models\n/// }\n/// yupSchema: yup.object({\n/// : yup.object({\n/// : ,\n/// ... // more fields\n/// },\n/// ... // more models\n/// });\nfunction parseValidationsChildren( comp: any, yupModels: any ): void\n{\n if ( !comp.hasOwnProperty( 'props' ) ) return; // don't parse if not Component\n parseValidationsChildren_parseRule( comp, yupModels ); // parse rules for this component\n\n //- parse children -----\n if ( !comp.props.hasOwnProperty( 'children' ) || !comp.props.children ) return; // check children exist\n if ( Array.isArray( comp.props.children ) ) {\n for ( let i in comp.props.children ) {\n let child = comp.props.children[i];\n if ( child == null ) continue;\n parseValidationsChildren( child, yupModels );\n }\n } else parseValidationsChildren( comp.props.children, yupModels );\n}\n\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { useContext } from 'react';\nimport { Button } from 'react-native-paper';\nimport { useFormikContext } from 'formik';\nimport Ft from './ft';\nimport { FtConProps } from './ftTypes';\nimport FtCon from './ftCon';\nimport { FtFormContext } from './ftForm';\n\ninterface FtFmSubmitProps extends FtConProps {\n label?: string;\n clr?: string;\n clrX?: string;\n txtClr?: string;\n txtClrX?: string;\n busy?: boolean;\n setBusy?: ( state: boolean ) => void;\n onSubmit?: ( data: any ) => void;\n getSubmitter?: ( submitter: () => void ) => void;\n}\n\n//********************************************************************\n// FtFmSubmit : react-native-paper Form submit Button wrapped in FtCon\n//\n// SUBMIT-PROP DATA_TYPE DESCRIPTION DEFAULT VALUES\n// label string TextField label - -\n// clr string color - '#'\n// clrX string color when disabled - '#'\n// txtClr string text color - '#'\n// txtClrX string text color when disabled - '#'\n// busy bool show busy spinner - -\n// setBusy function hook function to automatically set busy on tap 0 -\n// en int/bool enable button, select prop vs propX 1 0/1/false/true\n// onTap function event handler: () => void - -\n// onSubmit function event handler: ( data: any ) => void - only executed when this button is pressed and form validates\n// getSubmitter function event handler to get a submit function for this button - use submitter to programmetically submit this button/form\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// Example:\n// \n// setSubmitter( submitter ) } /> // calling submitter will submit form via this button\n//\nexport default function FtFmSubmit(\n { \n label, clr, clrX, txtClr, txtClrX, \n busy, setBusy, onTap, onSubmit, getSubmitter,\n ...ftConProps \n }: FtFmSubmitProps\n): JSX.Element\n{\n //- hooks : no conditions here -----\n const formCtx = useContext( FtFormContext );\n const { handleSubmit } = useFormikContext(); // fetch formik context\n \n //- unpack spec args -----\n ftConProps.mar = Ft.fetchArg( ftConProps?.mar, formCtx?.spacing );\n\n //- button colors -----\n const enabled: boolean = !Ft.isDef( ftConProps.en ) || !!ftConProps.en;\n const btnClr: string|undefined = !busy && enabled\n ? ( Ft.isDef( clr ) ? clr : '#1976d2' )\n : ( Ft.isDef( clrX ) ? clrX : '#e0e0e0' );\n const btnTxtClr: string|undefined = !busy && enabled\n ? ( Ft.isDef( txtClr ) ? txtClr : '#ffffff' )\n : ( Ft.isDef( txtClrX ) ? txtClrX : '#000000' );\n\n //- submit handler -----\n const submitHandler = !busy && enabled \n ? ((): void => {\n if ( setBusy != undefined ) setBusy( true );\n if ( onTap != undefined ) onTap();\n formCtx.childChanged();\n if ( onSubmit != undefined ) formCtx.setCustomSubmitter( onSubmit );\n handleSubmit(); \n })\n : (): void => {};\n\n if ( getSubmitter != undefined ) getSubmitter( submitHandler );\n\n return (\n \n \n {label}\n \n \n );\n}\nFtFmSubmit.ftcompname = \"FtFmSubmit\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { useContext } from 'react';\nimport { useWindowDimensions } from 'react-native';\nimport { useField, useFormikContext } from 'formik';\nimport { TextInput, HelperText } from 'react-native-paper';\nimport Ft from './ft';\nimport type { FtConProps, FtFmExtLabelProps } from './ftTypes';\nimport FtCon from './ftCon';\nimport { FtFormContext } from './ftForm';\nimport FtText from './ftText';\n\ninterface FtFmTextFieldProps extends FtConProps, FtFmExtLabelProps {\n name?: string;\n label?: string;\n txtClr?: string;\n labClr?: string;\n txtBkg?: string;\n lineClr?: string;\n pass?: boolean;\n lines?: number;\n icon?: string;\n onTapIcon?: () => void;\n affix?: string;\n onChange?: ( newVal: any ) => void;\n spel?: boolean;\n selOnFocus?: boolean;\n num?: boolean;\n ftreq?: boolean;\n ftmin?: number;\n ftmax?: number;\n ftregex?: string;\n ftreqmsg?: string;\n ftminmsg?: string;\n ftmaxmsg?: string;\n ftregexmsg?: string;\n}\n\n//********************************************************************\n// FtFmTextField : react-native-paper TextField wrapped in FtCon\n//\n// TEXTFIELD-PROP DATA_TYPE DESCRIPTION VALUES\n// name string field name for data binding, 'md11.field' -\n// label string label text, internal or external label -\n// txtClr string input text color '#'\n// labClr string internal label text color '#'\n// txtBkg string input background color '#'\n// lineClr string input outline color '#'\n// pass bool password mode -\n// lines int number of lines in multiline mode 1\n// icon string right side icon name, eg 'eye' https://materialdesignicons.com\n// onTapIcon code on tap icon handler -\n// affix string right side affix string, won't show with icon -\n// onChange function event handler: (newVal) => { .. } -\n// spel bool enable/disable spellchecking, default on, web only -\n// selOnFocus bool select text on focus -\n// num bool use numeric keyboard -\n//\n// INPUT-CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n// labOnTap self handler() on tap/click handler function - -\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// labSs container string size specification within parent container '' see FtCon docs\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// labFlex container int size in main direction in ratio to other children - -\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// labW container int/string width, pixels/percentage - -\n// labH container int/string height, pixels/percentage - -\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\n// labElev container int elevation shadow 0 0 - 10\n// labShow container int/bool Show/Hide true 0/1/false/true\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// labId self string id attribute to be applied to the outermost View for testing - -\n//\n// Supported validation props:\n// PROP DESCRIPTION EXAMPLE\n// ftreq input is required \n// ftmin input must be at least this long \n// ftmax input must be at most this long \n// ftregex input must match this regular expression \n//\n// ftreqmsg custom error message : freq \n// ftminmsg custom error message : ftmin \n// ftmaxmsg custom error message : ftmax \n// ftregexmsg custom error message : ftregex \n//\n// Links: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n//\nexport default function FtFmTextField(\n {\n label,\n txtClr, labClr, txtBkg, lineClr, pass, lines,\n icon, onTapIcon, affix, onChange, spel, selOnFocus = false, num = false,\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni, en = 1,\n //- external label props -----\n ext, labTxtDescr,\n labOnTap, labOnSize,\n labSs, labMd, labLt,\n labFlex, labInflex, labW, labH,\n labBkgClr, labBkgClrX, labBkgImg, labBkgImgX,\n labFit, labFitX,\n labPad, labPadT, labPadR, labPadB, labPadL,\n labMar, labMarT, labMarR, labMarB, labMarL,\n labBor, labElev, labShow, labAligni,\n labEn, labId,\n //- remaining props -----\n ...props\n }: FtFmTextFieldProps\n): JSX.Element\n{\n //- hooks : no conditions here -----\n const winDim = useWindowDimensions();\n const formCtx = useContext( FtFormContext ) as any;\n const { handleChange, handleBlur } = useFormikContext(); // fetch formik context\n const [ { name, value }, meta ] = useField( props as any );\n\n //- prep field & container props -----\n const ctlMar: string|undefined = !Ft.e( mar ) ? mar : formCtx.spacing;\n const conProps: any = { // container properties\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar: ctlMar, marT, marL, marB, marR,\n bor, elev, show, aligni, en,\n };\n\n //- setup some cosmetics -----\n let cosmet: any = { theme: { colors: {} } };\n cosmet.style = { fontSize: Ft.scaleFont( 16 ) };\n if ( !Ft.e( txtClr ) ) cosmet.theme.colors.text = txtClr;\n if ( !Ft.e( labClr) ) cosmet.theme.colors.placeholder = labClr;\n if ( !Ft.e( txtBkg ) ) cosmet.theme.colors.background = txtBkg;\n if ( !Ft.e( lineClr ) ) cosmet.outlineColor = lineClr;\n if ( !Ft.e( lines ) ) {\n cosmet.numberOfLines = lines;\n cosmet.multiline = true;\n }\n if ( !Ft.e( affix ) ) cosmet.right = ();\n if ( num ) cosmet.keyboardType = 'numeric';\n const iconPress = !Ft.e( onTapIcon ) ? { onPress: onTapIcon } : {};\n if ( !Ft.e( icon ) ) cosmet.right = ();\n if ( spel != undefined && !spel ) cosmet.spellCheck = false;\n\n const disabled: boolean = !en;\n const labelReq: string|undefined = ( !Ft.e( label ) && !disabled && Ft.isDef( props.ftreq ) ) ? `${label} * ` : label;\n\n //- setup external label -----\n const isExt: boolean = Ft.parseResp( ext ?? '0', winDim ) == '1';\n const extLabelProps: any = isExt\n ? {\n text: !props.ftreq ? label : `${label} *`,\n txtDescr: labTxtDescr,\n onTap: labOnTap, onSize: labOnSize,\n ss: labSs, md: labMd, lt: labLt,\n flex: labFlex, inflex: labInflex, w: labW, h: labH,\n bkgClr: labBkgClr, bkgClrX: labBkgClrX,\n bkgImg: labBkgImg, bkgImgX: labBkgImgX,\n fit: labFit, fitX: labFitX,\n pad: labPad, padT: labPadT, padR: labPadR, padB: labPadB, padL: labPadL,\n mar: labMar, marT: labMarT, marR: labMarR, marB: labMarB, marL: labMarL,\n bor: labBor, elev: labElev, show: labShow, aligni: labAligni,\n en: labEn, id: labId,\n }\n : {};\n\n //- render control -----\n const control: JSX.Element = (\n \n {\n if ( disabled ) return;\n formCtx.childChanged();\n if ( onChange != undefined ) onChange( newVal );\n handleChange( name )( { target: { name: name, value: newVal } } as any );\n }}\n onBlur={handleBlur(name)} // TODO check if this should be () => handleBlur(name)\n selectTextOnFocus={selOnFocus}\n mode=\"outlined\"\n label={isExt ? '' : labelReq}\n dense={true}\n disabled={disabled}\n error={!!meta.error}\n secureTextEntry={!!pass}\n {...cosmet}\n {...props}\n />\n {( !!meta.error ? ({meta.error}) : (<>) )}\n \n );\n\n //- render final component -----\n const comp = isExt\n ? (<>{control})\n : control;\n\n return comp;\n\n}\nFtFmTextField.ftcompname = \"FtFmTextField\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { useState } from 'react';\nimport FtFmTextField from './ftFmTextField';\nimport { FtConProps, FtFmExtLabelProps } from './ftTypes';\n\ninterface FtFmPasswordFieldProps extends FtConProps, FtFmExtLabelProps {\n name?: string;\n label?: string;\n txtClr?: string;\n labClr?: string;\n txtBkg?: string;\n lineClr?: string;\n onChange?: ( newVal: string ) => void;\n ftreq?: boolean;\n ftmin?: number;\n ftmax?: number;\n ftregex?: string;\n ftreqmsg?: string;\n ftminmsg?: string;\n ftmaxmsg?: string;\n ftregexmsg?: string;\n}\n\n//********************************************************************\n// FtFmPasswordField : react-native-paper TextField password wrapped in FtCon\n// PASSWORD-PROP DATA_TYPE DESCRIPTION VALUES\n// name string field name for data binding, 'md11.field' -\n// label string label text -\n// txtClr string input text color '#'\n// labClr string label text color '#'\n// txtBkg string input background color '#'\n// lineClr string input outline color '#'\n// onChange function event handler: (newVal) => { .. } -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n// labOnTap self handler() on tap/click handler function - -\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// labSs container string size specification within parent container '' see FtCon docs\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// labFlex container int size in main direction in ratio to other children - -\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// labW container int/string width, pixels/percentage - -\n// labH container int/string height, pixels/percentage - -\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\n// labElev container int elevation shadow 0 0 - 10\n// labShow container int/bool Show/Hide true 0/1/false/true\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// labId self string id attribute to be applied to the outermost View for testing - -\n//\n// Supported validation props:\n// PROP DESCRIPTION EXAMPLE\n// ftreq input is required \n// ftmin input must be at least this long \n// ftmax input must be at most this long \n// ftregex input must match this regular expression \n//\n// ftreqmsg custom error message : freq \n// ftminmsg custom error message : ftmin \n// ftmaxmsg custom error message : ftmax \n// ftregexmsg custom error message : ftregex \n//\n// Links: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n//\nexport default function FtFmPasswordField( { ...props }: FtFmPasswordFieldProps ): JSX.Element\n{ \n //- hooks: no conditions here -----\n const [isOpen, setIsOpen] = useState(false);\n\n //- prep pass props -----\n const passProps: any = {\n icon: isOpen ? 'eye' : 'eye-off',\n pass: !isOpen,\n onTapIcon: () => setIsOpen( !isOpen )\n };\n\n //- render -----\n return ();\n}\nFtFmPasswordField.ftcompname = \"FtFmPasswordField\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React from 'react';\nimport { FtConProps, FtFmExtLabelProps } from './ftTypes';\nimport FtFmTextField from './ftFmTextField';\n\ninterface FtFmEmailFieldProps extends FtConProps, FtFmExtLabelProps {\n name?: string;\n label?: string;\n txtClr?: string;\n labClr?: string;\n txtBkg?: string;\n lineClr?: string;\n onChange?: ( newVal: any ) => void;\n ftreq?: boolean;\n ftmin?: number;\n ftmax?: number;\n ftregex?: string;\n ftreqmsg?: string;\n ftminmsg?: string;\n ftmaxmsg?: string;\n ftregexmsg?: string;\n}\n\n//********************************************************************\n// FtFmEmailField : react-native-paper TextField password wrapped in FtCon\n//\n// TEXTFIELD-PROP DATA_TYPE DESCRIPTION VALUES\n// name string field name for data binding, 'md11.field' -\n// label string label text -\n// txtClr string input text color '#'\n// labClr string label text color '#'\n// txtBkg string input background color '#'\n// lineClr string input outline color '#'\n// onChange function event handler: (newVal) => { .. } -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n// labOnTap self handler() on tap/click handler function - -\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// labSs container string size specification within parent container '' see FtCon docs\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// labFlex container int size in main direction in ratio to other children - -\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// labW container int/string width, pixels/percentage - -\n// labH container int/string height, pixels/percentage - -\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\n// labElev container int elevation shadow 0 0 - 10\n// labShow container int/bool Show/Hide true 0/1/false/true\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// labId self string id attribute to be applied to the outermost View for testing - -\n//\n// Supported validation props:\n// PROP DESCRIPTION EXAMPLE\n// ftreq input is required \n// ftmin input must be at least this long \n// ftmax input must be at most this long \n//\n// ftreqmsg custom error message : freq \n// ftminmsg custom error message : ftmin \n// ftmaxmsg custom error message : ftmax \n//\n// Example:\n// \n//\nexport default function FtFmEmailField({ ...props }: FtFmEmailFieldProps ): JSX.Element\n{\n return ();\n}\nFtFmEmailField.ftcompname = \"FtFmEmailField\";\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtCon from '../first/ftCon';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport FtFmPasswordField from '../first/ftFmPasswordField';\r\nimport FtFmEmailField from '../first/ftFmEmailField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport Userz from '../models/userz';\r\n\r\n//********************************************************************\r\n// PageAuthLogin\r\n// @FTGEN_PROGRESS: done\r\n// Description:\r\n// Purpose: allow administrator to log into admin console\r\n// Buttons:\r\n// - Login > check credentials, navigate to Profiles-List page\r\n// - Forgot Password > navigate to Forgot-Password page\r\nexport default function PageAuthLogin( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n // const { parameter } = nav.params ?? { parameter: value };\r\n const [ popup , setPopup ] = useState( <> );\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlUser , setMdlUser ] = useState( new Userz() );\r\n\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy ) return ftBusy( { popup: popup } );\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callRead( 'authLoginCheck', 0, {\r\n success: ( result, data ) => {\r\n if ( !Ft.e( data[0] ) ) nav.replace( 'Menu' );\r\n },\r\n complete: () => Ut.loadUser( () => setBusy( false ) ),\r\n });\r\n }\r\n\r\n function onTapLogin(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callNew( 'authLogin', {\r\n urlParms: { \r\n 'username': mdlUser.username,\r\n 'password': mdlUser.password\r\n },\r\n success: ( { message }, data ) => nav.popAllTo( 'Menu' ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete : () => Ut.loadUser( () => setBusy( false ) ),\r\n });\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtButton from '../first/ftButton';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageMenu\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageMenu( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ showAdmin , setShowAdmin ] = useState( true );\r\n const [ showManagement , setShowManagement ] = useState( false );\r\n const [ showProvinces , setShowProvinces ] = useState( false );\r\n const [ showRegions , setShowRegions ] = useState( false );\r\n const [ showAssemblies , setShowAssemblies ] = useState( false );\r\n const [ showPastors , setShowPastors ] = useState( false );\r\n const [ showJustice , setShowJustice ] = useState( false );\r\n const [ showRegSecretary , setShowRegSecretary ] = useState( false );\r\n const [ showTreasurers , setShowTreasurers ] = useState( false );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy ) return ftBusy( { popup: popup } );\r\n\r\n const stl: any = { txtClr: '#ffffff' };\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n display( 'ConfVoting' )} */ />\r\n display( 'Management' )} />\r\n display( 'Provinces' )} */ />\r\n display( 'Regions' )} />\r\n display( 'Assemblies' )} />\r\n display( 'Pastors' )} />\r\n nav.push(\"PastorSearchMob\")} />\r\n display( 'Justice' )} />\r\n display( 'RegSecretary' )} */ />\r\n display( 'Treasurers' )} */ />\r\n nav.push( 'MenuConfRegister' )} />\r\n \r\n nav.push( 'MenuVoting' )}\r\n />\r\n nav.push( 'ConfregisCards' )} />\r\n \r\n \r\n\r\n \r\n \r\n nav.push(\"UserSearch\")} />\r\n nav.push(\"TaskSearch\")} />\r\n {/*\r\n nav.push(\"?\")} />\r\n nav.push(\"?\")} />\r\n nav.push(\"?\")} />\r\n nav.push(\"?\")} />\r\n nav.push(\"?\")} />\r\n nav.push(\"?\")} />\r\n */}\r\n \r\n display( 'Admin' )} />\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n nav.push(\"RegionSearch\")} />\r\n nav.push(\"ReportRegionList\")} />\r\n nav.push(\"ReportRegionOfficeBearers\")} />\r\n \r\n display( 'Admin' )} />\r\n \r\n \r\n\r\n \r\n \r\n nav.push(\"AssemblySearch\")} />\r\n nav.push(\"ReportLabelAssemblySecretary\")} />\r\n nav.push(\"ReportAssemblyAddedLast6Months\")} />\r\n nav.push(\"ReportAssemblyNoPastors\")} />\r\n nav.push(\"ReportAssemblyNumberList\")} />\r\n nav.push(\"ReportAssemblyNumberListSum\")} />\r\n nav.push(\"ReportAssemblyPastorsList\")} />\r\n nav.push(\"ReportLabelNoMailAddresses\")} />\r\n nav.push(\"ReportRegionList\")} />\r\n nav.push(\"ReportRegionOfficeBearers\")} />\r\n \r\n display( 'Admin' )} />\r\n \r\n \r\n\r\n \r\n \r\n nav.push(\"PastorSearch\")} />\r\n nav.push(\"ReportPastorMarriageOfficers\")} />\r\n nav.push(\"ReportPastorGender\")} />\r\n nav.push(\"ReportPastorReinstated\")} />\r\n nav.push(\"ReportPastor40Year\")} />\r\n nav.push(\"ReportPastorRenewed\")} />\r\n nav.push(\"ReportPastorSecondedAll\")} />\r\n nav.push(\"ReportPastorSecondedForces\")} />\r\n nav.push(\"ReportPastoralStatus\")} />\r\n nav.push(\"ReportPastoralStatusLapsed\")} />\r\n nav.push(\"ReportPastoralStatusLapsedWarning\")} />\r\n nav.push(\"ReportPastorDuplicates\")} />\r\n nav.push(\"ReportPastorMovementAccepted\")} />\r\n nav.push(\"ReportPastorMovementCalled\")} />\r\n \r\n display( 'Admin' )} />\r\n \r\n \r\n\r\n \r\n \r\n nav.push(\"JusticeSearch\")} />\r\n \r\n display( 'Admin' )} />\r\n \r\n \r\n\r\n \r\n \r\n \r\n display( 'Admin' )} />\r\n \r\n \r\n\r\n \r\n \r\n \r\n display( 'Admin' )} />\r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n setBusy( true );\r\n Ut.loadUser( () => setBusy( false ) );\r\n }\r\n\r\n function display( name: string ): void\r\n {\r\n setShowAdmin( false );\r\n setShowManagement( false );\r\n setShowProvinces( false );\r\n setShowRegions( false );\r\n setShowAssemblies( false );\r\n setShowPastors( false );\r\n setShowJustice( false );\r\n setShowRegSecretary( false );\r\n setShowTreasurers( false );\r\n\r\n switch ( name ) {\r\n case 'Admin': setShowAdmin( true ); break;\r\n case 'Management': setShowManagement( true ); break;\r\n case 'Provinces': setShowProvinces( true ); break;\r\n case 'Regions': setShowRegions( true ); break;\r\n case 'Assemblies': setShowAssemblies( true ); break;\r\n case 'Pastors': setShowPastors( true ); break;\r\n case 'Justice': setShowJustice( true ); break;\r\n case 'RegSecretary': setShowRegSecretary( true ); break;\r\n case 'Treasurers': setShowTreasurers( true ); break;\r\n }\r\n }\r\n\r\n function testConfReception(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK, Ut.RoleT.CONF_RECEPTION_SCANNING, Ut.RoleT.CONF_GOODYBAG_SCANNING, Ut.RoleT.CONF_DISPLAY_STATS );\r\n }\r\n\r\n function onTapConfReception(): void\r\n {\r\n nav.push( 'MenuConfReception' );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtButton from '../first/ftButton';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageMenuConfRegister\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageMenuConfRegister( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy ) return ftBusy( { popup: popup } );\r\n\r\n const stl: any = { txtClr: '#ffffff' };\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function testRegisList(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK );\r\n }\r\n \r\n function onTapRegisList(): void\r\n {\r\n nav.push( 'AttendeeSearch' );\r\n }\r\n \r\n function testRegisCards(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK );\r\n }\r\n \r\n function onTapRegisCards(): void\r\n {\r\n nav.push( 'ConfregisCards' );\r\n }\r\n \r\n function testRegisCardsExtra(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK );\r\n }\r\n \r\n function onTapRegisCardsExtra(): void\r\n {\r\n nav.push( 'ConfregisCardsExtra' );\r\n }\r\n \r\n function testAttendeeStats(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK, Ut.RoleT.CONF_DISPLAY_STATS );\r\n }\r\n \r\n function onTapAttendeeStats(): void\r\n {\r\n nav.push( 'ConfregisStatistics' );\r\n }\r\n \r\n function testReportQuorumDetail(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK );\r\n }\r\n \r\n function onTapReportQuorumDetail(): void\r\n {\r\n nav.push( 'ReportConfregisQuorumDetail' );\r\n }\r\n \r\n function testReportQuorumTotals(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK );\r\n }\r\n \r\n function onTapReportQuorumTotals(): void\r\n {\r\n nav.push( 'ReportConfregisQuorumTotal' );\r\n }\r\n \r\n function testReportSummaryTotalAtt(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK );\r\n }\r\n \r\n function onTapReportSummaryTotalAtt(): void\r\n {\r\n nav.push( 'ReportConfregisSummaryTotal' );\r\n }\r\n \r\n function testReportAttList(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK );\r\n }\r\n \r\n function onTapReportAttList(): void\r\n {\r\n nav.push( 'ReportConfregisAttendees' );\r\n }\r\n \r\n function testReportAttbyRegion(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK );\r\n }\r\n \r\n function onTapReportAttbyRegion(): void\r\n {\r\n nav.push( 'ReportConfregisByRegion' );\r\n }\r\n \r\n function testReportAttbyType(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK );\r\n }\r\n \r\n function onTapReportAttbyType(): void\r\n {\r\n nav.push( 'ReportConfregisByType' );\r\n }\r\n \r\n function testReportAttbyRegionNoID(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK );\r\n }\r\n \r\n function onTapReportAttbyRegionNoID(): void\r\n {\r\n nav.push( 'ReportConfregisByRegionNoId' );\r\n }\r\n \r\n function testReportAttSummary(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK );\r\n }\r\n \r\n function onTapReportAttSummary(): void\r\n {\r\n nav.push( 'ReportConfregisSummary' );\r\n }\r\n \r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtButton from '../first/ftButton';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageMenuConfReception\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageMenuConfReception( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy ) return ftBusy( { popup: popup } );\r\n\r\n const stl: any = { txtClr: '#ffffff' };\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n {/* nav.push( 'ReportConfregisSummaryTotal' )} * / /> */}\r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function testRegisList(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.CONF_RECEPTION_SCANNING, Ut.RoleT.ADMIN_CLERK );\r\n }\r\n\r\n function onTapRegisList(): void\r\n {\r\n nav.push( 'AttendeeSearch' );\r\n }\r\n\r\n function testScanAttendees(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.CONF_RECEPTION_SCANNING, Ut.RoleT.ADMIN_CLERK );\r\n }\r\n\r\n function onTapScanAttendees(): void\r\n {\r\n nav.push( 'ConfrecepScan' );\r\n }\r\n\r\n function testScanGoody(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.CONF_GOODYBAG_SCANNING, Ut.RoleT.ADMIN_CLERK );\r\n }\r\n\r\n function onTapScanGoody(): void\r\n {\r\n nav.push( 'ConfrecepGoodyScan' );\r\n }\r\n\r\n function testManageAtts(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK );\r\n }\r\n\r\n function onTapManageAtts(): void\r\n {\r\n nav.push( 'ConfregisStatistics' );\r\n } \r\n\r\n function testRecepStats(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK, Ut.RoleT.CONF_DISPLAY_STATS );\r\n }\r\n\r\n function onTapRecepStats(): void\r\n {\r\n nav.push( 'ConfrecepStatistics' );\r\n } \r\n\r\n function testRecepSumReport(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK, Ut.RoleT.CONF_SUPERVISOR );\r\n }\r\n\r\n function onTapRecepSumReport(): void\r\n {\r\n nav.push( 'ReportConfrecepSummary' );\r\n }\r\n\r\n function testRecepDetailReport(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK, Ut.RoleT.CONF_SUPERVISOR );\r\n }\r\n\r\n function onTapRecepDetailReport(): void\r\n {\r\n nav.push( 'ReportConfrecepDetail' );\r\n }\r\n\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtButton from '../first/ftButton';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n\r\n//********************************************************************\r\n// PageMenuVoting\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageMenuVoting( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy ) return ftBusy( { popup: popup } );\r\n\r\n const stl: any = { txtClr: '#ffffff' };\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/*\r\n \r\n \r\n \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function testManagerPrc(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.VOTING_MANAGER );\r\n }\r\n\r\n function onTapManagerPrc(): void\r\n {\r\n nav.push( 'VoteProcessManager' );\r\n }\r\n\r\n function testCandidatesSearch(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.VOTING_MANAGER );\r\n }\r\n\r\n function onTapCandidatesSearch(): void\r\n {\r\n nav.push( 'VoteCandidateSearch' );\r\n }\r\n\r\n function testCaptureNominations(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.VOTING_CAPTURE_PRIMARY );\r\n }\r\n\r\n function onTapCaptureNominations(): void\r\n {\r\n nav.push( 'VoteCaptureNomin' );\r\n }\r\n\r\n function testCapturePrimary(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.VOTING_CAPTURE_PRIMARY );\r\n }\r\n\r\n function onTapCapturePrimary(): void\r\n {\r\n nav.push( 'VoteApprovalPrimary' );\r\n }\r\n\r\n function testApprovalSecondary(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.VOTING_APPROVAL_SECONDARY );\r\n }\r\n\r\n function onTapApprovalSecondary(): void\r\n {\r\n nav.push( 'VoteApprovalSecondary' );\r\n }\r\n\r\n function testApprovalFinal(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.VOTING_APPROVAL_FINAL );\r\n }\r\n\r\n function onTapApprovalFinal(): void\r\n {\r\n nav.push( 'VoteApprovalFinal' );\r\n }\r\n\r\n function testDisplayVotingStatus(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.ADMIN_CLERK, Ut.RoleT.CONF_DISPLAY_STATS );\r\n }\r\n\r\n function onTapDisplayVotingStatus(): void\r\n {\r\n nav.push( 'VoteDisplayStatus' );\r\n }\r\n\r\n function testDisplayRoundResults(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.VOTING_MANAGER );\r\n }\r\n\r\n function onTapDisplayRoundResults(): void\r\n {\r\n nav.push( 'VoteDisplayResults' );\r\n }\r\n\r\n function testDisplayPositionResults(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.VOTING_MANAGER );\r\n }\r\n\r\n function onTapDisplayPositionResults(): void\r\n {\r\n nav.push( 'VotePositionResults' );\r\n }\r\n\r\n function testVotingResultsList(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.VOTING_MANAGER );\r\n }\r\n\r\n function onTapVotingResultsList(): void\r\n {\r\n nav.push( 'VoteResultsSearch' );\r\n }\r\n\r\n function testReportVotesList(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.VOTING_MANAGER );\r\n }\r\n\r\n function onTapReportVotesList(): void\r\n {\r\n nav.push( 'ReportVotesList' );\r\n }\r\n\r\n function testReportVotingResults(): boolean\r\n {\r\n return Ut.roleTest( Ut.RoleT.VOTING_MANAGER );\r\n }\r\n\r\n function onTapReportVotingResults(): void\r\n {\r\n nav.push( 'ReportVoteResults' );\r\n }\r\n\r\n}\r\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { useState, useEffect } from 'react';\nimport { ScrollView } from 'react-native';\nimport { DataTable, withTheme, MD3Theme, Provider as PaperProvider } from 'react-native-paper';\nimport Ionicons from '@expo/vector-icons/Ionicons';\nimport AntDesign from '@expo/vector-icons/AntDesign';\nimport FontAwesome from '@expo/vector-icons/FontAwesome';\nimport MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';\nimport Feather from '@expo/vector-icons/Feather';\nimport Ft from './ft';\nimport { FtConProps, FtDataGridCol } from './ftTypes';\nimport FtCon from './ftCon';\n\ninterface FtDataGridProps extends FtConProps {\n data: any[];\n cols: FtDataGridCol[];\n pgsize?: number;\n pgstart?: number;\n txtClr?: string;\n hdBkg?: string;\n itBkg0?: string;\n itBkg1?: string;\n theme: MD3Theme;\n}\n\n//********************************************************************\n// FtDataGrid : react-native-paper DataTable wrapped in FtCon\n// DATAGRID-PROP DATA_TYPE DESCRIPTION VALUES\n// data array[obj] Data to display in grid -\n// cols array[obj] Column definitions, see below -\n// pgsize int maximum rows per page 50\n// pgstart int page to start at, default 0 -\n// txtClr string color of all text in grid -\n// hdBkg string heading background color, default '#cccccc' -\n// itBkg0 string alternating items background color, default '#ffffff' -\n// itBkg1 string alternating items background color, default '#eeeeee' -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// rat self number width to height ratio, ratio = width/height - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// cols: [ {\n// fld : , // field property in data[n]\n// hd : , // column heading\n// flex : , // ratio width of column relative to other columns\n// sort : , // allow sorting in this column: Y/N, default 'Y'\n// type : , // column data type, see below\n// fmt : , // formatting by type, see below\n// act : , // action handler code, see below\n// lkp : , // lookup data, format [ { id: , name: }, .. ]\n// clr : , // icon color to use (not text)\n// ? w : , // fixed width in pixels\n// ? x : , // flex width\n// }, .. ]\n//\n// column data types: type & fmt:\n// TYPE FMT DESCRIPTION\n// int - integer\n// dbl float/double floating point number scale, eg ..fmt:2.. shows 2 decimal digits\n// dec decimal.js object scale, eg ..fmt:2.. shows 2 decimal digits\n// bool - boolean, display read-only checkbox using icons in color\n// act 'icon' action handler, see below\n// dtm datetime, display format, eg. 'YYYY-MM-DD HH:mm:ss', see https://momentjs.com/docs/#/displaying/\n// date date, display format, eg. 'YYYY-MM-DD', see https://momentjs.com/docs/#/displaying/\n// time time, display format, eg. 'HH:mm:ss', see https://momentjs.com/docs/#/displaying/\n// txt - text\n// lkp - text via int\n//\n// action handlers:\n// .. type='act' fmt='my-icon' act={({pageIdx, lineIdx, dataId, dataItem, columnIdx}) => .. } ..\n// .. type='act' fmt='my-icon' act={ { dataId }: FtDgAction => .. }\n// - icon names: https://oblador.github.io/react-native-vector-icons/\n// - ad-* : AntDesign\n// - fa-* : FontAwesome\n// - ii-* : Ionicons\n// - mc-* : MaterialCommunityIcons\n// - ft-* : Feather\n//\n// Notes:\n// - if height is falsy, the datagrid height will expand to its full height, useful when browser page does the scrolling anyway\n//\n// Example:\n// \n//\nfunction FtDataGrid(\n {\n data, cols, pgsize, pgstart,\n txtClr, hdBkg, itBkg0, itBkg1,\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h, rat,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni, en,\n theme,\n }: FtDataGridProps\n): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n\n //- hooks: states -----\n const [sortColIdx, setSortColIdx ] = useState( null as number|null ); // sort column index, null= not sorted on any field\n const [sortDir , setSortDir ] = useState('N'); // A=Asc|D=Desc|N=None\n const [pageIdx , setPageIdx ] = useState(pgstart ?? 0); // 0-based page index\n const [lkpData , setLkpData ] = useState( {} as any ); // lookups data after conversion: { : { : , .. }, ..}\n\n //- hooks: effects -----\n useEffect( composeLookupData, [] );\n\n //====================================================================\n // render\n\n //- prep field & container props -----\n const conProps: any = { // container properties\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h, rat,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni, en,\n };\n\n //- revise paging -----\n const pageSize: number = pgsize != undefined ? pgsize : 50;\n const pageCount: number = Math.ceil( data.length / pageSize );\n const pageLabel: string = data.length > 0 ? `Results: ${data.length} | Page ${pageIdx+1} of ${pageCount}` : 'No Data';\n\n //- compose layout -----\n const headProps = composeHeaders();\n const pageData = sortAndPageData();\n\n //- compose theme -----\n const tblTheme: MD3Theme = { ...theme };\n if ( txtClr != undefined ) tblTheme.colors.primary = txtClr;\n\n //- compose row props -----\n const rowBkg0 = itBkg0 ?? '#ffffff';\n const rowBkg1 = itBkg1 ?? '#eeeeee';\n\n //- render -----\n return (\n \n \n \n setPageIdx(page)}\n label={pageLabel}\n numberOfItemsPerPage={pageSize}\n showFastPaginationControls\n accessibilityLabel='Rows per page'\n />\n\n \n {headProps.map( i => ({i.hd}))}\n \n\n {(!!h) ? (\n \n {pageData.map( (item, idx) => (\n \n {renderCells(item, idx)}\n \n ))}\n \n ) : (\n pageData.map( (item, idx) => (\n \n {renderCells(item, idx)}\n \n ))\n )}\n\n setPageIdx(page)}\n label={pageLabel}\n numberOfItemsPerPage={pageSize}\n showFastPaginationControls\n accessibilityLabel='Rows per page'\n />\n \n \n \n );\n\n //====================================================================\n // event handlers / internal api\n\n /// Sort and paginate data for display\n ///\n /// sortDir: A=Asc|D=Desc|N=None\n function sortAndPageData(): any[]\n {\n //- check data unsorted -----\n if ( sortColIdx === null || sortDir == 'N' )\n return Ft.lq( data ).skip( pageIdx * pageSize ).take( pageSize ).toArray();\n\n //- prep orderBy handler -----\n const sortField: string = cols[sortColIdx].fld ?? '';\n const sortLookup: any = cols[sortColIdx].type == 'lkp' ? lkpData[sortColIdx] : null;\n\n let orderHandler = ( rec: any ): string => rec[sortField];\n switch ( cols[sortColIdx].type ) {\n case 'dec': orderHandler = ( rec: any ): string => rec[sortField].toNumber(); break;\n case 'dtm': orderHandler = ( rec: any ): string => Ft.dtmFmt( rec[sortField], 'YYYY-MM-DD HH:mm:ss' ); break;\n case 'date': orderHandler = ( rec: any ): string => Ft.dtmFmt( rec[sortField], 'YYYY-MM-DD' ); break;\n case 'time': orderHandler = ( rec: any ): string => Ft.dtmFmt( rec[sortField], 'HH:mm:ss' ); break;\n case 'lkp': orderHandler = ( rec: any ): string => sortLookup[rec[sortField]] ?? ''; break;\n case 'bool':\n case 'int':\n case 'dbl':\n case 'txt':\n case 'act':\n default:\n orderHandler = ( rec: any ): string => rec[sortField];\n }\n\n //- sort data -----\n const pageData: any[] = sortDir == 'A'\n ? Ft.lq( data ).orderBy( orderHandler ).skip( pageIdx * pageSize ).take( pageSize ).toArray() // ascending\n : Ft.lq( data ).orderByDescending( orderHandler ).skip( pageIdx * pageSize ).take( pageSize ).toArray(); // descending\n\n return pageData;\n }\n\n /// Scan through columns and convert lookup data formats\n /// For each lkp column in cols:\n /// In format: [ { id: , name: }, .. ]\n /// Out format: { : , .. }\n function composeLookupData(): void\n {\n const tmpData: any = {};\n for ( let i = 0; i < cols.length; i++ ) {\n const col = cols[i];\n if ( !Ft.isDef( col?.type ) || col.type != 'lkp' ) continue; // skip non-lookup columns\n tmpData[i] = Ft.objArrToIdVal( col.lkp ?? [], 'id', 'name' ); // convert format for faster lookups\n }\n setLkpData( tmpData );\n }\n\n /// Render cell by type: int\n ///\n /// int [itemData] Data item to render\n /// object [col] Column specs\n /// Component [return] Rendered component\n function renderCells_int( itemData: any, col: any, colI: number ): JSX.Element\n {\n const stl: any = {\n flex: col?.flex ?? 1,\n paddingRight: 3\n };\n return ({itemData[col.fld]});\n }\n\n /// Render cell by type: dbl/dec\n ///\n /// double/decimal [itemData] Data item to render\n /// object [col] Column specs\n /// Component [return] Rendered component\n function renderCells_dblDec( itemData: any, col: any, colI: number ): JSX.Element\n {\n const scale: number = Ft.isDef( col.fmt ) ? col.fmt : 2;\n const stl: any = {\n flex: col?.flex ?? 1,\n paddingRight: 3\n };\n return ({itemData[col.fld].toFixed( scale )});\n }\n\n /// Render cell by type: bool\n ///\n /// double/decimal [itemData] Data item to render\n /// object [col] Column specs\n /// Component [return] Rendered component\n function renderCells_bool( itemData: any, col: any, colI: number ): JSX.Element\n {\n const iconClr: string = Ft.isDef( col.clr ) ? col.clr : ( tblTheme.colors as any ).text;\n return (\n \n );\n }\n\n /// Render cell by type: datetime\n ///\n /// int [itemData] Data item to render\n /// object [col] Column specs\n /// Component [return] Rendered component\n function renderCells_dtm( itemData: any, col: any, colI: number ): JSX.Element\n {\n const celProps: any = { style: {\n flex: col?.flex ?? 1,\n paddingLeft: 3\n } };\n if ( Ft.isDef( col.clr ) ) celProps.style.color = col.clr;\n const dtmFmt: string = Ft.isDef( col.fmt ) ? col.fmt : 'YYYY/MM/DD HH:mm';\n return ({Ft.dtmFmt(itemData[col.fld],dtmFmt)});\n }\n\n /// Render cell by type: date\n ///\n /// int [itemData] Data item to render\n /// object [col] Column specs\n /// Component [return] Rendered component\n function renderCells_date( itemData: any, col: any, colI: number ): JSX.Element\n {\n const celProps: any = { style: {\n flex: col?.flex ?? 1,\n paddingLeft: 3\n } };\n if ( Ft.isDef( col.clr ) ) celProps.style.color = col.clr;\n const dtmFmt: string = Ft.isDef( col.fmt ) ? col.fmt : 'YYYY/MM/DD';\n return ({Ft.dtmFmt(itemData[col.fld],dtmFmt)});\n }\n\n /// Render cell by type: time\n ///\n /// int [itemData] Data item to render\n /// object [col] Column specs\n /// Component [return] Rendered component\n function renderCells_time( itemData: any, col: any, colI: number ): JSX.Element\n {\n const celProps: any = { style: {\n flex: col?.flex ?? 1,\n paddingLeft: 3\n } };\n if ( Ft.isDef( col.clr ) ) celProps.style.color = col.clr;\n const dtmFmt: string = Ft.isDef( col.fmt ) ? col.fmt : 'HH:mm';\n return ({Ft.dtmFmt(itemData[col.fld],dtmFmt)});\n }\n\n /// Render cell by type: text\n ///\n /// int [itemData] Data item to render\n /// object [col] Column specs\n /// Component [return] Rendered component\n function renderCells_text( itemData: any, col: any, colI: number ): JSX.Element\n {\n const stl: any = {\n flex: col?.flex ?? 1,\n paddingLeft: 3\n };\n return ({itemData[col.fld]});\n }\n\n /// Render cell by type: lookup\n ///\n /// int [itemData] Data item to render\n /// object [col] Column specs\n /// Component [return] Rendered component\n function renderCells_lookup( itemData: any, col: any, colI: number ): JSX.Element\n {\n const stl: any = {\n flex: col?.flex ?? 1,\n paddingLeft: 3\n };\n if ( !Ft.isDef( lkpData[colI] ) ) return (<>);\n return ({lkpData[colI][itemData[col.fld]]});\n }\n\n /// Render cell by type: action\n ///\n /// double/decimal [itemData] Data item to render\n /// object [col] Column specs\n /// int [idx] Index on page\n /// int [colI] column idx\n /// Component [return] Rendered component\n function renderCells_action( itemData: any, col: any, idx: number, colI: number ): JSX.Element\n {\n const iconClr: string = Ft.isDef( col.clr ) ? col.clr : tblTheme.colors.primary;\n const icon: any = Ft.isDef( col.fmt ) ? col.fmt : 'mc-pencil';\n const celProps: any = {};\n\n // pageIdx : 0-based page index/number\n // lineIdx : line index on page\n // dataId : record id\n // dataItem : record\n // columnIdx : column index\n function actionHandler(): void\n {\n col.act({\n pageIdx,\n lineIdx: idx,\n dataId: itemData.id,\n dataItem: itemData,\n columnIdx: colI\n });\n }\n\n let comp: JSX.Element = (<>);\n switch ( icon.substring( 0, 3 ) ) {\n case 'ad-': comp = (); break;\n case 'fa-': comp = (); break;\n case 'ii-': comp = (); break;\n case 'mc-': comp = (); break;\n case 'ft-': comp = (); break;\n }\n\n if ( Ft.isDef( col.act ) ) celProps.onPress = actionHandler;\n return ({comp});\n }\n\n /// Render all cells for given row item/idx\n ///\n /// object [item] Respective item in data-array\n /// int [idx] Row index on page, 0 = first row on page\n function renderCells( item: any, idx: number ): JSX.Element\n {\n const rowComps: JSX.Element[] = []; // Rendered components for whole row\n for ( let colI = 0; colI < cols.length; colI++ ) { // loop columns to render each\n const col = cols[colI];\n switch ( col.type ) {\n case 'int': rowComps.push( renderCells_int( item, col, colI ) ); break;\n case 'dbl':\n case 'dec':\n rowComps.push( renderCells_dblDec( item, col, colI ) ); break;\n case 'bool': rowComps.push( renderCells_bool( item, col, colI ) ); break;\n case 'dtm': rowComps.push( renderCells_dtm( item, col, colI ) ); break;\n case 'date': rowComps.push( renderCells_date( item, col, colI ) ); break;\n case 'time': rowComps.push( renderCells_time( item, col, colI ) ); break;\n case 'txt': rowComps.push( renderCells_text( item, col, colI ) ); break;\n case 'lkp': rowComps.push( renderCells_lookup( item, col, colI ) ); break;\n case 'act': rowComps.push( renderCells_action( item, col, idx, colI ) ); break;\n }\n }\n return (<>{rowComps.map( item => item )}); // Frozen\n }\n\n /// Get column alignment based on data-type\n ///\n /// string [dataType] Data-type to evaluate\n /// string [return] Alignment: L/C/R\n function colAlign( dataType: string ): string\n {\n switch ( dataType.toLowerCase() ) {\n case 'int':\n case 'dbl':\n case 'dec':\n return 'R';\n case 'bool':\n case 'act':\n case 'dtm':\n case 'date':\n case 'time':\n case 'txt':\n case 'lkp':\n default:\n return 'L';\n }\n }\n\n /// Compose header component properties\n ///\n /// array [cols] Column specifications\n function composeHeaders(): any[]\n {\n const heads: any[] = [];\n\n for ( let i = 0; i < cols.length; i++ ) {\n const col: any = cols[i];\n const head: any = {\n hd: col.hd,\n props: {\n key: i,\n style: { flex: col?.flex ?? 1 }\n }\n };\n //- alignment -----\n if ( colAlign( col.type ) == 'R' ) {\n head.props.numeric = true;\n head.props.style.paddingRight = 3;\n } else {\n head.props.style.paddingLeft = 3;\n }\n //- sorting -----\n if ( sortColIdx !== null && sortColIdx === i ) { // A=Asc|D=Desc|N=None\n if ( sortDir == 'A' ) head.props.sortDirection='ascending';\n else if ( sortDir == 'D' ) head.props.sortDirection='descending';\n }\n if ( !Ft.isDef( col.sort ) || col.sort == 'Y' ) {\n head.props.onPress = (): void => {\n //Ft.dirs(\"~~ sort: col.fld, sortColIdx, sortDir ~~\", col.fld, sortColIdx, sortDir ); ////\n if ( sortColIdx != i ) {\n setSortColIdx( i );\n setSortDir( 'A' );\n } else {\n if ( sortDir == 'A' ) setSortDir( 'D' );\n else if ( sortDir == 'D' ) setSortDir( 'N' );\n else setSortDir( 'A' );\n }\n };\n }\n heads.push(head);\n }\n return heads;\n }\n}\n\nFtDataGrid.ftcompname = \"FtDataGrid\";\nexport default withTheme(FtDataGrid); // let FtDataGrid receive current theme as prop\n","/// FIRST: Framework Insuring Rapid Systems Typing\r\n///\r\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\r\nimport React from 'react';\r\nimport { useWindowDimensions, View } from 'react-native';\r\nimport { Button, Text, Dialog, Portal } from 'react-native-paper';\r\nimport Ft from './ft';\r\n\r\n//********************************************************************\r\n// FtPopupOptions : react-native-paper dialog for popup options/confirmations\r\n//\r\n// PROP DATA_TYPE DESCRIPTION VALUES\r\n// open state-getter Open state getter from useState -\r\n// setOpen state-setter Open state setter from useState -\r\n// hd string Heading text -\r\n// msg string Message body text -\r\n// btnA/B/C/D/E string Buttions text -\r\n// onA/B/C/D/E callback Callback for each option after popup closes -\r\n// clrA/B/C/D/E string Button background color '#'\r\n// txtClrA/B/C/D/E string Button text color '#'\r\n//\r\n// Example:\r\n// { ...doSomething...}}\r\n// btnB=\"Option B\" onB={() => { ...doSomething...}}\r\n// ..\r\n// />\r\nexport default function FtPopupOptions(\r\n {\r\n open, setOpen, hd, msg,\r\n btnA, btnB, btnC, btnD, btnE,\r\n onA, onB, onC, onD, onE,\r\n clrA, clrB, clrC, clrD, clrE,\r\n txtClrA, txtClrB, txtClrC, txtClrD, txtClrE\r\n }: {\r\n open?: boolean;\r\n setOpen?: ( state: boolean ) => void;\r\n hd?: string;\r\n msg?: string;\r\n btnA?: string;\r\n btnB?: string;\r\n btnC?: string;\r\n btnD?: string;\r\n btnE?: string;\r\n onA?: () => void;\r\n onB?: () => void;\r\n onC?: () => void;\r\n onD?: () => void;\r\n onE?: () => void;\r\n clrA?: string;\r\n clrB?: string;\r\n clrC?: string;\r\n clrD?: string;\r\n clrE?: string;\r\n txtClrA?: string;\r\n txtClrB?: string;\r\n txtClrC?: string;\r\n txtClrD?: string;\r\n txtClrE?: string;\r\n }\r\n): JSX.Element\r\n{\r\n //- hooks, no conditions here -----\r\n const winDim = useWindowDimensions();\r\n\r\n const propsOptA: any = onA != undefined ? { onPress: () => { if ( setOpen != undefined ) setOpen(false); if ( !Ft.e( onA ) ) onA(); } } : {};\r\n const propsOptB: any = onB != undefined ? { onPress: () => { if ( setOpen != undefined ) setOpen(false); if ( !Ft.e( onB ) ) onB(); } } : {};\r\n const propsOptC: any = onC != undefined ? { onPress: () => { if ( setOpen != undefined ) setOpen(false); if ( !Ft.e( onC ) ) onC(); } } : {};\r\n const propsOptD: any = onD != undefined ? { onPress: () => { if ( setOpen != undefined ) setOpen(false); if ( !Ft.e( onD ) ) onD(); } } : {};\r\n const propsOptE: any = onE != undefined ? { onPress: () => { if ( setOpen != undefined ) setOpen(false); if ( !Ft.e( onE ) ) onE(); } } : {};\r\n\r\n const softBlue = '#1976d2';\r\n propsOptA.buttonColor = !Ft.e( clrA ) ? clrA : softBlue;\r\n propsOptB.buttonColor = !Ft.e( clrB ) ? clrB : softBlue;\r\n propsOptC.buttonColor = !Ft.e( clrC ) ? clrC : softBlue;\r\n propsOptD.buttonColor = !Ft.e( clrD ) ? clrD : softBlue;\r\n propsOptE.buttonColor = !Ft.e( clrE ) ? clrE : softBlue;\r\n\r\n propsOptA.textColor = !Ft.e( txtClrA ) ? txtClrA : '#ffffff';\r\n propsOptB.textColor = !Ft.e( txtClrB ) ? txtClrB : '#ffffff';\r\n propsOptC.textColor = !Ft.e( txtClrC ) ? txtClrC : '#ffffff';\r\n propsOptD.textColor = !Ft.e( txtClrD ) ? txtClrD : '#ffffff';\r\n propsOptE.textColor = !Ft.e( txtClrE ) ? txtClrE : '#ffffff';\r\n\r\n const dlgStyle: any = {\r\n width: winDim.width < 850 ? winDim.width - 50 : 800,\r\n alignSelf: 'center',\r\n };\r\n\r\n return (<>\r\n \r\n {} } style={dlgStyle}>\r\n {hd}\r\n \r\n {msg}\r\n \r\n \r\n { !Ft.e( btnA ) ? () : (<>)}\r\n { !Ft.e( btnB ) ? () : (<>)}\r\n { !Ft.e( btnC ) ? () : (<>)}\r\n { !Ft.e( btnD ) ? () : (<>)}\r\n { !Ft.e( btnE ) ? () : (<>)}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nFtPopupOptions.ftcompname = \"FtPopupOptions\";\r\n\r\n/// Convenience FtPopupOptions creator\r\n///\r\n/// setter [setPopup] Popup placeholder setter, so it can close by itself\r\n/// string [hd] Heading text\r\n/// string [msg] Message body text\r\n/// callback [onClose] Callback for after popup closes\r\n/// string [btn] Buttion text\r\n/// string [clrA/B/C/D/E] Button background color, '#'\r\n/// string [txtClrA/B/C/D/E] Button text color, '#'\r\n///\r\n/// Usage:\r\n/// ftPopupOptions(\r\n/// setPopup, \"A message\", \"This is a popup message\",\r\n/// () => Ft.dirs( \"~~~ popup onclose ~~~\" ), \"Aye-Captain\"\r\n/// )} />\r\n/// {popup}\r\nexport function ftPopupOptions(\r\n setPopup: ( content: JSX.Element ) => void,\r\n hd?: string,\r\n msg?: string,\r\n {\r\n btnA, btnB, btnC, btnD, btnE,\r\n onA, onB, onC, onD, onE,\r\n clrA, clrB, clrC, clrD, clrE,\r\n txtClrA, txtClrB, txtClrC, txtClrD, txtClrE\r\n }: {\r\n btnA?: string;\r\n btnB?: string;\r\n btnC?: string;\r\n btnD?: string;\r\n btnE?: string;\r\n onA?: () => void;\r\n onB?: () => void;\r\n onC?: () => void;\r\n onD?: () => void;\r\n onE?: () => void;\r\n clrA?: string;\r\n clrB?: string;\r\n clrC?: string;\r\n clrD?: string;\r\n clrE?: string;\r\n txtClrA?: string;\r\n txtClrB?: string;\r\n txtClrC?: string;\r\n txtClrD?: string;\r\n txtClrE?: string;\r\n } = {}\r\n): void\r\n{\r\n Ft.webScrollTop();\r\n setPopup( (\r\n {}}\r\n hd={hd}\r\n msg={msg}\r\n btnA={btnA}\r\n btnB={btnB}\r\n btnC={btnC}\r\n btnD={btnD}\r\n btnE={btnE}\r\n onA={ (): void => { setPopup( <> ); if ( onA != undefined ) onA(); } }\r\n onB={ (): void => { setPopup( <> ); if ( onB != undefined ) onB(); } }\r\n onC={ (): void => { setPopup( <> ); if ( onC != undefined ) onC(); } }\r\n onD={ (): void => { setPopup( <> ); if ( onD != undefined ) onD(); } }\r\n onE={ (): void => { setPopup( <> ); if ( onE != undefined ) onE(); } }\r\n clrA={clrA}\r\n clrB={clrB}\r\n clrC={clrC}\r\n clrD={clrD}\r\n clrE={clrE}\r\n txtClrA={txtClrA}\r\n txtClrB={txtClrB}\r\n txtClrC={txtClrC}\r\n txtClrD={txtClrD}\r\n txtClrE={txtClrE}\r\n />\r\n ) );\r\n}\r\n\r\n/// Convenience FtPopupOptions creator for OK/CANCEL confirmation\r\n///\r\n/// setter [setPopup] Popup placeholder setter, so it can close by itself\r\n/// string [hd] Heading text\r\n/// string [msg] Message body text\r\n/// string [btnA] Option A buttion text, default 'OK'\r\n/// string [btnB] Option B buttion text, default 'CANCEL'\r\n/// callback [onA] Option A callback for after popup closes\r\n/// callback [onB] Option B callback for after popup closes\r\n/// string [clrA/B] Button background color, '#'\r\n/// string [txtClrA/B] Button text color, '#'\r\n///\r\n/// Usage:\r\n/// ftPopupConfirm(\r\n/// setPopup, \"Confirmation\", \"Are you sure?\", {\r\n/// onA: () => ...doOnOk...,\r\n/// onB: () => ...doOnCancel...\r\n/// })} />\r\n/// {popup}\r\nexport function ftPopupConfirm(\r\n setPopup: ( content: JSX.Element ) => void, \r\n hd?: string, \r\n msg?: string, \r\n { \r\n btnA, btnB, onA, onB,\r\n clrA, clrB,\r\n txtClrA, txtClrB \r\n }:\r\n {\r\n btnA?: string;\r\n btnB?: string;\r\n onA?: () => void;\r\n onB?: () => void;\r\n clrA?: string;\r\n clrB?: string;\r\n txtClrA?: string;\r\n txtClrB?: string;\r\n } = {}\r\n): void\r\n{\r\n Ft.webScrollTop();\r\n setPopup( (\r\n {} }\r\n hd={hd}\r\n msg={msg}\r\n btnA={ !Ft.e( btnA ) ? btnA : 'OK' }\r\n btnB={ !Ft.e( btnB ) ? btnB : 'CANCEL' }\r\n onA={ (): void => { setPopup( <> ); if ( onA != undefined ) onA(); } }\r\n onB={ (): void => { setPopup( <> ); if ( onB != undefined ) onB(); } }\r\n clrA={clrA}\r\n clrB={clrB}\r\n txtClrA={txtClrA}\r\n txtClrB={txtClrB}\r\n />\r\n ) );\r\n}\r\n\r\n/// Convenience FtPopupOptions creator for Error RETRY/CANCEL confirmation\r\n///\r\n/// setter [setPopup] Popup placeholder setter, so it can close by itself\r\n/// string [hd] Heading text\r\n/// string [msg] Message body text\r\n/// string [btnA] Option A buttion text, default 'RETRY'\r\n/// string [btnB] Option B buttion text, default 'CANCEL'\r\n/// callback [onA] Option A callback for after popup closes\r\n/// callback [onB] Option B callback for after popup closes\r\n/// string [clrA/B] Button background color, '#'\r\n/// string [txtClrA/B] Button text color, '#'\r\n///\r\n/// Usage:\r\n/// ftPopupError(\r\n/// setPopup, \"Confirmation\", \"Are you sure?\", {\r\n/// onA: () => ...doOnRetry...,\r\n/// onB: () => ...doOnCancel...\r\n/// })} />\r\n/// {popup}\r\nexport function ftPopupError(\r\n setPopup: ( content: JSX.Element ) => void, \r\n hd?: string, \r\n msg?: string, \r\n { \r\n btnA, btnB, onA, onB,\r\n clrA, clrB,\r\n txtClrA, txtClrB,\r\n setBusy\r\n }:\r\n {\r\n btnA?: string;\r\n btnB?: string;\r\n onA?: () => void;\r\n onB?: () => void;\r\n clrA?: string;\r\n clrB?: string;\r\n txtClrA?: string;\r\n txtClrB?: string;\r\n setBusy?: ( content: boolean ) => void;\r\n } = {}\r\n): void\r\n{\r\n Ft.webScrollTop();\r\n setPopup( (\r\n {} }\r\n hd={hd}\r\n msg={msg}\r\n btnA={ !Ft.e( btnA ) ? btnA : 'RETRY' }\r\n btnB={ !Ft.e( btnB ) ? btnB : 'CANCEL' }\r\n onA={ (): void => { \r\n setPopup( <> ); \r\n if ( setBusy != undefined ) setBusy( false );\r\n if ( onA != undefined ) onA(); } \r\n }\r\n onB={ (): void => { \r\n setPopup( <> ); \r\n if ( setBusy != undefined ) setBusy( false );\r\n if ( onB != undefined ) onB(); } \r\n }\r\n clrA={clrA}\r\n clrB={clrB}\r\n txtClrA={txtClrA}\r\n txtClrB={txtClrB}\r\n />\r\n ) );\r\n}\r\n\r\n","import React, { useState } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtButton from '../first/ftButton';\nimport FtDataGrid from '../first/ftDataGrid';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\nimport Th from '../general/th';\n\nimport Userz from '../models/userz';\n\n//********************************************************************\n// PageUserSearch\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PageUserSearch( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n \n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlUserz , setMdlUserz ] = useState( new Userz() );\n const [ lstUserz , setLstUserz ] = useState( [] );\n\n //- hooks: effect/startup -----\n // useEffect( onLoad, [] );\n\n //====================================================================\n // render\n \n if ( busy ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n\n );\n\n //====================================================================\n // event handlers\n\n function onSearch(): void\n {\n setBusy( true );\n setLstUserz( [] );\n FtRapi.callList( 'userzSearch', {\n urlParms: {\n prm_disp_name : mdlUserz.disp_name,\n prm_email : mdlUserz.email,\n },\n success: ( result, data ) => setLstUserz( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n\n function onTapUserzEdit( { dataId }: FtDgAction ): void\n {\n nav.push( 'UserEdit', { userId: dataId } );\n }\n\n function onTapUserzDelete( { dataId }: FtDgAction ): void\n {\n ftPopupConfirm( setPopup, 'Confirmation', \"Are you sure you want to delete this record?\", {\n btnA: 'Yes', onA: () => {\n setBusy( true );\n setLstUserz( [] );\n FtRapi.callDelete( 'userzDelete', dataId, {\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { onClose: onSearch } ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n },\n btnB: 'No', onB: () => {}\n });\n }\n\n function onClickNewUser(): void\n {\n nav.push( 'UserEdit', { userId: 0 } );\n }\n\n}\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { useContext } from 'react';\nimport { useWindowDimensions } from 'react-native';\nimport { useField, useFormikContext } from 'formik';\nimport { TextInput } from 'react-native-paper';\nimport { FtConProps, FtFmExtLabelProps } from './ftTypes';\nimport Ft from './ft';\nimport FtCon from './ftCon';\nimport FtText from './ftText';\nimport { FtFormContext } from './ftForm';\n\ninterface FtFmCheckboxFieldProps extends FtConProps, FtFmExtLabelProps {\n name?: string;\n label?: string;\n txtClr?: string;\n labClr?: string;\n txtBkg?: string;\n lineClr?: string;\n iconOn?: string;\n iconOff?: string;\n textOn?: string;\n textOff?: string;\n onChange?: ( newBoolVal: boolean ) => void;\n}\n\n//********************************************************************\n// FtFmCheckboxField : react-native-paper TextField with embedded checkbox wrapped in FtCon\n//\n// CHECKBOX-PROP DATA_TYPE DESCRIPTION VALUES\n// name string field name for data binding, 'md11.field' -\n// label string label text -\n// txtClr string input text color '#'\n// labClr string label text color '#'\n// txtBkg string input background color '#'\n// lineClr string input outline color '#'\n// iconOn string right side icon name on, default 'checkbox-marked' https://materialdesignicons.com\n// iconOff string right side icon name off, default 'checkbox-blank-outline' https://materialdesignicons.com\n// textOn string text to display in textbox when On, default 'Yes' -\n// textOff string text to display in textbox when Off, default 'No' -\n// onChange function event handler: (newBoolVal) => { .. } -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n// labOnTap self handler() on tap/click handler function - -\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// labSs container string size specification within parent container '' see FtCon docs\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// labFlex container int size in main direction in ratio to other children - -\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// labW container int/string width, pixels/percentage - -\n// labH container int/string height, pixels/percentage - -\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\n// labElev container int elevation shadow 0 0 - 10\n// labShow container int/bool Show/Hide true 0/1/false/true\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// labId self string id attribute to be applied to the outermost View for testing - -\n//\n// Notes:\n// - This component supports no validators (eg. ftreq/ftmin/etc)\n//\n// Example:\n// \n//\nexport default function FtFmCheckboxField(\n {\n label, txtClr, labClr, txtBkg, lineClr,\n iconOn, iconOff, textOn, textOff, onChange,\n onTap, onSize,\n id, ss, md, lt,\n flex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni, en = 1,\n //- external label props -----\n ext, labTxtDescr,\n labOnTap, labOnSize,\n labSs, labMd, labLt,\n labFlex, labW, labH,\n labBkgClr, labBkgClrX, labBkgImg, labBkgImgX,\n labFit, labFitX,\n labPad, labPadT, labPadR, labPadB, labPadL,\n labMar, labMarT, labMarR, labMarB, labMarL,\n labBor, labElev, labShow, labAligni,\n labEn, labId,\n //- remaining props -----\n ...props\n }: FtFmCheckboxFieldProps\n): JSX.Element\n{\n //- hooks: no conditions here -----\n const winDim = useWindowDimensions();\n const formCtx = useContext( FtFormContext ) as any;\n const { handleChange, handleBlur } = useFormikContext(); // fetch formik context\n const [ { name, value } ] = useField( props as any );\n\n //- prep field & container props -----\n const ctlMar: string|number = !Ft.e( mar ) ? mar : formCtx.spacing;\n const conProps: any = { // container properties\n onTap, onSize,\n id, ss, md, lt,\n flex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar: ctlMar, marT, marL, marB, marR,\n bor, elev, show, aligni, en,\n };\n\n //- setup some cosmetics -----\n let cosmet: any = { theme: { colors: {} } };\n cosmet.style = { fontSize: Ft.scaleFont( 16 ) };\n if ( !Ft.e( txtClr ) ) cosmet.theme.colors.text = txtClr;\n if ( !Ft.e( labClr) ) cosmet.theme.colors.placeholder = labClr;\n if ( !Ft.e( txtBkg ) ) cosmet.theme.colors.background = txtBkg;\n if ( !Ft.e( lineClr ) ) cosmet.outlineColor = lineClr;\n\n const disabled: boolean = !en;\n const txtIconOn: string = iconOn != undefined ? iconOn : 'checkbox-marked';\n const txtIconOff: string = iconOff != undefined ? iconOff : 'checkbox-blank-outline';\n const txtTextOn: string = textOn != undefined ? textOn : 'Yes';\n const txtTextOff: string = textOff != undefined ? textOff : 'No';\n\n //- setup external label -----\n const isExt: boolean = Ft.parseResp( ext ?? '0', winDim ) == '1';\n const extLabelProps: any = isExt\n ? {\n text: label, txtDescr: labTxtDescr,\n onTap: labOnTap, onSize: labOnSize,\n ss: labSs, md: labMd, lt: labLt,\n flex: labFlex, w: labW, h: labH,\n bkgClr: labBkgClr, bkgClrX: labBkgClrX,\n bkgImg: labBkgImg, bkgImgX: labBkgImgX,\n fit: labFit, fitX: labFitX,\n pad: labPad, padT: labPadT, padR: labPadR, padB: labPadB, padL: labPadL,\n mar: labMar, marT: labMarT, marR: labMarR, marB: labMarB, marL: labMarL,\n bor: labBor, elev: labElev, show: labShow, aligni: labAligni,\n en: labEn, id: labId,\n }\n : {};\n\n //- prop input icon props -----\n const iconPress = (): void => {\n if ( disabled ) return;\n const newValBool = !value;\n formCtx.childChanged();\n if ( onChange != undefined ) onChange( newValBool );\n handleChange( name )( { target: { name: name, value: newValBool } } as any );\n };\n const iconProps: any = {\n icon : value ? txtIconOn : txtIconOff,\n onPress : iconPress,\n };\n\n //- prep input control props -----\n const inputProps: any = {\n ...cosmet,\n name : name,\n onBlur : handleBlur( name ),\n mode : 'outlined',\n label : isExt ? '' : label,\n dense : true,\n disabled : disabled,\n editable : false, // stop keyboard from popping up\n value : value ? txtTextOn : txtTextOff, // value attr is on TextInput, value arg at this point is a bool, must convert to string for TextInput\n right : (),\n onChangeText : ( newValStr: string ): void => {}, // don't allow any changes\n };\n\n //- render control -----\n const control: JSX.Element = (<>\n \n \n \n );\n\n //- render final component -----\n const comp = isExt\n ? (<>{control})\n : control;\n\n return comp;\n}\nFtFmCheckboxField.ftcompname = \"FtFmCheckboxField\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { useState, useContext, useEffect } from 'react';\nimport { useWindowDimensions, LayoutRectangle } from 'react-native';\nimport { useField, useFormikContext } from 'formik';\nimport { TextInput, HelperText, Menu } from 'react-native-paper';\n\nimport Ft from './ft';\nimport { FtConProps, FtFmExtLabelProps } from './ftTypes';\nimport FtCon from './ftCon';\nimport { FtFormContext } from './ftForm';\nimport FtText from './ftText';\n\ninterface FtFmDropdownFieldProps extends FtConProps, FtFmExtLabelProps {\n name?: string;\n label?: string;\n txtClr?: string;\n labClr?: string;\n txtBkg?: string;\n lineClr?: string;\n data?: any[]; // data to display in dropdown, [ { id: , name: }, .. ] -\n onChange?: ( newIntVal: number ) => void;\n ftreq?: boolean;\n ftreqmsg?: string;\n}\n\n//********************************************************************\n// FtFmDropdownField : react-native-paper DropDown wrapped in FtCon\n//\n// DROPDOWN-PROP DATA_TYPE DESCRIPTION VALUES\n// name string field name for data binding, 'md11.field' -\n// label string label text -\n// txtClr string input text color '#'\n// labClr string label text color '#'\n// txtBkg string input background color '#'\n// lineClr string input outline color '#'\n// data object data to display in dropdown, [ { id: , name: }, .. ] -\n// onChange function event handler: (newIntVal) => { .. } -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n// labOnTap self handler() on tap/click handler function - -\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// labSs container string size specification within parent container '' see FtCon docs\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// labFlex container int size in main direction in ratio to other children - -\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// labW container int/string width, pixels/percentage - -\n// labH container int/string height, pixels/percentage - -\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\n// labElev container int elevation shadow 0 0 - 10\n// labShow container int/bool Show/Hide true 0/1/false/true\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// labId self string id attribute to be applied to the outermost View for testing - -\n//\n// Supported validation props:\n// PROP DESCRIPTION EXAMPLE\n// ftreq input is required \n//\n// ftreqmsg custom error message : freq \n//\n// Example:\n// \n// ..\n// FtRapi.callList( 'catClassLookup', {\n// urlParms: {},\n// success: ( result, data ) => {\n// setLkpCatClass( data[0] ); // List\n// },\n// error: ( result ) => {\n// Ft.dirs( \"ERROR: catClassList: \", result );\n// }\n// });\n//\nexport default function FtFmDropdownField(\n {\n label, txtClr, labClr, txtBkg, lineClr, data, onChange,\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni, en = 1,\n //- external label props -----\n ext, labTxtDescr,\n labOnTap, labOnSize,\n labSs, labMd, labLt,\n labFlex, labInflex, labW, labH,\n labBkgClr, labBkgClrX, labBkgImg, labBkgImgX,\n labFit, labFitX,\n labPad, labPadT, labPadR, labPadB, labPadL,\n labMar, labMarT, labMarR, labMarB, labMarL,\n labBor, labElev, labShow, labAligni,\n labEn, labId,\n //- remaining props -----\n ...props\n }: FtFmDropdownFieldProps\n): JSX.Element\n{\n //- hooks : no conditions here -----\n const winDim = useWindowDimensions();\n const formCtx = useContext( FtFormContext ) as any;\n const { handleChange } = useFormikContext(); // fetch formik context\n const [ { name, value }, meta ] = useField( props as any );\n const [ showDdn , setShowDdn ] = useState( false );\n const [ menuWidth , setMenuWidth ] = useState( 0 );\n const [ ddData , setDdData ] = useState( [] ); // we store the data internally so we can add empty if input is not required\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //- prep general settings -----\n const disabled: boolean = !en;\n\n //- setup external label -----\n const isExt: boolean = Ft.parseResp( ext ?? '0', winDim ) == '1';\n const extLabelProps: any = isExt\n ? {\n text: !props.ftreq ? label : `${label} *`,\n txtDescr: labTxtDescr,\n onTap: labOnTap, onSize: labOnSize,\n ss: labSs, md: labMd, lt: labLt,\n flex: labFlex, inflex: labInflex, w: labW, h: labH,\n bkgClr: labBkgClr, bkgClrX: labBkgClrX,\n bkgImg: labBkgImg, bkgImgX: labBkgImgX,\n fit: labFit, fitX: labFitX,\n pad: labPad, padT: labPadT, padR: labPadR, padB: labPadB, padL: labPadL,\n mar: labMar, marT: labMarT, marR: labMarR, marB: labMarB, marL: labMarL,\n bor: labBor, elev: labElev, show: labShow, aligni: labAligni,\n en: labEn, id: labId,\n }\n : {};\n\n //- prep field & container props -----\n const ctlMar: string|undefined = !Ft.e( mar ) ? mar : formCtx.spacing;\n const conProps: any = { // container properties\n onTap, \n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar: ctlMar, marT, marL, marB, marR,\n bor, elev, show, aligni, en,\n };\n conProps.onSize = ( layout: LayoutRectangle ): void => {\n if ( menuWidth != layout.width ) setMenuWidth( layout.width );\n if ( onSize != undefined ) onSize( layout );\n };\n\n //- prep input control icon props -----\n const iconPress = () => {\n if ( !disabled ) setShowDdn( true );\n };\n const iconProps: any = {\n icon : showDdn ? \"menu-up\" : \"menu-down\",\n onPress : iconPress,\n };\n\n //- prep input control props -----\n const inputProps: any = {\n mode : 'outlined',\n label : isExt ? '' : label,\n dense : true,\n disabled : disabled,\n editable : false, // stop keyboard from popping up\n right : (),\n value : ddData?.find( x => x.id == value )?.name ?? '', // value attr is on TextInput, value arg at this point is an int, must convert to string for TextInput\n theme : { colors: {} as any } as any,\n style : { fontSize: Ft.scaleFont( 16 ) } as any,\n error : !!meta.error,\n };\n if ( !Ft.e( txtClr ) ) inputProps.theme.colors.text = txtClr;\n if ( !Ft.e( labClr) ) inputProps.theme.colors.placeholder = labClr;\n if ( !Ft.e( txtBkg ) ) inputProps.theme.colors.background = txtBkg;\n if ( !Ft.e( lineClr ) ) inputProps.outlineColor = lineClr;\n\n //- prep menu props -----\n const menuDismiss = () => setShowDdn( false ); // this is NOT triggered when menu item is pressed\n const menuProps: any = {\n visible : showDdn,\n anchorPosition : 'bottom',\n onDismiss : menuDismiss,\n anchor : (),\n style : { width: menuWidth } as any,\n contentStyle : { width: menuWidth } as any,\n };\n\n //- prep menu item props -----\n const itemPress = ( newId: number ) => {\n setShowDdn( false );\n formCtx.childChanged();\n if ( onChange != undefined ) onChange( newId );\n handleChange( name )( { target: { name: name, value: newId } } as any );\n };\n const menuItem = ( item: any , idx: number ) => ({\n key : `item${idx}`,\n title : item.name,\n onPress : () => itemPress( item.id ),\n dense : Ft.isWeb(),\n });\n\n //- render control -----\n const control: JSX.Element = (\n \n \n {ddData?.map( ( item, idx ) => () )}\n \n {( !!meta.error ? ({meta.error}) : (<>) )}\n \n );\n\n //- render final component -----\n const comp = isExt\n ? (<>{control})\n : control;\n\n return comp;\n\n //====================================================================\n // event handlers\n\n function onLoad(): void\n {\n const data2 = !props.ftreq \n ? ( [ { id: null, name: 'None' } ] as any[] ).concat( data )\n : Array.from( data ?? [] );\n setDdData( data2 );\n }\n}\nFtFmDropdownField.ftcompname = \"FtFmDropdownField\";\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtFmPasswordField from '../first/ftFmPasswordField';\r\nimport FtFmCheckboxField from '../first/ftFmCheckboxField';\r\nimport FtFmDropdownField from '../first/ftFmDropdownField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport Userz from '../models/userz';\r\nimport UserAuthRole from '../models/userAuthRole';\r\n\r\n//********************************************************************\r\n// PageUserEdit\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageUserEdit( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const { userId } = nav.params ?? { userId: 0 }; // unpack parameters passed from calling page\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlUser , setMdlUser ] = useState( null );\r\n const [ mdlRole , setMdlRole ] = useState( new UserAuthRole() );\r\n const [ mdlPasswords , setMdlPasswords ] = useState( {\r\n pass_new : '',\r\n pass_confirm : '',\r\n } );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( mdlUser, Ut.lkpUserAuthRoleType ) ) return ftBusy( { popup: popup } );\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n //- load lookups -----\r\n setBusy( true );\r\n Ut.loadLookups( {\r\n success: ( result, data ) => setBusy( false ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n });\r\n\r\n //- init record -----\r\n if ( userId != 0 ) { // existing record\r\n FtRapi.callRead( 'userzRead', userId, {\r\n success: ( result, data ) => {\r\n setMdlUser( data[0] );\r\n setMdlRole( data[1] );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n });\r\n } else { // new record\r\n setMdlUser( new Userz() );\r\n setMdlRole( new UserAuthRole() );\r\n }\r\n }\r\n\r\n function onSave(): void\r\n {\r\n //- handle password checks -----\r\n if ( userId == 0 || !Ft.e( mdlPasswords.pass_new ) ) {\r\n if ( Ft.e( mdlPasswords.pass_new ) || mdlPasswords.pass_new != mdlPasswords.pass_confirm ) {\r\n ftPopupMessage( setPopup, \"Error\", \"New Password and Confirm empty or do not match, please correct.\" );\r\n return;\r\n }\r\n }\r\n\r\n //- handle edit -----\r\n setBusy( true );\r\n if ( userId != 0 ) { // existing record\r\n FtRapi.callUpdate( 'userzUpdate', userId, {\r\n urlParms: {\r\n role_id : mdlRole.role_id,\r\n pass_new : mdlPasswords.pass_new,\r\n },\r\n inRec: mdlUser,\r\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n } else { // new record\r\n FtRapi.callNew( 'userzNew', {\r\n urlParms: {\r\n role_id : mdlRole.role_id,\r\n pass_new : mdlPasswords.pass_new,\r\n },\r\n inRec: mdlUser,\r\n success: ( { message }, data ) => {\r\n ftPopupMessage( setPopup, \"Success\", message );\r\n setMdlUser( new Userz() );\r\n setMdlRole( new UserAuthRole() );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtFmDropdownField from '../first/ftFmDropdownField';\nimport FtButton from '../first/ftButton';\nimport FtDataGrid from '../first/ftDataGrid';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\nimport Th from '../general/th';\n\nimport GenLookup from '../models/genLookup';\nimport AdminTask from '../models/adminTask';\n\n//********************************************************************\n// PageTaskSearch\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PageTaskSearch( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n\n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlTask , setMdlTask ] = useState( new AdminTask() );\n const [ lkpCategory , setLkpCategory ] = useState( [] );\n const [ lkpUserz , setLkpUserz ] = useState( [] );\n const [ lstTask , setLstTask ] = useState( [] );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n\n if ( busy || Ft.eAny( lkpCategory, lkpUserz ) ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n );\n\n //====================================================================\n // event handlers\n\n function onLoad(): void\n {\n setBusy( true );\n FtRapi.callList( 'userzLookup', {\n success: ( result, data ) => {\n setLkpUserz( data[0] );\n setLkpCategory( data[1] );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { btn: \"Close\", onClose: () => nav.pop() } ),\n complete: () => setBusy( false ),\n });\n }\n\n function onSearch(): void\n {\n setBusy( true );\n setLstTask( [] );\n FtRapi.callList( 'adminTaskSearch', {\n urlParms: {\n prm_description : mdlTask.description,\n prm_responsible_id : mdlTask.responsible_id,\n prm_category_id : mdlTask.category_id,\n },\n success: ( result, data ) => setLstTask( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n\n function onTapAdminTaskEdit( { dataId }: FtDgAction ): void\n {\n nav.push( 'TaskEdit', { taskId: dataId } );\n }\n\n function onTapAdminTaskDelete( { dataId }: FtDgAction ): void\n {\n ftPopupConfirm( setPopup, 'Confirmation', \"Are you sure you want to delete this record?\", {\n btnA: 'Yes', onA: () => {\n setLstTask( [] );\n setBusy( true );\n FtRapi.callDelete( 'adminTaskDelete', dataId, {\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { onClose: onSearch } ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n },\n btnB: 'No', onB: () => {}\n });\n }\n\n function onClickNewTask(): void\n {\n setLstTask( [] );\n nav.push( 'TaskEdit', { taskId: 0 } );\n }\n\n}\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React from 'react';\nimport Ft from './ft';\nimport { FtConProps, FtFmExtLabelProps } from './ftTypes';\nimport FtFmTextField from './ftFmTextField';\n\ninterface FtFmTextareaFieldProps extends FtConProps, FtFmExtLabelProps {\n name?: string;\n label?: string;\n txtClr?: string;\n labClr?: string;\n txtBkg?: string;\n lineClr?: string;\n lines?: number;\n onChange?: ( newVal: any ) => void;\n spel?: boolean;\n icon?: string;\n onTapIcon?: () => void;\n affix?: string;\n ftreq?: boolean;\n ftmin?: number;\n ftmax?: number;\n ftregex?: string;\n ftreqmsg?: string;\n ftminmsg?: string;\n ftmaxmsg?: string;\n ftregexmsg?: string; \n}\n\n//********************************************************************\n// FtFmTextareaField : react-native-paper Textarea field password wrapped in FtCon\n//\n// TEXTAREA-PROP DATA_TYPE DESCRIPTION VALUES\n// name string field name for data binding, 'md11.field' -\n// label string label text -\n// txtClr string input text color '#'\n// labClr string label text color '#'\n// txtBkg string input background color '#'\n// lineClr string input outline color '#'\n// lines int number of lines in multiline mode 1\n// onChange function event handler: (newVal) => { .. } -\n// spel bool enable/disable spellchecking, default on, web only -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n// labOnTap self handler() on tap/click handler function - -\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// labSs container string size specification within parent container '' see FtCon docs\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// labFlex container int size in main direction in ratio to other children - -\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// labW container int/string width, pixels/percentage - -\n// labH container int/string height, pixels/percentage - -\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\n// labElev container int elevation shadow 0 0 - 10\n// labShow container int/bool Show/Hide true 0/1/false/true\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// labId self string id attribute to be applied to the outermost View for testing - -\n//\n// Supported validation props:\n// PROP DESCRIPTION EXAMPLE\n// ftreq input is required \n// ftmin input must be at least this long \n// ftmax input must be at most this long \n// ftregex input must match this regular expression \n//\n// ftreqmsg custom error message : ftreq \n// ftminmsg custom error message : ftmin \n// ftmaxmsg custom error message : ftmax \n// ftregexmsg custom error message : ftregex \n//\n// Links: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n//\nexport default function FtFmTextareaField( { lines, ...props }: FtFmTextareaFieldProps ): JSX.Element\n{\n const lines2: number|undefined = !Ft.e( lines ) ? lines : 3;\n return ();\n}\nFtFmTextareaField.ftcompname = \"FtFmTextareaField\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { useState, useContext, useEffect } from 'react';\nimport { useWindowDimensions } from 'react-native';\nimport { useField, useFormikContext } from 'formik';\nimport { TextInput, HelperText } from 'react-native-paper';\nimport { DatePickerModal, en as DateEN, registerTranslation } from 'react-native-paper-dates';\nimport moment from 'moment';\nimport Ft from './ft';\nimport { FtConProps, FtFmExtLabelProps } from './ftTypes';\nimport FtCon from './ftCon';\nimport { FtFormContext } from './ftForm';\nimport FtText from './ftText';\n\ninterface FtFmDateFieldProps extends FtConProps, FtFmExtLabelProps {\n name?: string;\n label?: string;\n txtClr?: string;\n labClr?: string;\n txtBkg?: string;\n lineClr?: string;\n fmt?: string;\n ftreq?: boolean;\n ftmin?: string|Date;\n ftmax?: string|Date;\n ftreqmsg?: string;\n ftminmsg?: string;\n ftmaxmsg?: string;\n onChange?: ( newDateVal: Date ) => void;\n}\n\n//********************************************************************\n// FtFmDateField : react-native-paper TextField & date picker wrapped in FtCon\n// Note: this component will splice the new date into bound data-value, ie preserves the time part\n//\n// DATEFIELD-PROP DATA_TYPE DESCRIPTION VALUES\n// name string field name for data binding, 'md11.field' -\n// label string label text -\n// txtClr string input text color '#'\n// labClr string label text color '#'\n// txtBkg string input background color '#'\n// lineClr string input outline color '#'\n// fmt string date display format, 'YYYY/MM/DD' https://momentjs.com/docs/#/displaying/\n// onChange function event handler: (newDateVal) => { .. } -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n// labOnTap self handler() on tap/click handler function - -\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// labSs container string size specification within parent container '' see FtCon docs\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// labFlex container int size in main direction in ratio to other children - -\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// labW container int/string width, pixels/percentage - -\n// labH container int/string height, pixels/percentage - -\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\n// labElev container int elevation shadow 0 0 - 10\n// labShow container int/bool Show/Hide true 0/1/false/true\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// labId self string id attribute to be applied to the outermost View for testing - -\n//\n// Supported validation props:\n// PROP DESCRIPTION EXAMPLE\n// ftreq input is required \n// ftmin input earliest allowed date \n// ftmax input latest allowed date \n//\n// ftreqmsg custom error message : freq \n// ftminmsg custom error message : ftmin \n// ftmaxmsg custom error message : ftmax \n//\n// Examples:\n// \n//\nexport default function FtFmDateField(\n {\n label, txtClr, labClr, txtBkg, lineClr,\n fmt, ftmin, ftmax, onChange,\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni, en = 1,\n //- external label props -----\n ext, labTxtDescr,\n labOnTap, labOnSize,\n labSs, labMd, labLt,\n labFlex, labInflex, labW, labH,\n labBkgClr, labBkgClrX, labBkgImg, labBkgImgX,\n labFit, labFitX,\n labPad, labPadT, labPadR, labPadB, labPadL,\n labMar, labMarT, labMarR, labMarB, labMarL,\n labBor, labElev, labShow, labAligni,\n labEn, labId,\n //- remaining props -----\n ...props\n }: FtFmDateFieldProps\n): JSX.Element\n{\n //- hooks: no conditions here -----\n const winDim = useWindowDimensions();\n const formCtx = useContext( FtFormContext ) as any;\n const { handleChange , handleBlur } = useFormikContext(); // fetch formik context\n const [ { name, value }, meta ] = useField( props as any );\n const [ isOpen , setIsOpen ] = useState( false );\n\n useEffect( () => registerTranslation( 'en', DateEN ), [] );\n\n //- prep field & container props -----\n const ctlMar: string|number = !Ft.e( mar ) ? mar : formCtx.spacing;\n const conProps: any = { // container properties\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar: ctlMar, marT, marL, marB, marR,\n bor, elev, show, aligni, en,\n };\n\n //- setup some cosmetics -----\n let cosmet: any = { theme: { colors: {} } };\n cosmet.style = { fontSize: Ft.scaleFont( 16 ) };\n if ( !Ft.e( txtClr ) ) cosmet.theme.colors.text = txtClr;\n if ( !Ft.e( labClr) ) cosmet.theme.colors.placeholder = labClr;\n if ( !Ft.e( txtBkg ) ) cosmet.theme.colors.background = txtBkg;\n if ( !Ft.e( lineClr ) ) cosmet.outlineColor = lineClr;\n\n const disabled = !en;\n const labelReq: string|undefined = ( !Ft.e( label ) && !disabled && Ft.isDef( props.ftreq ) ) ? `${label} * ` : label;\n const dateFmt: string = fmt != undefined ? fmt : 'YYYY/MM/DD';\n\n //- prep date props -----\n const dateProps: any = { validRange: {} };\n if ( !Ft.e( ftmin ) ) dateProps.validRange['startDate'] = moment( ftmin ).toDate();\n if ( !Ft.e( ftmax ) ) dateProps.validRange['endDate'] = moment( ftmax ).toDate();\n\n //- setup external label -----\n const isExt: boolean = Ft.parseResp( ext ?? '0', winDim ) == '1';\n const extLabelProps: any = isExt\n ? {\n text: !props.ftreq ? label : `${label} *`,\n txtDescr: labTxtDescr,\n onTap: labOnTap, onSize: labOnSize,\n ss: labSs, md: labMd, lt: labLt,\n flex: labFlex, inflex: labInflex, w: labW, h: labH,\n bkgClr: labBkgClr, bkgClrX: labBkgClrX,\n bkgImg: labBkgImg, bkgImgX: labBkgImgX,\n fit: labFit, fitX: labFitX,\n pad: labPad, padT: labPadT, padR: labPadR, padB: labPadB, padL: labPadL,\n mar: labMar, marT: labMarT, marR: labMarR, marB: labMarB, marL: labMarL,\n bor: labBor, elev: labElev, show: labShow, aligni: labAligni,\n en: labEn, id: labId,\n }\n : {};\n\n //- render control -----\n const control: JSX.Element = (<>\n \n {\n if (en) setIsOpen( true );\n }} />}\n value={Ft.dtFmt( value, dateFmt)} // value attr is on TextInput, value arg at this point is a Date, must convert to string for TextInput\n onChangeText={ ( newValStr: string ) => {} } // don't allow any changes\n />\n {( !!meta.error ? ({meta.error}) : (<>) )}\n \n {!!en && ( setIsOpen( false )}\n onConfirm={ ( parms: any ): void => {\n const newDttm = Ft.dtmSpliceDateDtm( value, parms.date );\n formCtx.childChanged();\n if ( onChange != null ) onChange( newDttm );\n setIsOpen( false );\n handleChange( name )( { target: { name: name, value: newDttm } } as any );\n } }\n {...dateProps}\n />)}\n );\n\n //- render final component -----\n const comp = isExt\n ? (<>{control})\n : control;\n\n return comp;\n}\nFtFmDateField.ftcompname = \"FtFmDateField\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { useState, useContext } from 'react';\nimport { useWindowDimensions } from 'react-native';\nimport { useField, useFormikContext } from 'formik';\nimport { TextInput, HelperText } from 'react-native-paper';\nimport { TimePickerModal } from 'react-native-paper-dates';\nimport Ft from './ft';\nimport { FtConProps, FtFmExtLabelProps } from './ftTypes';\nimport FtCon from './ftCon';\nimport { FtFormContext } from './ftForm';\nimport FtText from './ftText';\n\ninterface FtFmTimeFieldProps extends FtConProps, FtFmExtLabelProps {\n name?: string;\n label?: string;\n txtClr?: string;\n labClr?: string;\n txtBkg?: string;\n lineClr?: string;\n fmt?: string;\n onChange?: ( newVal: Date ) => void;\n ftreq?: boolean;\n ftmin?: string|Date;\n ftmax?: string|Date;\n ftreqmsg?: string;\n ftminmsg?: string;\n ftmaxmsg?: string;\n}\n\n//********************************************************************\n// FtFmTimeField : react-native-paper TextField & time picker wrapped in FtCon\n// Note: this component will splice the new time into bound data-value, ie preserves the date part\n//\n// TIMEFIELD-PROP DATA_TYPE DESCRIPTION VALUES\n// name string field name for data binding, 'md11.field' -\n// label string label text -\n// txtClr string input text color '#'\n// labClr string label text color '#'\n// txtBkg string input background color '#'\n// lineClr string input outline color '#'\n// fmt string date display format, 'YYYY/MM/DD' https://momentjs.com/docs/#/displaying/\n// onChange function event handler: (newDateVal) => { .. } -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n// labOnTap self handler() on tap/click handler function - -\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// labSs container string size specification within parent container '' see FtCon docs\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// labFlex container int size in main direction in ratio to other children - -\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// labW container int/string width, pixels/percentage - -\n// labH container int/string height, pixels/percentage - -\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\n// labElev container int elevation shadow 0 0 - 10\n// labShow container int/bool Show/Hide true 0/1/false/true\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// labId self string id attribute to be applied to the outermost View for testing - -\n//\n// Supported validation props:\n// PROP DESCRIPTION EXAMPLE\n// ftreq input is required \n// ftmin input earliest allowed time \n// ftmax input latest allowed time \n//\n// ftreqmsg custom error message : freq \n// ftminmsg custom error message : ftmin \n// ftmaxmsg custom error message : ftmax \n//\n// Examples:\n// \n//\nexport default function FtFmTimeField(\n {\n label, txtClr, labClr, txtBkg, lineClr, fmt, onChange,\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni, en = 1,\n //- external label props -----\n ext, labTxtDescr,\n labOnTap, labOnSize,\n labSs, labMd, labLt,\n labFlex, labInflex, labW, labH,\n labBkgClr, labBkgClrX, labBkgImg, labBkgImgX,\n labFit, labFitX,\n labPad, labPadT, labPadR, labPadB, labPadL,\n labMar, labMarT, labMarR, labMarB, labMarL,\n labBor, labElev, labShow, labAligni,\n labEn, labId,\n //- remaining props -----\n ...props\n }: FtFmTimeFieldProps\n): JSX.Element\n{\n //- hooks: no conditions here -----\n const winDim = useWindowDimensions();\n const formCtx = useContext( FtFormContext ) as any;\n const { handleChange , handleBlur } = useFormikContext(); // fetch formik context\n const [ { name, value }, meta ] = useField( props as any );\n const [ isOpen , setIsOpen ] = useState( false );\n\n //- prep field & container props -----\n const ctlMar: string|number|number[]|undefined = !Ft.e( mar ) ? mar : formCtx.spacing;\n const conProps: any = { // container properties\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar: ctlMar, marT, marL, marB, marR,\n bor, elev, show, aligni, en,\n };\n\n //- setup some cosmetics -----\n let cosmet: any = { theme: { colors: {} } };\n cosmet.style = { fontSize: Ft.scaleFont( 16 ) };\n if ( !Ft.e( txtClr ) ) cosmet.theme.colors.text = txtClr;\n if ( !Ft.e( labClr) ) cosmet.theme.colors.placeholder = labClr;\n if ( !Ft.e( txtBkg ) ) cosmet.theme.colors.background = txtBkg;\n if ( !Ft.e( lineClr ) ) cosmet.outlineColor = lineClr;\n\n const disabled: boolean = !en;\n const labelReq: string|undefined = ( !Ft.e( label ) && !disabled && Ft.isDef( props.ftreq ) ) ? `${label} * ` : label;\n const dateFmt: string = fmt != undefined ? fmt : 'HH:mm';\n\n //- setup external label -----\n const isExt: boolean = Ft.parseResp( ext ?? '0', winDim ) == '1';\n const extLabelProps: any = isExt\n ? {\n text: !props.ftreq ? label : `${label} *`,\n txtDescr: labTxtDescr,\n onTap: labOnTap, onSize: labOnSize,\n ss: labSs, md: labMd, lt: labLt,\n flex: labFlex, inflex: labInflex, w: labW, h: labH,\n bkgClr: labBkgClr, bkgClrX: labBkgClrX,\n bkgImg: labBkgImg, bkgImgX: labBkgImgX,\n fit: labFit, fitX: labFitX,\n pad: labPad, padT: labPadT, padR: labPadR, padB: labPadB, padL: labPadL,\n mar: labMar, marT: labMarT, marR: labMarR, marB: labMarB, marL: labMarL,\n bor: labBor, elev: labElev, show: labShow, aligni: labAligni,\n en: labEn, id: labId,\n }\n : {};\n\n //- render control -----\n const control: JSX.Element = (<>\n \n {\n if (en) setIsOpen( true );\n }} />}\n value={Ft.dtFmt( value, dateFmt)} // value attr is on TextInput, value arg at this point is a Date, must convert to string for TextInput\n onChangeText={ ( newValStr: string ): void => {} } // don't allow any changes\n />\n {( !!meta.error ? ({meta.error}) : (<>) )}\n \n {!!en && ( setIsOpen( false )}\n label=\"Select time\"\n confirmLabel=\"OK\"\n onConfirm={ ( parms: any ): void => {\n const strHours = Ft.strPadNum( parms.hours, 2 );\n const strMins = Ft.strPadNum( parms.minutes, 2 );\n const newTime = `${strHours}:${strMins}:00`;\n const newDttm = Ft.dtmSpliceTimeDtm( value, newTime );\n formCtx.childChanged();\n if ( onChange != undefined ) onChange( newDttm );\n setIsOpen( false );\n handleChange( name )( { target: { name: name, value: newDttm } } as any );\n } }\n />)}\n );\n\n //- render final component -----\n const comp = isExt\n ? (<>{control})\n : control;\n\n return comp; \n}\nFtFmTimeField.ftcompname = \"FtFmTimeField\";\n\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { useState, useContext } from 'react';\nimport { useWindowDimensions } from 'react-native';\nimport { useField, useFormikContext } from 'formik';\nimport { FlatList } from 'react-native';\nimport { TextInput, HelperText, Dialog, Portal, Button, Text } from 'react-native-paper';\nimport Ft from './ft';\nimport { FtConProps, FtFmExtLabelProps } from './ftTypes';\nimport FtCon from './ftCon';\nimport { FtFormContext } from './ftForm';\nimport FtText from './ftText';\n\ninterface FtFmSearchFieldProps extends FtConProps, FtFmExtLabelProps {\n name?: string;\n label?: string;\n txtClr?: string;\n labClr?: string;\n txtBkg?: string;\n lineClr?: string;\n data?: any; // data to display in dropdown, [ { id: , name: }, .. ] -\n limit?: number;\n optHeight?: number;\n btnClr?: string;\n btnTxtClr?: string;\n onChange?: ( newIntVal: number ) => void;\n ftreq?: boolean;\n ftreqmsg?: string;\n}\n\n//********************************************************************\n// FtFmSearchField : react-native-paper popup selector with search filter wrapped in FtCon\n//\n// SEARCH-PROP DATA_TYPE DESCRIPTION VALUES\n// name string field name for data binding, 'md11.field' -\n// label string label text -\n// txtClr string input text color '#'\n// labClr string label text color '#'\n// txtBkg string input background color '#'\n// lineClr string input outline color '#'\n// data object data to display in dropdown, [ { id: , name: }, .. ] -\n// limit int limit displayed option in dialog, default 100 -\n// optHeight int height of options section in dialog, default 250 -\n// btnClr string cancel button color -\n// btnTxtClr string cancel button text color -\n// onChange function event handler: (newIntVal) => { .. } -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n// labOnTap self handler() on tap/click handler function - -\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// labSs container string size specification within parent container '' see FtCon docs\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// labFlex container int size in main direction in ratio to other children - -\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// labW container int/string width, pixels/percentage - -\n// labH container int/string height, pixels/percentage - -\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\n// labElev container int elevation shadow 0 0 - 10\n// labShow container int/bool Show/Hide true 0/1/false/true\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// labId self string id attribute to be applied to the outermost View for testing - -\n//\n// Example:\n// \n// ..\n// FtRapi.callList( 'catClassLookup', {\n// urlParms: {},\n// success: ( result, data ) => {\n// setLkpCatClass( data[0] ); // List\n// },\n// error: ( result ) => {\n// Ft.dirs( \"ERROR: catClassList: \", result );\n// }\n// });\n//\nexport default function FtFmSearchField(\n {\n label, txtClr, labClr, txtBkg, lineClr,\n btnClr, btnTxtClr,\n limit, optHeight, data, onChange,\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni, en = 1,\n //- external label props -----\n ext, labTxtDescr,\n labOnTap, labOnSize,\n labSs, labMd, labLt,\n labFlex, labInflex, labW, labH,\n labBkgClr, labBkgClrX, labBkgImg, labBkgImgX,\n labFit, labFitX,\n labPad, labPadT, labPadR, labPadB, labPadL,\n labMar, labMarT, labMarR, labMarB, labMarL,\n labBor, labElev, labShow, labAligni,\n labEn, labId,\n //- remaining props -----\n ...props\n }: FtFmSearchFieldProps \n): JSX.Element\n{\n //- hooks : no conditions here -----\n const winDim = useWindowDimensions();\n const formCtx = useContext( FtFormContext ) as any;\n const { handleChange, handleBlur } = useFormikContext(); // fetch formik context\n const [ { name, value }, meta ] = useField( props as any );\n const [showSel , setShowSel] = useState(false); // show selector dialog\n const [filter , setFilter ] = useState( '' );\n\n //- prep field & container props -----\n const ctlMar: string|undefined = !Ft.e( mar ) ? mar : formCtx.spacing;\n const conProps: any = { // container properties\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar: ctlMar, marT, marL, marB, marR,\n bor, elev, show, aligni, en,\n };\n\n //- setup some textinput cosmetics -----\n const cosmet: any = { theme: { colors: {} } };\n cosmet.style = { fontSize: Ft.scaleFont( 16 ) };\n if ( !Ft.e( txtClr ) ) cosmet.theme.colors.text = txtClr;\n if ( !Ft.e( labClr) ) cosmet.theme.colors.placeholder = labClr;\n if ( !Ft.e( txtBkg ) ) cosmet.theme.colors.background = txtBkg;\n if ( !Ft.e( lineClr ) ) cosmet.outlineColor = lineClr;\n\n //- setup some dialog button cosmetics -----\n const btnCosmet: any = { labelStyle: {} };\n btnCosmet.buttonColor = btnClr ?? '#1476d2';\n btnCosmet.textColor = btnTxtClr ?? '#ffffff';\n\n const disabled: boolean = !en;\n const labelReq: string|undefined = ( !Ft.e( label ) && !disabled && Ft.isDef( props.ftreq ) ) ? `${label} * ` : label;\n\n //- filter data -----\n const curValue: string = !Ft.e( value ) ? ( ( Ft.lq( data ).firstOrDefault( ( i: any ): any => i.id == value ) as any )?.name ?? '' ) : '';\n const listData: any[] = Ft.lq( data ).where( ( i: any ): any => Ft.strContainsCi( i.name, filter ) ).take( limit ?? 100 ).toArray();\n\n //- setup external label -----\n const isExt: boolean = Ft.parseResp( ext ?? '0', winDim ) == '1';\n const extLabelProps: any = isExt\n ? {\n text: !props.ftreq ? label : `${label} *`,\n txtDescr: labTxtDescr,\n onTap: labOnTap, onSize: labOnSize,\n ss: labSs, md: labMd, lt: labLt,\n flex: labFlex, inflex: labInflex, w: labW, h: labH,\n bkgClr: labBkgClr, bkgClrX: labBkgClrX,\n bkgImg: labBkgImg, bkgImgX: labBkgImgX,\n fit: labFit, fitX: labFitX,\n pad: labPad, padT: labPadT, padR: labPadR, padB: labPadB, padL: labPadL,\n mar: labMar, marT: labMarT, marR: labMarR, marB: labMarB, marL: labMarL,\n bor: labBor, elev: labElev, show: labShow, aligni: labAligni,\n en: labEn, id: labId,\n }\n : {};\n\n //- render control -----\n const control: JSX.Element = (\n \n {}} // avoid typing\n onBlur={handleBlur(name)}\n onFocus={() => setShowSel(true)}\n right={ {\n if ( en ) setShowSel( !showSel );\n }} />}\n {...cosmet}\n {...props}\n />\n \n setShowSel(false)}>\n {`${label}: select option`}\n \n Start typing to filter options...\n setFilter(newVal)}\n />\n \n \n ( {\n formCtx.childChanged();\n if ( onChange != undefined ) onChange( i.item.id );\n setShowSel( false );\n handleChange( name )( { target: {\n name: name,\n value: i.item.id\n } } as any );\n }}\n >{i.item.name})}\n keyExtractor={ ( i: any ): any => `${i.id}`}\n />\n \n \n setShowSel(false)}\n {...btnCosmet}\n >Cancel\n \n \n \n {( !!meta.error ? ({meta.error}) : (<>) )}\n \n );\n\n //- render final component -----\n const comp = isExt\n ? (<>{control})\n : control;\n\n return comp; \n}\nFtFmSearchField.ftcompname = \"FtFmSearchField\";\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtFmTextareaField from '../first/ftFmTextareaField';\nimport FtFmDateField from '../first/ftFmDateField';\nimport FtFmTimeField from '../first/ftFmTimeField';\nimport FtFmCheckboxField from '../first/ftFmCheckboxField';\nimport FtFmDropdownField from '../first/ftFmDropdownField';\nimport FtFmSearchField from '../first/ftFmSearchField';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport Th from '../general/th';\nimport Ut from '../general/ut';\n\nimport GenLookup from '../models/genLookup';\nimport AdminTask from '../models/adminTask';\n\n//********************************************************************\n// PageTaskEdit\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PageTaskEdit( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n\n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const { taskId } = nav.params ?? { taskId: 0 }; // unpack parameters passed from calling page\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlTask , setMdlTask ] = useState( null );\n const [ lkpAssembly , setLkpAssembly ] = useState( [] );\n const [ lkpUserz , setLkpUserz ] = useState( [] );\n const [ initLkpBasic , setInitLkpBasic ] = useState( false );\n const [ initLkpAssembly , setInitLkpAssembly ] = useState( false );\n const [ initLkpUserz , setInitLkpUserz ] = useState( false );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n\n if ( busy || Ft.eAny( initLkpBasic, initLkpAssembly, initLkpUserz, mdlTask, lkpAssembly, lkpUserz ) ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n );\n\n //====================================================================\n // event handlers\n\n function onLoad(): void\n {\n //- load lookups -----\n Ut.loadLookups( {\n success: ( result, data ) => setInitLkpBasic( true ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n\n FtRapi.callList( 'assemblyLookup', {\n success: ( result, data ) => {\n setLkpAssembly( data[0] );\n setInitLkpAssembly( true );\n },\n error: ( result ) => ftPopupMessage( setPopup, \"Error\", result.message, { onClose: nav.pop } ),\n });\n\n FtRapi.callList( 'userzLookup', {\n success: ( result, data ) => {\n setLkpUserz( data[0] );\n setInitLkpUserz( true );\n },\n error: ( result ) => ftPopupMessage( setPopup, \"Error\", result.message, { onClose: nav.pop } ),\n });\n\n //- init/load form record -----\n if ( taskId != 0 ) { // existing record\n FtRapi.callRead( 'adminTaskRead', taskId, {\n success: ( result, data ) => setMdlTask( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n } else { // new record\n const rec = new AdminTask();\n rec.due_by = Ft.dtmAsDate();\n setMdlTask( rec );\n }\n }\n\n function onSave(): void\n {\n setBusy( true );\n if ( taskId != 0 ) { // existing record\n FtRapi.callUpdate( 'adminTaskUpdate', taskId, {\n inRec: mdlTask,\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n } else { // new record\n FtRapi.callNew( 'adminTaskNew', {\n inRec: mdlTask,\n success: ( { message }, data ) => {\n ftPopupMessage( setPopup, \"Success\", message );\n const rec = new AdminTask();\n rec.due_by = Ft.dtmAsDate();\n setMdlTask( rec );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n }\n\n}\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtFmSearchField from '../first/ftFmSearchField';\nimport FtButton from '../first/ftButton';\nimport FtDataGrid from '../first/ftDataGrid';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport Th from '../general/th';\nimport Ut from '../general/ut';\n\nimport GenLookup from '../models/genLookup';\nimport Pastor from '../models/pastor';\n\n\n//********************************************************************\n// PagePastorSearch\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PagePastorSearch( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n\n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlPastor , setMdlPastor ] = useState( new Pastor() );\n const [ lkpAssembly , setLkpAssembly ] = useState( [] );\n const [ lkpRegion , setLkpRegion ] = useState( [] );\n const [ lstPastor , setLstPastor ] = useState( [] as Pastor[] );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n\n //====================================================================\n // render\n\n if ( busy || Ft.eAny( lkpAssembly, lkpRegion ) ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n );\n\n //====================================================================\n // event handlers\n\n function onLoad(): void\n {\n setBusy( true );\n FtRapi.callList( 'assemblyLookup', {\n success: ( result, data ) => {\n setLkpAssembly( data[0] );\n setLkpRegion( data[1] );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { btn: \"Close\", onClose: () => nav.pop() } ), \n complete: () => setBusy( false ),\n });\n }\n\n function onSearch(): void\n {\n setBusy( true );\n setLstPastor( [] );\n FtRapi.callList( 'pastorSearch', {\n urlParms: {\n prm_member_no : mdlPastor.member_no,\n prm_surname : mdlPastor.surname,\n prm_first_name : mdlPastor.first_name,\n prm_assembly_id : mdlPastor.assembly_id,\n prm_region_id : mdlPastor.region_id,\n prm_pastor_status : mdlPastor.pastor_status,\n prm_idno : mdlPastor.idno,\n prm_email : mdlPastor.email,\n prm_celno : mdlPastor.celno,\n },\n success: ( result, data ) => setLstPastor( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n\n function onTapPastorEdit( { dataId }: FtDgAction ): void\n {\n nav.push( 'PastorEdit', { pastorId: dataId } );\n }\n\n function onTapPastorNew(): void\n {\n nav.push( 'PastorEdit', { pastorId: 0 } );\n }\n\n function onTapPastorQuals( { dataId }: FtDgAction ): void\n {\n nav.push( 'QualificationSearch', { pastorId: dataId } );\n }\n\n function onTapPastorFolder( { dataItem }: FtDgAction ): void\n {\n Ft.openUrl( `${Ut.pastorFolderLink}/${dataItem.member_no}` );\n }\n\n function onTapPastorFiles( { dataId }: FtDgAction ): void\n {\n nav.push( 'PastorFileSearch', { pastorId: dataId } );\n }\n}\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { useContext, useState } from 'react';\nimport { useWindowDimensions } from 'react-native';\nimport { useField, useFormikContext } from 'formik';\nimport { TextInput, HelperText } from 'react-native-paper';\nimport Ft from './ft';\nimport type { FtConProps, FtFmExtLabelProps } from './ftTypes';\nimport FtCon from './ftCon';\nimport { FtFormContext } from './ftForm';\nimport FtText from './ftText';\n\ninterface FtFmIntegerFieldProps extends FtConProps, FtFmExtLabelProps {\n name?: string;\n label?: string;\n txtClr?: string;\n labClr?: string;\n txtBkg?: string;\n lineClr?: string;\n pos?: boolean;\n onChange?: ( newIntVal: number ) => void;\n ftreq?: boolean;\n ftmin?: number;\n ftmax?: number;\n ftreqmsg?: string;\n ftminmsg?: string;\n ftmaxmsg?: string;\n}\n\n//********************************************************************\n// FtFmIntegerField : react-native-paper TextField wrapped in FtCon\n//\n// INTEGERFIELD-PROP DATA_TYPE DESCRIPTION VALUES\n// name string field name for data binding, 'md11.field' -\n// label string label text -\n// txtClr string input text color '#'\n// labClr string label text color '#'\n// txtBkg string input background color '#'\n// lineClr string input outline color '#'\n// pos bool allow positive numbers only false\n// onChange function event handler: (newIntVal) => { .. } -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n// labOnTap self handler() on tap/click handler function - -\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// labSs container string size specification within parent container '' see FtCon docs\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// labFlex container int size in main direction in ratio to other children - -\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// labW container int/string width, pixels/percentage - -\n// labH container int/string height, pixels/percentage - -\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\n// labElev container int elevation shadow 0 0 - 10\n// labShow container int/bool Show/Hide true 0/1/false/true\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// labId self string id attribute to be applied to the outermost View for testing - -\n//\n// Supported validation props:\n// PROP DESCRIPTION EXAMPLE\n// ftreq input is required \n// ftmin input must be at least this value \n// ftmax input must be at most this value \n//\n// ftreqmsg custom error message : freq \n// ftminmsg custom error message : ftmin \n// ftmaxmsg custom error message : ftmax \n//\n// Example:\n// \n//\nexport default function FtFmIntegerField(\n {\n label, txtClr, labClr, txtBkg, lineClr, pos,\n ftreq, ftmin, ftmax, onChange,\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni, en = 1,\n //- external label props -----\n ext, labTxtDescr,\n labOnTap, labOnSize,\n labSs, labMd, labLt,\n labFlex, labInflex, labW, labH,\n labBkgClr, labBkgClrX, labBkgImg, labBkgImgX,\n labFit, labFitX,\n labPad, labPadT, labPadR, labPadB, labPadL,\n labMar, labMarT, labMarR, labMarB, labMarL,\n labBor, labElev, labShow, labAligni,\n labEn, labId,\n //- remaining props -----\n ...props\n }: FtFmIntegerFieldProps\n): JSX.Element\n{\n //- hooks: no conditions here -----\n const winDim = useWindowDimensions();\n const formCtx = useContext( FtFormContext ) as any;\n const { handleChange , handleBlur } = useFormikContext(); // fetch formik context\n const [ field , meta ] = useField( props as any );\n const [ info , setInfo ] = useState( { strValue: null } );\n\n //- prep field & container props -----\n const { name, value } = field; // unpack from field\n const ctlMar: string|undefined = !Ft.e( mar ) ? mar : formCtx.spacing;\n const conProps: any = { // container properties\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar: ctlMar, marT, marL, marB, marR,\n bor, elev, show, aligni, en,\n };\n\n //- setup some cosmetics -----\n let cosmet: any = { theme: { colors: {} } };\n cosmet.style = { fontSize: Ft.scaleFont( 16 ) };\n if ( !Ft.e( txtClr ) ) cosmet.theme.colors.text = txtClr;\n if ( !Ft.e( labClr) ) cosmet.theme.colors.placeholder = labClr;\n if ( !Ft.e( txtBkg ) ) cosmet.theme.colors.background = txtBkg;\n if ( !Ft.e( lineClr ) ) cosmet.outlineColor = lineClr;\n\n const disabled: boolean = !en;\n const labelReq: string|undefined = ( !Ft.e( label ) && !disabled && Ft.isDef( ftreq ) ) ? `${label} * ` : label;\n\n //- setup external label -----\n const isExt: boolean = Ft.parseResp( ext ?? '0', winDim ) == '1';\n const extLabelProps: any = isExt\n ? {\n text: !ftreq ? label : `${label} *`,\n txtDescr: labTxtDescr,\n onTap: labOnTap, onSize: labOnSize,\n ss: labSs, md: labMd, lt: labLt,\n flex: labFlex, inflex: labInflex, w: labW, h: labH,\n bkgClr: labBkgClr, bkgClrX: labBkgClrX,\n bkgImg: labBkgImg, bkgImgX: labBkgImgX,\n fit: labFit, fitX: labFitX,\n pad: labPad, padT: labPadT, padR: labPadR, padB: labPadB, padL: labPadL,\n mar: labMar, marT: labMarT, marR: labMarR, marB: labMarB, marL: labMarL,\n bor: labBor, elev: labElev, show: labShow, aligni: labAligni,\n en: labEn, id: labId,\n }\n : {};\n\n //- render control -----\n const control: JSX.Element = (\n \n \n {( !!meta.error ? ({meta.error}) : (<>) )}\n \n );\n\n //- render final component -----\n const comp = isExt\n ? (<>{control})\n : control;\n\n return comp;\n\n //====================================================================\n // event handlers\n\n function onValue(): string\n {\n //- handle initial populating of info.strValue -----\n if ( info.strValue == null )\n info.strValue = value?.toString() ?? '';\n\n //- handle possible change of field.value -----\n if ( info.strValue != '' ) {\n const parseNum = Ft.parseIntSpace( info.strValue );\n const changed = !Ft.numEq( value, parseNum );\n if ( changed ) info.strValue = value?.toFixed( 0 ) ?? '0';\n }\n return info.strValue;\n }\n\n function onChangeText( newValStr: string ): void\n {\n //- handle disabled and invalid newValStr cases -----\n if ( disabled ) return;\n const parseNum = Ft.parseIntSpace( newValStr );\n if ( parseNum == null ) return; // invalid newValStr is ignored\n\n //- process valid newValStr -----\n info.strValue = newValStr;\n const newValInt = !!pos ? Math.abs( parseNum ) : parseNum;\n formCtx.childChanged();\n if ( onChange != undefined ) onChange( newValInt );\n return handleChange(name)({ target: {\n name: name,\n value: newValInt\n }} as any );\n }\n\n}\nFtFmIntegerField.ftcompname = \"FtFmIntegerField\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\r\n///\r\n/// Copyright (c) 2024 Jaco Bekker T/A LightSoft\r\nimport React, { useContext, useState, useEffect } from 'react';\r\nimport { useWindowDimensions } from 'react-native';\r\nimport { useField, useFormikContext } from 'formik';\r\nimport { HelperText, ActivityIndicator, ProgressBar } from 'react-native-paper';\r\nimport { getDocumentAsync, DocumentPickerResult, DocumentPickerAsset } from 'expo-document-picker';\r\nimport type { FtConProps, FtFmExtLabelProps } from './ftTypes';\r\nimport FtAppInfo from './ftAppInfo';\r\nimport Ft from './ft';\r\nimport FtRapi from './ftRapi';\r\nimport FtCon from './ftCon';\r\nimport FtText from './ftText';\r\nimport FtImage from './ftImage';\r\nimport FtButton from './ftButton';\r\nimport FtSpacer from './ftSpacer';\r\nimport { FtFormContext } from './ftForm';\r\n\r\nimport ArcUpload from '../models/arcUpload';\r\n\r\nimport im_placeholder from '../../assets/placeholder.jpg';\r\n\r\nconst CHUNK_SIZE = 262144; // default 250KB chunks\r\n\r\ninterface FtFmUploadImageProps extends FtConProps, FtFmExtLabelProps {\r\n name?: string;\r\n label?: string;\r\n labClr?: string;\r\n onChange?: () => void;\r\n ftreq?: boolean;\r\n ftreqmsg?: string;\r\n uploadKey: string;\r\n onSuccess?: () => void;\r\n onError?: ( message: string ) => void;\r\n}\r\n\r\n//********************************************************************\r\n// FtFmUploadImage : image uploader/viewer > use inside FtForm only\r\n//\r\n// UPLOAD-PROP DATA_TYPE DESCRIPTION VALUES\r\n// name string field name for data binding, 'md11.field' -\r\n// label string label text -\r\n// labClr string label text color '#'\r\n// onChange function event handler: () => { .. } -\r\n// uploadKey string upload_key to send with chunks so chunks can be assembled at form submit -\r\n// onSuccess function upload success handler: () => void -\r\n// onError function upload error handler: ( message: string ) => void -\r\n//\r\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\r\n// onTap self handler() on tap/click handler function - -\r\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\r\n// ss self string size specification within parent container '' see FtCon docs\r\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\r\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\r\n// flex self int size in main direction in ratio to other children - -\r\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\r\n// w self int/string width, pixels/percentage - -\r\n// h self int/string height, pixels/percentage - -\r\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\r\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\r\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\r\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\r\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \r\n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \r\n// bor self int/array/string Border descriptor, all sides only 0 ',;'\r\n// elev self int elevation shadow 0 0 - 10\r\n// show self int/bool Show/Hide true 0/1/false/true\r\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\r\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\r\n// id self string id attribute to be applied to the outermost View for testing - -\r\n//\r\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\r\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\r\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\r\n// labOnTap self handler() on tap/click handler function - -\r\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\r\n// labSs container string size specification within parent container '' see FtCon docs\r\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\r\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\r\n// labFlex container int size in main direction in ratio to other children - -\r\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\r\n// labW container int/string width, pixels/percentage - -\r\n// labH container int/string height, pixels/percentage - -\r\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\r\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\r\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\r\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\r\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\r\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\r\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \r\n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \r\n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\r\n// labElev container int elevation shadow 0 0 - 10\r\n// labShow container int/bool Show/Hide true 0/1/false/true\r\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\r\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\r\n// labId self string id attribute to be applied to the outermost View for testing - -\r\n//\r\n// Supported validation props:\r\n// PROP DESCRIPTION EXAMPLE\r\n// ftreq input is required \r\n// ftreqmsg custom error message : freq \r\n//\r\n// Notes:\r\n// - control value is bound to repo_key field\r\n// - value will be returned '' if no image uploaded or existing image deleted\r\n// - on successful upload, the uploadKey is returned in bound entity/model field\r\n//\r\n// Example:\r\n// const [ arImageKey , setArImageKey ] = useState( Ft.randomSha256() );\r\n// const [ mdlUploads , setMdlUploads ] = useState( { ar_image_key : null } );\r\n// \r\n//\r\nexport default function FtFmUploadImage(\r\n {\r\n label, labClr,\r\n onChange,\r\n uploadKey, onError, onSuccess,\r\n onTap, onSize,\r\n id, ss, md = 'rw', lt = 'c,a',\r\n flex, inflex, w, h,\r\n bkgClr, bkgClrX, bkgImg, bkgImgX,\r\n pad, padT, padL, padB, padR,\r\n mar, marT, marL, marB, marR,\r\n bor, elev, show, aligni, en = 1,\r\n //- external label props -----\r\n ext, labTxtDescr,\r\n labOnTap, labOnSize,\r\n labSs, labMd, labLt,\r\n labFlex, labInflex, labW, labH,\r\n labBkgClr, labBkgClrX, labBkgImg, labBkgImgX,\r\n labFit, labFitX,\r\n labPad, labPadT, labPadR, labPadB, labPadL,\r\n labMar, labMarT, labMarR, labMarB, labMarL,\r\n labBor, labElev, labShow, labAligni,\r\n labEn, labId,\r\n ...props\r\n }: FtFmUploadImageProps\r\n): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks no conditions here\r\n\r\n //- hooks: state -----\r\n const winDim = useWindowDimensions();\r\n const formCtx = useContext( FtFormContext ) as any;\r\n const { handleChange } = useFormikContext(); // fetch formik context\r\n const [ field , meta ] = useField( props as any );\r\n const [ preview , setPreview ] = useState( null ); // base64 image data, available after upload before submit\r\n const [ uploading , setUploading ] = useState( false );\r\n const [ progress , setProgress ] = useState( 0 );\r\n const [ imgKey , setImgKey ] = useState( '123' );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] ); // empty comparison, force effect to only exec once after first render (ie componentDidMount)\r\n\r\n //====================================================================\r\n // setup and render\r\n\r\n //- compose components & props -----\r\n const { name, value } = field; // unpack from field\r\n const isExt: boolean = Ft.parseResp( ext ?? '0', winDim ) == '1';\r\n const ctlMar: string|undefined = !Ft.e( mar ) ? mar : formCtx.spacing;\r\n const intLabel: JSX.Element = composeIntLabel( isExt );\r\n const extLabel: JSX.Element = composeExtLabel( isExt );\r\n const busy: JSX.Element = composeBusy();\r\n const image: JSX.Element = composeImage();\r\n const btnUpload: JSX.Element = composeBtnUpload();\r\n const btnDelete: JSX.Element = composeBtnDelete();\r\n const conProps: any = composeConProps();\r\n const innerConProps: any = composeInnerConProps();\r\n\r\n //- render control -----\r\n const control: JSX.Element = (\r\n \r\n \r\n {intLabel}\r\n {busy}\r\n {image}\r\n {btnUpload}\r\n {btnDelete}\r\n \r\n {!!meta.error && ({meta.error})}\r\n \r\n );\r\n\r\n //- render final component -----\r\n const comp = isExt ? (<>{extLabel}{control}) : control;\r\n return comp;\r\n\r\n //====================================================================\r\n // event handlers / functions\r\n\r\n function onLoad(): void {}\r\n\r\n /// compose outercon props\r\n function composeConProps(): any\r\n {\r\n const ret: any = { // container properties\r\n id, ss, md, lt,\r\n flex, inflex, w, h,\r\n bkgClr, bkgClrX, bkgImg, bkgImgX,\r\n pad, padT, padL, padB, padR,\r\n mar: ctlMar, marT, marL, marB, marR,\r\n bor, elev, show, aligni, en,\r\n };\r\n return ret;\r\n }\r\n\r\n /// compose inner con props\r\n function composeInnerConProps(): any\r\n {\r\n const ret: any = {\r\n md: 'rw',\r\n lt: 'c,a',\r\n ss: '12',\r\n bor: '1,#999999',\r\n bkgClr: '#ffffff',\r\n pad: '3',\r\n };\r\n return ret;\r\n }\r\n\r\n /// compose external label component\r\n function composeExtLabel( ext: boolean ): JSX.Element\r\n {\r\n if ( !ext ) return (<>);\r\n\r\n const lblProps: any = { // external label\r\n text: !props.ftreq ? label : `${label} *`,\r\n txtDescr: labTxtDescr,\r\n onTap: labOnTap, onSize: labOnSize,\r\n ss: labSs, md: labMd, lt: labLt,\r\n flex: labFlex, inflex: labInflex, w: labW, h: labH,\r\n bkgClr: labBkgClr, bkgClrX: labBkgClrX,\r\n bkgImg: labBkgImg, bkgImgX: labBkgImgX,\r\n fit: labFit, fitX: labFitX,\r\n pad: labPad, padT: labPadT, padR: labPadR, padB: labPadB, padL: labPadL,\r\n mar: labMar, marT: labMarT, marR: labMarR, marB: labMarB, marL: labMarL,\r\n bor: labBor, elev: labElev, show: labShow, aligni: labAligni,\r\n en: labEn, id: labId,\r\n };\r\n return ();\r\n }\r\n\r\n /// compose internal label component\r\n function composeIntLabel( ext: boolean ): JSX.Element\r\n {\r\n if ( ext ) return (<>);\r\n\r\n const lblProps: any = { // internal label\r\n ss: '12',\r\n txtDescr: '12,#49454f',\r\n text: label,\r\n };\r\n return ();\r\n }\r\n\r\n /// compose busy component for when uploading\r\n function composeBusy(): JSX.Element\r\n {\r\n if ( !uploading ) return (<>);\r\n\r\n const ret: JSX.Element = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n return ret;\r\n }\r\n\r\n /// compose image component\r\n /// scenarios:\r\n /// 1. busy uploading : hide image\r\n /// 2. preview is available : show preview image\r\n /// 3. existing image is available : show existing image\r\n /// 4. no image or preview available : show predefined placeholder image\r\n function composeImage(): JSX.Element\r\n {\r\n if ( uploading ) return (<>);\r\n\r\n const imgProps: any = {\r\n ss: '12',\r\n imgFit: 'contain',\r\n key: imgKey,\r\n };\r\n if ( preview != null ) { // image scenario 1: preview is available, after upload but before form submit\r\n imgProps.src = preview;\r\n } else if ( !Ft.e( value ) ) { // image scenario 2: existing image is available, before upload, value == arc_repo.repo_key\r\n imgProps.src = `${FtAppInfo.baseUrl}rapi/arcReadThumb?repo_key=${value}`;\r\n imgProps.onTap = () => Ft.openUrl( `${FtAppInfo.baseUrl}rapi/arcReadImgFile?repo_key=${value}` );\r\n } else { // image scenario 3: no existing image or preview available yet\r\n imgProps.src = im_placeholder;\r\n }\r\n\r\n return ();\r\n }\r\n\r\n /// compose upload button component\r\n function composeBtnUpload(): JSX.Element\r\n {\r\n if ( !en || uploading ) return (<>);\r\n\r\n return ();\r\n }\r\n\r\n /// compose delete button component\r\n function composeBtnDelete(): JSX.Element\r\n {\r\n if ( !en || uploading ) return (<>);\r\n\r\n return ()\r\n }\r\n\r\n /// Handle upload button\r\n async function onTapUpload(): Promise\r\n {\r\n const mimes: string[] = [\r\n 'application/jpg',\r\n 'application/jpeg',\r\n 'application/png',\r\n ];\r\n const config: any = {\r\n copyToCacheDirectory: true,\r\n multiple: false,\r\n type: mimes,\r\n };\r\n\r\n //- run picker -----\r\n try {\r\n const result: DocumentPickerResult = await getDocumentAsync( config );\r\n if ( result.canceled ) return; // happens on mobile only\r\n if ( result.assets.length != 1 ) return;\r\n\r\n const asset: DocumentPickerAsset = result.assets[0];\r\n const arrBuf: ArrayBuffer|undefined = await asset.file?.arrayBuffer();\r\n if ( arrBuf == undefined ) return;\r\n\r\n setProgress( 0 );\r\n setUploading( true );\r\n\r\n //- trigger preview and upload start -----\r\n const chunkCnt: number = Math.floor( ( arrBuf.byteLength + CHUNK_SIZE - 1 ) / CHUNK_SIZE ); // default 250KB chunks\r\n for ( let i = 0; i < chunkCnt; i++ ) {\r\n const ok = await uploadChunk( asset.file!.name, asset.file!.size, asset.mimeType!, i, chunkCnt, arrBuf.slice( i * CHUNK_SIZE, i * CHUNK_SIZE + CHUNK_SIZE ) );\r\n if ( !ok ) {\r\n setUploading( false );\r\n return;\r\n }\r\n }\r\n\r\n enablePreview( asset.file!.name, arrBuf );\r\n setUploading( false );\r\n\r\n //- handle updates to parent form -----\r\n formCtx.childChanged();\r\n handleChange( name )( { target: { name: name, value: uploadKey } } as any );\r\n\r\n //- finish up -----\r\n if ( onSuccess ) onSuccess();\r\n } catch {\r\n if ( onError ) onError( \"Something went wrong while trying to upload the file, please try again or contact support.\" );\r\n }\r\n }\r\n\r\n /// Handle delete button\r\n function onTapDelete(): void\r\n {\r\n formCtx.childChanged();\r\n handleChange( name )( { target: { name: name, value: '' } } as any );\r\n if ( preview ) {\r\n setPreview( null );\r\n setImgKey( Ft.randomStr() ); // force new image component\r\n }\r\n }\r\n\r\n //====================================================================\r\n // utility functions\r\n\r\n function enablePreview( name: string, arrBuf:ArrayBuffer ): void\r\n {\r\n const extension: string = name.toLowerCase().endsWith( 'png' ) ? 'png' : 'jpeg';\r\n const previewData = `data:image/${extension};base64,` + Ft.baToBase64( new Uint8Array( arrBuf ) );\r\n setPreview( previewData );\r\n setImgKey( Ft.randomStr() ); // force new image component\r\n }\r\n\r\n async function uploadChunk(\r\n name: string,\r\n size: number,\r\n mime: string,\r\n chunkIdx: number,\r\n chunkCnt: number,\r\n chunkData: ArrayBuffer\r\n ): Promise\r\n {\r\n //- compose upload data -----\r\n const chunk: ArcUpload = new ArcUpload();\r\n chunk.name = name; // file name\r\n chunk.file_size = size; // complete file size in bytes\r\n chunk.mime = mime; // mime type\r\n chunk.upload_key = uploadKey; // upload key, sha256\r\n chunk.block_index = chunkIdx; // block/chunk index in upload set\r\n chunk.block_size = chunkData.byteLength; // block size, max 102400 bytes or less, convenience field\r\n chunk.block_data = new Uint8Array( chunkData ); // block data\r\n\r\n //- call uploader api -----\r\n const ok = await FtRapi.callNew( \"arcUploadChunk\", {\r\n inRec: chunk,\r\n success: ( result, data ) => setProgress( chunkIdx / chunkCnt ),\r\n error: ( { message } ) => {\r\n if ( onError ) onError( \"An error occurred during upload, please try again or contact support\" );\r\n\r\n }\r\n });\r\n\r\n return ok;\r\n }\r\n\r\n}\r\nFtFmUploadImage.ftcompname = \"FtFmUploadImage\";\r\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtText from '../first/ftText';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtFmTextareaField from '../first/ftFmTextareaField';\nimport FtFmPasswordField from '../first/ftFmPasswordField';\nimport FtFmIntegerField from '../first/ftFmIntegerField';\nimport FtFmDecimalField from '../first/ftFmDecimalField';\nimport FtFmDateField from '../first/ftFmDateField';\nimport FtFmTimeField from '../first/ftFmTimeField';\nimport FtFmCheckboxField from '../first/ftFmCheckboxField';\nimport FtFmDropdownField from '../first/ftFmDropdownField';\nimport FtFmSearchField from '../first/ftFmSearchField';\nimport FtFmUploadImage from '../first/ftFmUploadImage';\nimport FtButton from '../first/ftButton';\nimport FtDataGrid from '../first/ftDataGrid';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\nimport FtSs from '../first/ftSs';\nimport Th from '../general/th';\nimport Ut from '../general/ut';\n\nimport GenLookup from '../models/genLookup';\nimport Pastor from '../models/pastor';\n\n//********************************************************************\n// PagePastorEdit\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PagePastorEdit( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n\n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const { pastorId } = nav.params ?? { pastorId: 0 }; // unpack parameters passed from calling page\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlPastor , setMdlPastor ] = useState( null );\n const [ lkpAssembly , setLkpAssembly ] = useState( [] );\n const [ lkpRegion , setLkpRegion ] = useState( [] );\n const [ photozKey , setPhotozKey ] = useState( Ft.randomSha256() );\n const [ mdlUploads , setMdlUploads ] = useState( { photoz_key : null } );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n\n //====================================================================\n // render\n\n if ( busy || Ft.eAny( mdlPastor, lkpAssembly, lkpRegion, Ut.lkpGender ) ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n \n\n \n \n\n \n \n \n\n \n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n );\n\n //====================================================================\n // event handlers\n\n function onLoad(): void\n {\n //- load lookups -----\n setBusy( true );\n Ut.loadLookups( {\n success: ( result, data ) => setBusy( false ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n FtRapi.callList( 'assemblyLookup', {\n success: ( result, data ) => {\n setLkpAssembly( data[0] );\n setLkpRegion( data[1] );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n\n //- init record -----\n if ( pastorId != 0 ) { // existing record\n FtRapi.callRead( 'pastorRead', pastorId, {\n success: ( result, data ) => {\n mdlUploads.photoz_key = data[1]?.repo_key ?? null;\n setMdlPastor( data[0] );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n } else { // new record\n setMdlPastor( new Pastor() );\n }\n }\n\n function onSave(): void\n {\n setBusy( true );\n if ( pastorId != 0 ) { // existing record\n FtRapi.callUpdate( 'pastorUpdate', pastorId, {\n urlParms: mdlUploads.photoz_key ? { photoz_key : mdlUploads.photoz_key } : null,\n inRec: mdlPastor,\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n } else { // new record\n FtRapi.callNew( 'pastorNew', {\n urlParms: mdlUploads.photoz_key ? { photoz_key : mdlUploads.photoz_key } : null,\n inRec: mdlPastor,\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n }\n\n function onError( message: string ): void\n {\n ftPopupMessage( setPopup, \"Error\", message );\n } \n\n}\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React from 'react';\n// import { VirtualizedList } from 'react-native';\nimport { FtConProps } from './ftTypes';\nimport FtCon from './ftCon';\n\ninterface FtListProps extends FtConProps {\n data?: any[];\n renItem?: ({ item, index }: { item: any; index: number; }) => JSX.Element;\n initCount?: number;\n}\n\n//********************************************************************\n// FtList : react-native VirtualizedList wrapped in FtCon\n//\n// LIST-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// data list array array of objects to display as list [] -\n// renItem list-item handler() render item: ({item,index}) => .. - -\n// initCount list int number of items to render initially 10 -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss container string size specification within parent container '' see FtCon docs\n// flex container int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w container int/string width, pixels/percentage - -\n// h container int/string height, pixels/percentage - -\n// rat container number width to height ratio, ratio = width/height - -\n// bkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg container string/array background image descriptor, must be in assets - , use import or require\n// bkgImgX container string/array background image descriptor when disabled, must be in assets - , use import or require\n// fit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// fitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// pad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor container int/array/string Border descriptor, all sides only 0 ',;'\n// elev container int elevation shadow 0 0 - 10\n// show container int/bool Show/Hide true 0/1/false/true\n// aligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// Notes:\n// - enable scrolling by setting the height (h) or ratio (rat) to a fixed size, otherwise the list height will expand to contain all its data\n//\n// Example:\n// (\n// \n// )}\n// />\n//\nexport default function FtList(\n {\n data, renItem, initCount = 10,\n onTap, onSize,\n ss, flex, inflex, w, h, rat,\n bkgClr, bkgClrX, bkgImg, bkgImgX, fit, fitX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni,\n en, id,\n }: FtListProps\n): JSX.Element\n{\n //- prep container props -----\n const conProps: any = {\n onTap, onSize,\n id, ss, flex, inflex, w, h, rat,\n bkgClr, bkgClrX, bkgImg, bkgImgX, fit, fitX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni,\n en\n };\n\n /*\n // FIX this properly later\n return (\n \n String( index ) }\n getItemCount={ ( data: any ): number => data?.length ?? 0}\n getItem={ ( data: any, index: number ): any => data[index] }\n renderItem={renItem}\n />\n \n );*/\n\n return (\n {data?.map( ( item, index ) => renItem != undefined \n ? renItem( { item: item, index: index } ) \n : (<>) \n )}\n ); \n}\n\nFtList.ftcompname = \"FtList\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React from 'react';\nimport Ionicons from '@expo/vector-icons/Ionicons';\nimport AntDesign from '@expo/vector-icons/AntDesign';\nimport FontAwesome from '@expo/vector-icons/FontAwesome';\nimport MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';\nimport Feather from '@expo/vector-icons/Feather';\nimport Ft from './ft';\nimport { FtConProps } from './ftTypes';\nimport FtCon from './ftCon';\n\ninterface FtIconProps extends FtConProps {\n descr?: string;\n idx?: number;\n}\n\n//********************************************************************\n// FtIcon : expo icon wrapped in FtCon\n//\n// ICON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// descr icon string icon descriptor: ,;[;icon1;icon2] - '24,#0099cc;fa-home'\n// idx icon int icon index to use (0 - 4) 0 0 - 4\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap container handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss container string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex container int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w container int/string width, pixels/percentage - -\n// h container int/string height, pixels/percentage - -\n// rat container number width to height ratio, ratio = width/height - -\n// bkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg container string/array background image descriptor, must be in assets - , use import or require\n// bkgImgX container string/array background image descriptor when disabled, must be in assets - , use import or require\n// fit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// fitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// pad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor container int/array/string Border descriptor, all sides only 0 ',;'\n// elev container int elevation shadow 0 0 - 10\n// show container int/bool Show/Hide true 0/1/false/true\n// aligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// Icon Descriptor:\n// - ,;[;icon1;icon2;..]\n// - size= icon-size, color= #XXXXXXXX, icon= icon-name, icon1= icon-name-index1, icon2= icon-name-index2, ..\n// - icon names: https://oblador.github.io/react-native-vector-icons/\n// - - ad-* : AntDesign\n// - - fa-* : FontAwesome\n// - - ii-* : Ionicons\n// - - mc-* : MaterialCommunityIcons\n// - - ft-* : Feather\n// - '24,#0099cc;fa-home'\n// - '24,#0099cc;fa-chevron-right;fa-chevron-down'\n//\n// Example: \n//\nexport default function FtIcon(\n { \n descr, idx = 0,\n onTap, onSize,\n id, ss, md, lt, \n flex, inflex, w, h, rat,\n bkgClr, bkgClrX, bkgImg, bkgImgX, fit, fitX,\n pad, padT, padL, padB, padR, \n mar, marT, marL, marB, marR, \n bor, elev, show, aligni, \n en \n }: FtIconProps\n): JSX.Element \n{\n //- prep icon props -----\n const { lib, ...iconProps } = Ft.parseIconDescr( descr, idx );\n let iconComp: JSX.Element = (<>);\n switch ( lib ) {\n case 'ad': iconComp = (); break;\n case 'fa': iconComp = (); break;\n case 'ii': iconComp = (); break;\n case 'mc': iconComp = (); break;\n case 'ft': iconComp = (); break;\n }\n\n //- prep container props -----\n const conProps: any = { \n onTap, onSize,\n id, ss, md, lt, \n flex, inflex, w, h, rat,\n bkgClr, bkgClrX, bkgImg, bkgImgX, fit, fitX,\n pad, padT, padL, padB, padR, \n mar, marT, marL, marB, marR, \n bor, elev, show, aligni, \n en\n };\n return (\n {iconComp}\n );\n}\n\nFtIcon.ftcompname = \"FtIcon\";\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React from 'react';\nimport { ImageSourcePropType } from 'react-native';\nimport Ft from './ft';\nimport { FtConProps } from './ftTypes';\nimport FtCon from './ftCon';\nimport FtText from './ftText';\nimport FtIcon from './ftIcon';\n\ninterface FtTextIconsProps extends FtConProps {\n //- text-props -----\n text?: string;\n txtDescr?: string;\n onTapText?: () => void;\n txtSs?: string;\n txtMd?: string;\n txtLt?: string;\n txtFlex?: number;\n txtInflex?: number;\n txtW?: number|string;\n txtH?: number|string;\n txtBkgClr?: string;\n txtBkgClrX?: string;\n txtBkgImg?: ImageSourcePropType;\n txtBkgImgX?: ImageSourcePropType;\n txtFit?: string;\n txtFitX?: string;\n txtPad?: number|number[]|string;\n txtPadT?: number|string;\n txtPadB?: number|string;\n txtPadL?: number|string;\n txtPadR?: number|string;\n txtMar?: number|number[]|string;\n txtMarT?: number|string;\n txtMarB?: number|string;\n txtMarL?: number|string;\n txtMarR?: number|string;\n txtBor?: number|number[]|string;\n txtElev?: number;\n txtShow?: number|boolean;\n txtAligni?: string;\n txtEn?: number|boolean;\n //- icon-props -----\n icDescrL1?: string;\n icDescrL2?: string;\n icDescrL3?: string;\n icDescrR1?: string;\n icDescrR2?: string;\n icDescrR3?: string;\n onTapIconL1?: () => void;\n onTapIconL2?: () => void;\n onTapIconL3?: () => void;\n onTapIconR1?: () => void;\n onTapIconR2?: () => void;\n onTapIconR3?: () => void;\n icIdxL1?: number;\n icIdxL2?: number;\n icIdxL3?: number;\n icIdxR1?: number;\n icIdxR2?: number;\n icIdxR3?: number;\n icMd?: string;\n icLt?: string;\n icFlex?: number;\n icInflex?: number;\n icW?: number|string;\n icH?: number|string;\n icRat?: number;\n icBkgClr?: string;\n icBkgClrX?: string;\n icBkgImg?: ImageSourcePropType;\n icBkgImgX?: ImageSourcePropType;\n icFit?: string;\n icFitX?: string;\n icPad?: number|number[]|string;\n icPadT?: number|string;\n icPadB?: number|string;\n icPadL?: number|string;\n icPadR?: number|string;\n icMar?: number|number[]|string;\n icMarT?: number|string;\n icMarB?: number|string;\n icMarL?: number|string;\n icMarR?: number|string;\n icBor?: number|number[]|string;\n icElev?: number;\n icShow?: number|boolean;\n icAligni?: string;\n icEn?: number|boolean;\n}\n\n//********************************************************************\n// FtTextIcons : FtCon containing text and multiple leading/trailing icons\n//\n// TEXT-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// text text string text to display -\n// txtDescr text string text styling descriptor ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n//\n// onTapText text-container handler() on tap/click handler function - -\n// txtSs text-container string size specification within parent container '' see FtCon docs\n// txtMd text-container string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// txtLt text-container string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// txtFlex text-container int size in main direction in ratio to other children - -\n// txtInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// txtW text-container int/string width, pixels/percentage - -\n// txtH text-container int/string height, pixels/percentage - -\n// txtBkgClr text-container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// txtBkgClrX text-container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// txtBkgImg text-container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// txtBkgImgX text-container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// txtFit text-container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// txtFitX text-container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// txtPad/* text-container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// txtMar/* text-container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// txtBor text-container int/array/string Border descriptor, all sides only 0 ',;'\n// txtElev text-container int elevation shadow 0 0 - 10\n// txtShow text-container int/bool Show/Hide true 0/1/false/true\n// txtAligni text-container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// txtEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n//\n// ICON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// icDescrL1 icon string Left 1: icon descriptor: ,;[;icon1;icon2] - '24,#0099cc;fa-home'\n// icDescrL2 icon string Left 2: icon descriptor: ,;[;icon1;icon2] - '24,#0099cc;fa-home'\n// icDescrL3 icon string Left 3: icon descriptor: ,;[;icon1;icon2] - '24,#0099cc;fa-home'\n// icDescrR1 icon string Right 1: icon descriptor: ,;[;icon1;icon2] - '24,#0099cc;fa-home'\n// icDescrR2 icon string Right 2: icon descriptor: ,;[;icon1;icon2] - '24,#0099cc;fa-home'\n// icDescrR3 icon string Right 3: icon descriptor: ,;[;icon1;icon2] - '24,#0099cc;fa-home'\n// onTapIconL1 icon handler() Left 1: on tap/click handler function - -\n// onTapIconL2 icon handler() Left 2: on tap/click handler function - -\n// onTapIconL3 icon handler() Left 3: on tap/click handler function - -\n// onTapIconR1 icon handler() Right 1: on tap/click handler function - -\n// onTapIconR2 icon handler() Right 2: on tap/click handler function - -\n// onTapIconR3 icon handler() Right 3: on tap/click handler function - -\n// icIdxL1 icon int Left 1: icon index to use (0 - 4) 0 0 - 4\n// icIdxL2 icon int Left 2: icon index to use (0 - 4) 0 0 - 4\n// icIdxL3 icon int Left 3: icon index to use (0 - 4) 0 0 - 4\n// icIdxR1 icon int Right 1: icon index to use (0 - 4) 0 0 - 4\n// icIdxR2 icon int Right 2: icon index to use (0 - 4) 0 0 - 4\n// icIdxR3 icon int Right 3: icon index to use (0 - 4) 0 0 - 4\n//\n// icMd icon-container string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// icLt icon-container string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// icFlex icon-container int size in main direction in ratio to other children - -\n// icInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// icW icon-container int/string width, pixels/percentage - -\n// icH icon-container int/string height, pixels/percentage - -\n// icRat icon-container number width to height ratio, ratio = width/height - -\n// icBkgClr icon-container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// icBkgClrX icon-container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// icBkgImg icon-container string/array background image descriptor, must be in assets - , use import or require\n// icBkgImgX icon-container string/array background image descriptor when disabled, must be in assets - , use import or require\n// icFit icon-container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// icFitX icon-container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// icPad/* icon-container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// icMar/* icon-container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// icBor icon-container int/array/string Border descriptor, all sides only 0 ',;'\n// icElev icon-container int elevation shadow 0 0 - 10\n// icShow icon-container int/bool Show/Hide true 0/1/false/true\n// icAligni icon-container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// icEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n//\n// FTCON_PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss container string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex container int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w container int/string width, pixels/percentage - -\n// h container int/string height, pixels/percentage - -\n// rat container number width to height ratio, ratio = width/height - -\n// bkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg container string/array background image descriptor, must be in assets - , use import or require\n// bkgImgX container string/array background image descriptor when disabled, must be in assets - , use import or require\n// fit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// fitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// pad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor container int/array/string Border descriptor, all sides only 0 ',;'\n// elev container int elevation shadow 0 0 - 10\n// show container int/bool Show/Hide true 0/1/false/true\n// aligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// Notes:\n// - Use W in txtDescr to allow text to wrap or cut-off with ...\n// eg. '20,WC#ffffff' > text will wrap to next line expanding text-container downward\n// '20,C#ffffff' > text will cut-off with ... at end of available horizontal space\n//\n// Icon Descriptor:\n// - ,;[;icon1;icon2;..]\n// - size= icon-size, color= #XXXXXXXX, icon= icon-name, icon1= icon-name-index1, icon2= icon-name-index2, ..\n// - icon names: https://oblador.github.io/react-native-vector-icons/\n// - - ad-* : AntDesign\n// - - fa-* : FontAwesome\n// - - ii-* : Ionicons\n// - - mc-* : MaterialCommunityIcons\n// - '24,#0099cc;fa-home'\n// - '24,#0099cc;fa-chevron-right;fa-chevron-down'\n//\n// Example:\n// \n//\nexport default function FtTextIcons(\n {\n //- text props -----\n text, txtDescr, onTapText,\n txtSs, txtMd = 'c', txtLt,\n txtFlex = 1, txtInflex, txtW, txtH, txtBkgClr, txtBkgClrX, txtBkgImg, txtBkgImgX, txtFit, txtFitX,\n txtPad, txtPadT, txtPadL, txtPadB, txtPadR,\n txtMar, txtMarT, txtMarL, txtMarB, txtMarR,\n txtBor, txtElev, txtShow, txtAligni, txtEn,\n //- icon props -----\n icDescrL1, icDescrL2, icDescrL3, icDescrR1, icDescrR2, icDescrR3,\n onTapIconL1, onTapIconL2, onTapIconL3, onTapIconR1, onTapIconR2, onTapIconR3,\n icIdxL1, icIdxL2, icIdxL3, icIdxR1, icIdxR2, icIdxR3,\n icMd, icLt,\n icFlex, icInflex, icW, icH, icRat, icBkgClr, icBkgClrX, icBkgImg, icBkgImgX, icFit, icFitX,\n icPad, icPadT, icPadL, icPadB, icPadR,\n icMar, icMarT, icMarL, icMarB, icMarR,\n icBor, icElev, icShow, icAligni,\n icEn,\n //- container props -----\n onSize,\n ss, md = 'r', lt = 'c,a',\n flex, inflex, w, h, rat, bkgClr, bkgClrX, bkgImg, bkgImgX, fit, fitX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni,\n en, id,\n }: FtTextIconsProps\n): JSX.Element\n{\n //- compose container -----\n let iconL1: JSX.Element = (<>);\n if ( !Ft.e(icDescrL1) ) {\n iconL1 = ();\n }\n let iconL2: JSX.Element = (<>);\n if ( !Ft.e(icDescrL2) ) {\n iconL2 = ();\n }\n let iconL3: JSX.Element = (<>);\n if ( !Ft.e(icDescrL3) ) {\n iconL3 = ();\n }\n let iconR1: JSX.Element = (<>);\n if ( !Ft.e(icDescrR1) ) {\n iconR1 = ();\n }\n let iconR2: JSX.Element = (<>);\n if ( !Ft.e(icDescrR2) ) {\n iconR2 = ();\n }\n let iconR3: JSX.Element = (<>);\n if ( !Ft.e(icDescrR3) ) {\n iconR3 = ();\n }\n\n //- render View -----\n return (\n \n {iconL1}{iconL2}{iconL3}\n \n {iconR3}{iconR2}{iconR1}\n \n );\n}\nFtTextIcons.ftcompname = \"FtTextIcons\";\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtText from '../first/ftText';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtList from '../first/ftList';\nimport FtTextIcons from '../first/ftTextIcons';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport Th from '../general/th';\n\nimport Pastor from '../models/pastor';\n\n//********************************************************************\n// PagePastorSearchMob\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PagePastorSearchMob( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n\n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlPastor , setMdlPastor ] = useState( new Pastor() );\n const [ lstPastor , setLstPastor ] = useState( [] );\n\n //- hooks: effect/startup -----\n // useEffect( onLoad, [] );\n\n //====================================================================\n // render\n\n if ( busy ) return ftBusy( { popup: popup } );\n\n const lbl = { \n ss: '4' ,\n bkgClr: '#ffffff',\n pad: '3,6,3,3',\n txtDescr: '18,LO#606060',\n just: 'Z,A',\n };\n const fld = { \n ss: '8' ,\n bkgClr: '#ffffff',\n pad: '3',\n txtDescr: '16,L#000000', \n };\n\n return (\n {popup}\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n (\n \n onTapPastorDetails( item.id )}\n onTapIconR1={() => onTapPastorDetails( item.id )}\n />\n \n \n \n \n \n \n \n \n \n \n \n )}\n />\n \n\n );\n\n //====================================================================\n // event handlers\n\n function onSearch(): void\n {\n setBusy( true );\n setLstPastor( [] );\n FtRapi.callList( 'pastorSearch', {\n urlParms: {\n prm_member_no : mdlPastor?.member_no,\n prm_surname : mdlPastor?.surname,\n prm_first_name : mdlPastor?.first_name,\n prm_assembly_id : mdlPastor?.assembly_id,\n prm_region_id : mdlPastor?.region_id,\n prm_pastor_status : mdlPastor?.pastor_status,\n },\n success: ( result, data ) => setLstPastor( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n\n function onTapPastorDetails( pastorId: Number ): void\n {\n nav.push( 'PastorDetailMob', { pastorId: pastorId } );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtFmUploadImage from '../first/ftFmUploadImage';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtFmTextareaField from '../first/ftFmTextareaField';\nimport FtFmIntegerField from '../first/ftFmIntegerField';\nimport FtFmDateField from '../first/ftFmDateField';\nimport FtFmTimeField from '../first/ftFmTimeField';\nimport FtFmCheckboxField from '../first/ftFmCheckboxField';\nimport FtFmDropdownField from '../first/ftFmDropdownField';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport Th from '../general/th';\nimport Ut from '../general/ut';\n\nimport GenLookup from '../models/genLookup';\nimport Pastor from '../models/pastor';\n\n\n//********************************************************************\n// PagePastorDetailMob\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PagePastorDetailMob( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n \n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const { pastorId } = nav.params ?? { pastorId: 0 }; \n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlPastor , setMdlPastor ] = useState( null );\n const [ lkpAssembly , setLkpAssembly ] = useState( [] );\n const [ lkpRegion , setLkpRegion ] = useState( [] );\n const [ mdlUploads , setMdlUploads ] = useState( { photoz_key : null } ); \n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n \n if ( busy || Ft.eAny( mdlPastor, Ut.lkpGender, lkpAssembly, lkpRegion ) ) return ftBusy( { popup: popup } );\n\n const ctrlPhoto: any = {\n ss: '2:8',\n pad: '3',\n ext: '0',\n };\n\n return (\n {popup}\n\n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n );\n\n //====================================================================\n // event handlers\n\n function onLoad(): void \n {\n //- load lookups -----\n setBusy( true );\n Ut.loadLookups( {\n success: ( result, data ) => setBusy( false ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n }); \n FtRapi.callList( 'assemblyLookup', {\n success: ( result, data ) => {\n setLkpAssembly( data[0] );\n setLkpRegion( data[1] );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n }); \n\n //- init record -----\n if ( pastorId != 0 ) { // existing record\n FtRapi.callRead( 'pastorRead', pastorId, {\n success: ( result, data ) => {\n mdlUploads.photoz_key = data[1]?.repo_key;\n setMdlPastor( data[0] );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n }); \n } else { // new record\n ftPopupMessage( setPopup, \"Error\", \"Pastor not found, please try again.\", { onClose: nav.pop } )\n } \n }\n\n}\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtText from '../first/ftText';\nimport FtButton from '../first/ftButton';\nimport FtDataGrid from '../first/ftDataGrid';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\nimport Th from '../general/th';\n\nimport Pastor from '../models/pastor';\nimport PastorQualification from '../models/pastorQualification';\n\n//********************************************************************\n// PageQualificationSearch\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PageQualificationSearch( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n \n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const { pastorId } = nav.params ?? { pastorId: 0 };\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ pnPastor , setPnPastor ] = useState( null );\n const [ lstQualification , setLstQualification ] = useState( [] as PastorQualification[] );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n \n if ( busy || Ft.eAny( pnPastor )) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n );\n\n //====================================================================\n // event handlers\n \n function onLoad(): void \n { \n setBusy( true );\n FtRapi.callRead( 'pastorRead', pastorId, {\n success: ( result, data ) => {\n setPnPastor( data[0] );\n onSearch();\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { btn: \"Close\", onClose: () => nav.pop() } ), \n complete: () => setBusy( false ),\n });\n }\n\n function onSearch(): void\n {\n setLstQualification( [] );\n setBusy( true );\n FtRapi.callList( 'pastorQualificationSearch', {\n urlParms: { prm_pastor_id: pastorId },\n success: ( result, data ) => setLstQualification( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n\n function onTapPastorQualificationEdit( { dataId }: FtDgAction ): void\n {\n nav.push( 'QualificationEdit', { pastorId: pastorId, qualId: dataId } );\n }\n\n function onTapPastorQualificationDelete( { dataId }: FtDgAction ): void\n {\n ftPopupConfirm( setPopup, 'Confirmation', \"Are you sure you want to delete this record?\", {\n btnA: 'Yes', onA: () => {\n setLstQualification( [] );\n setBusy( true );\n FtRapi.callDelete( 'pastorQualificationDelete', dataId, {\n success: ( { message }, data ) => {\n ftPopupMessage( setPopup, \"Success\", message, { onClose: onSearch } );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n },\n btnB: 'No', onB: () => {}\n });\n }\n \n function onClickNewQualification(): void\n {\n nav.push( 'QualificationEdit', { pastorId: pastorId, qualId: 0 } );\n }\n\n}\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtText from '../first/ftText';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtFmTextareaField from '../first/ftFmTextareaField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\n\r\nimport Pastor from '../models/pastor';\r\nimport PastorQualification from '../models/pastorQualification';\r\n\r\n//********************************************************************\r\n// PageQualificationEdit\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageQualificationEdit( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const { pastorId, qualId } = nav.params ?? { pastorId: 0, qualId: 0 }; // unpack parameters passed from calling page\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ pnPastor , setPnPastor ] = useState( null );\r\n const [ mdlQual , setMdlQual ] = useState( null );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( mdlQual, pnPastor ) ) return ftBusy( { popup: popup } );\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n setBusy( true );\r\n if ( qualId != 0 ) { // existing record\r\n FtRapi.callRead( 'pastorQualificationRead', qualId, {\r\n success: ( result, data ) => {\r\n setMdlQual( data[0] );\r\n setPnPastor( data[1] );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n } else { // new record\r\n FtRapi.callRead( 'pastorRead', pastorId, {\r\n success: ( result, data ) => {\r\n setPnPastor( data[0] );\r\n const rec = new PastorQualification();\r\n rec.pastor_id = pastorId;\r\n setMdlQual( rec );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { btn: \"Close\", onClose: () => nav.pop() } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n }\r\n\r\n function onSave(): void\r\n {\r\n setBusy( true );\r\n if ( qualId != 0 ) { // existing record\r\n FtRapi.callUpdate( 'pastorQualificationUpdate', qualId, {\r\n inRec: mdlQual,\r\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n } else { // new record\r\n FtRapi.callNew( 'pastorQualificationNew', {\r\n inRec: mdlQual,\r\n success: ( { message }, data ) => {\r\n ftPopupMessage( setPopup, \"Success\", message );\r\n const rec = new PastorQualification();\r\n rec.pastor_id = pastorId;\r\n setMdlQual( rec );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n }\r\n}","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtText from '../first/ftText';\nimport FtButton from '../first/ftButton';\nimport FtDataGrid from '../first/ftDataGrid';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\nimport Th from '../general/th';\n\nimport Pastor from '../models/pastor';\nimport ArcRepo from '../models/arcRepo';\n\n//********************************************************************\n// PagePastorFileSearch\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PagePastorFileSearch( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n \n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const { pastorId } = nav.params ?? { pastorId: 0 };\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ pnPastor , setPnPastor ] = useState( null );\n const [ lstRepo , setLstRepo ] = useState( [] );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n \n if ( busy || Ft.eAny( pnPastor )) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n\n );\n\n //====================================================================\n // event handlers\n \n function onLoad(): void \n { \n setBusy( true );\n FtRapi.callRead( 'pastorRead', pastorId, {\n success: ( result, data ) => {\n setPnPastor( data[0] );\n onSearch();\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { btn: \"Close\", onClose: () => nav.pop() } ), \n complete: () => setBusy( false ),\n });\n }\n\n function onSearch(): void\n {\n setLstRepo( [] );\n setBusy( true );\n FtRapi.callList( 'pastorFileSearch', {\n urlParms: { prm_pastor_id: pastorId },\n success: ( result, data ) => setLstRepo( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n\n function onTapFileDelete( { dataId }: FtDgAction ): void\n {\n ftPopupConfirm( setPopup, 'Confirmation', \"Are you sure you want to delete this record?\", {\n btnA: 'Yes', onA: () => {\n setLstRepo( [] );\n setBusy( true );\n FtRapi.callDelete( 'pastorFileDelete', dataId, {\n success: ( { message }, data ) => {\n ftPopupMessage( setPopup, \"Success\", message, { onClose: onSearch } );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n },\n btnB: 'No', onB: () => {}\n });\n }\n \n function onClickNewFile(): void\n {\n nav.push( 'PastorFileEdit', { pastorId: pastorId } );\n }\n\n function onTapDownload( { dataItem }: FtDgAction ): void\n {\n FtRapi.callUrl( 'arcReadImgFile', { repo_key: dataItem.repo_key } );\n }\n\n}\n","/// FIRST: Framework Insuring Rapid Systems Typing\r\n///\r\n/// Copyright (c) 2024 Jaco Bekker T/A LightSoft\r\nimport React, { useContext, useState, useEffect } from 'react';\r\nimport { useWindowDimensions } from 'react-native';\r\nimport { useField, useFormikContext } from 'formik';\r\nimport { HelperText, ActivityIndicator, ProgressBar } from 'react-native-paper';\r\nimport { getDocumentAsync, DocumentPickerResult, DocumentPickerAsset } from 'expo-document-picker';\r\nimport type { FtConProps, FtFmExtLabelProps } from './ftTypes';\r\nimport FtAppInfo from './ftAppInfo';\r\nimport Ft from './ft';\r\nimport FtRapi from './ftRapi';\r\nimport FtCon from './ftCon';\r\nimport FtText from './ftText';\r\nimport FtButton from './ftButton';\r\nimport FtSpacer from './ftSpacer';\r\nimport { FtFormContext } from './ftForm';\r\n\r\nimport ArcUpload from '../models/arcUpload';\r\n\r\nconst CHUNK_SIZE = 262144; // default 250KB chunks\r\n\r\ninterface FtFmUploadFileProps extends FtConProps, FtFmExtLabelProps {\r\n name?: string;\r\n label?: string;\r\n labClr?: string;\r\n onChange?: () => void;\r\n title?: string|null,\r\n ftreq?: boolean;\r\n ftreqmsg?: string;\r\n uploadKey: string;\r\n onSuccess?: () => void;\r\n onError?: ( message: string ) => void;\r\n}\r\n\r\n//********************************************************************\r\n// FtFmUploadFile : file uploader/viewer > use inside FtForm only\r\n//\r\n// UPLOAD-PROP DATA_TYPE DESCRIPTION VALUES\r\n// name string field name for data binding, 'md11.field' -\r\n// label string label text -\r\n// labClr string label text color '#'\r\n// onChange function event handler: () => { .. } -\r\n// title string|null existing file title for preview -\r\n// uploadKey string upload_key to send with chunks so chunks can be assembled afterwards -\r\n// onSuccess function upload success handler: () => void -\r\n// onError function upload error handler: ( message: string ) => void -\r\n//\r\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\r\n// onTap self handler() on tap/click handler function - -\r\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\r\n// ss self string size specification within parent container '' see FtCon docs\r\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\r\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\r\n// flex self int size in main direction in ratio to other children - -\r\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\r\n// w self int/string width, pixels/percentage - -\r\n// h self int/string height, pixels/percentage - -\r\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\r\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\r\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\r\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\r\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \r\n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \r\n// bor self int/array/string Border descriptor, all sides only 0 ',;'\r\n// elev self int elevation shadow 0 0 - 10\r\n// show self int/bool Show/Hide true 0/1/false/true\r\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\r\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\r\n// id self string id attribute to be applied to the outermost View for testing - -\r\n//\r\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\r\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\r\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\r\n// labOnTap self handler() on tap/click handler function - -\r\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\r\n// labSs container string size specification within parent container '' see FtCon docs\r\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\r\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\r\n// labFlex container int size in main direction in ratio to other children - -\r\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\r\n// labW container int/string width, pixels/percentage - -\r\n// labH container int/string height, pixels/percentage - -\r\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\r\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\r\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\r\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\r\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\r\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\r\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \r\n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \r\n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\r\n// labElev container int elevation shadow 0 0 - 10\r\n// labShow container int/bool Show/Hide true 0/1/false/true\r\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\r\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\r\n// labId self string id attribute to be applied to the outermost View for testing - -\r\n//\r\n// Supported validation props:\r\n// PROP DESCRIPTION EXAMPLE\r\n// ftreq input is required \r\n// ftreqmsg custom error message : freq \r\n//\r\n// Notes:\r\n// - control value is bound to repo_key field\r\n// - value will be returned '' if no image uploaded or existing image deleted\r\n// - on successful upload, the uploadKey is returned in bound entity/model field\r\n//\r\n// Example:\r\n// const [ mdlUploads , setMdlUploads ] = useState( { ar_file_key : null } );\r\n// const [ arFileKey , setArFileKey ] = useState( Ft.randomSha256() );\r\n// \r\n//\r\nexport default function FtFmUploadFile(\r\n {\r\n label, labClr,\r\n onChange,\r\n title, uploadKey, onError, onSuccess,\r\n onTap, onSize,\r\n id, ss, md = 'rw', lt = 'c,a',\r\n flex, inflex, w, h,\r\n bkgClr, bkgClrX, bkgImg, bkgImgX,\r\n pad, padT, padL, padB, padR,\r\n mar, marT, marL, marB, marR,\r\n bor, elev, show, aligni, en = 1,\r\n //- external label props -----\r\n ext, labTxtDescr,\r\n labOnTap, labOnSize,\r\n labSs, labMd, labLt,\r\n labFlex, labInflex, labW, labH,\r\n labBkgClr, labBkgClrX, labBkgImg, labBkgImgX,\r\n labFit, labFitX,\r\n labPad, labPadT, labPadR, labPadB, labPadL,\r\n labMar, labMarT, labMarR, labMarB, labMarL,\r\n labBor, labElev, labShow, labAligni,\r\n labEn, labId,\r\n ...props\r\n }: FtFmUploadFileProps\r\n): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks no conditions here\r\n\r\n //- hooks: state -----\r\n const winDim = useWindowDimensions();\r\n const formCtx = useContext( FtFormContext ) as any;\r\n const { handleChange } = useFormikContext(); // fetch formik context\r\n const [ field , meta ] = useField( props as any );\r\n const [ preview , setPreview ] = useState( null ); // name of file uloaded, available after upload before submit\r\n const [ uploading , setUploading ] = useState( false );\r\n const [ progress , setProgress ] = useState( 0 );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] ); // empty comparison, force effect to only exec once after first render (ie componentDidMount)\r\n\r\n //====================================================================\r\n // setup and render\r\n\r\n //- compose components & props -----\r\n const { name, value } = field; // unpack from field\r\n const isExt: boolean = Ft.parseResp( ext ?? '0', winDim ) == '1';\r\n const ctlMar: string|undefined = !Ft.e( mar ) ? mar : formCtx.spacing;\r\n const intLabel: JSX.Element = composeIntLabel( isExt );\r\n const extLabel: JSX.Element = composeExtLabel( isExt );\r\n const busy: JSX.Element = composeBusy();\r\n const filetext: JSX.Element = composeFiletext();\r\n const btnView: JSX.Element = composeBtnView();\r\n const btnUpload: JSX.Element = composeBtnUpload();\r\n const btnDelete: JSX.Element = composeBtnDelete();\r\n const conProps: any = composeConProps();\r\n const innerConProps: any = composeInnerConProps();\r\n\r\n //- render control -----\r\n const control: JSX.Element = (\r\n \r\n \r\n {intLabel}\r\n {busy}\r\n {filetext}\r\n {btnView}\r\n {btnUpload}\r\n {btnDelete}\r\n \r\n {!!meta.error && ({meta.error})}\r\n \r\n );\r\n\r\n //- render final component -----\r\n const comp = isExt ? (<>{extLabel}{control}) : control;\r\n return comp;\r\n\r\n //====================================================================\r\n // event handlers / functions\r\n\r\n function onLoad(): void {}\r\n\r\n /// compose outercon props\r\n function composeConProps(): any\r\n {\r\n const ret: any = { // container properties\r\n id, ss, md, lt,\r\n flex, inflex, w, h,\r\n bkgClr, bkgClrX, bkgImg, bkgImgX,\r\n pad, padT, padL, padB, padR,\r\n mar: ctlMar, marT, marL, marB, marR,\r\n bor, elev, show, aligni, en,\r\n };\r\n return ret;\r\n }\r\n\r\n /// compose inner con props\r\n function composeInnerConProps(): any\r\n {\r\n const ret: any = {\r\n md: 'r',\r\n lt: 'a,c',\r\n ss: '12',\r\n bor: '1,#999999',\r\n bkgClr: '#ffffff',\r\n pad: '3',\r\n };\r\n return ret;\r\n }\r\n\r\n /// compose external label component\r\n function composeExtLabel( ext: boolean ): JSX.Element\r\n {\r\n if ( !ext ) return (<>);\r\n\r\n const lblProps: any = { // external label\r\n text: !props.ftreq ? label : `${label} *`,\r\n txtDescr: labTxtDescr,\r\n onTap: labOnTap, onSize: labOnSize,\r\n ss: labSs, md: labMd, lt: labLt,\r\n flex: labFlex, inflex: labInflex, w: labW, h: labH,\r\n bkgClr: labBkgClr, bkgClrX: labBkgClrX,\r\n bkgImg: labBkgImg, bkgImgX: labBkgImgX,\r\n fit: labFit, fitX: labFitX,\r\n pad: labPad, padT: labPadT, padR: labPadR, padB: labPadB, padL: labPadL,\r\n mar: labMar, marT: labMarT, marR: labMarR, marB: labMarB, marL: labMarL,\r\n bor: labBor, elev: labElev, show: labShow, aligni: labAligni,\r\n en: labEn, id: labId,\r\n };\r\n return ();\r\n }\r\n\r\n /// compose internal label component\r\n function composeIntLabel( ext: boolean ): JSX.Element\r\n {\r\n if ( ext ) return (<>);\r\n\r\n const lblProps: any = { // internal label\r\n ss: '12',\r\n txtDescr: '12,#49454f',\r\n text: label,\r\n };\r\n return ();\r\n }\r\n\r\n /// compose busy component for when uploading\r\n function composeBusy(): JSX.Element\r\n {\r\n if ( !uploading ) return (<>);\r\n\r\n const ret: JSX.Element = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n return ret;\r\n }\r\n\r\n /// compose file view component\r\n /// scenarios:\r\n /// 1. busy uploading : hide name\r\n /// 2. preview is available : show file name\r\n /// 3. existing file is available : show existing file name\r\n /// 4. no file or preview available : show predefined placeholder text\r\n function composeFiletext(): JSX.Element\r\n {\r\n if ( uploading ) return (<>);\r\n\r\n const txtProps: any = {\r\n md: 'r',\r\n lt: 'a,c',\r\n flex: 1,\r\n bkgClr: '#ffffff',\r\n pad: '5',\r\n txtDescr: '14,L#000000',\r\n icPad: '0,0,0,14',\r\n };\r\n\r\n if ( preview != null ) { // scenario 1: preview is available, after upload but before form submit\r\n txtProps.text = preview;\r\n } else if ( !Ft.e( value ) ) { // scenario 2: existing file is available, before upload, value == arc_repo.repo_key\r\n txtProps.text = title;\r\n } else { // scenario 3: no existing file or preview available yet\r\n txtProps.text = \"No file uploaded yet...\";\r\n }\r\n\r\n return ();\r\n }\r\n\r\n /// compose view button component\r\n function composeBtnView(): JSX.Element\r\n {\r\n if ( uploading || preview || Ft.e( value ) ) return (<>); // don't show while busy upload or no existing file\r\n\r\n return ();\r\n }\r\n\r\n /// compose upload button component\r\n function composeBtnUpload(): JSX.Element\r\n {\r\n if ( !en || uploading ) return (<>);\r\n\r\n return ();\r\n }\r\n \r\n /// compose delete button component\r\n function composeBtnDelete(): JSX.Element\r\n {\r\n if ( !en || uploading ) return (<>); // don't show delete when disabled or busy uploading\r\n\r\n return ();\r\n } \r\n\r\n /// handle view tap to open document in new tab\r\n /// NB: this should only be called when existing file exists, won't work for preview\r\n function onTapView(): void\r\n {\r\n Ft.openUrl( `${FtAppInfo.baseUrl}rapi/arcReadImgFile?repo_key=${value}` );\r\n }\r\n\r\n /// Handle upload button\r\n async function onTapUpload(): Promise\r\n {\r\n const config: any = {\r\n copyToCacheDirectory: true,\r\n multiple: false,\r\n };\r\n\r\n //- run picker -----\r\n try {\r\n const result: DocumentPickerResult = await getDocumentAsync( config );\r\n if ( result.canceled ) return; // happens on mobile only\r\n if ( result.assets.length != 1 ) return;\r\n\r\n const asset: DocumentPickerAsset = result.assets[0];\r\n const arrBuf: ArrayBuffer|undefined = await asset.file?.arrayBuffer();\r\n if ( arrBuf == undefined ) return;\r\n\r\n setProgress( 0 );\r\n setUploading( true );\r\n\r\n //- trigger preview and upload start -----\r\n const chunkCnt: number = Math.floor( ( arrBuf.byteLength + CHUNK_SIZE - 1 ) / CHUNK_SIZE ); // default 250KB chunks\r\n for ( let i = 0; i < chunkCnt; i++ ) {\r\n const ok = await uploadChunk( asset.file!.name, asset.file!.size, asset.mimeType!, i, chunkCnt, arrBuf.slice( i * CHUNK_SIZE, i * CHUNK_SIZE + CHUNK_SIZE ) );\r\n if ( !ok ) {\r\n setUploading( false );\r\n return;\r\n }\r\n }\r\n \r\n setPreview( asset.file!.name );\r\n setUploading( false );\r\n\r\n //- handle updates to parent form -----\r\n formCtx.childChanged();\r\n handleChange( name )( { target: { name: name, value: uploadKey } } as any );\r\n\r\n //- finish up -----\r\n if ( onSuccess ) onSuccess();\r\n } catch {\r\n if ( onError ) onError( \"Something went wrong while trying to upload the file, please try again or contact support.\" );\r\n }\r\n }\r\n\r\n /// Handle delete button\r\n function onTapDelete(): void\r\n {\r\n formCtx.childChanged();\r\n handleChange( name )( { target: { name: name, value: '' } } as any );\r\n if ( preview ) \r\n setPreview( null );\r\n }\r\n\r\n //====================================================================\r\n // utility functions\r\n\r\n async function uploadChunk(\r\n name: string,\r\n size: number,\r\n mime: string,\r\n chunkIdx: number,\r\n chunkCnt: number,\r\n chunkData: ArrayBuffer\r\n ): Promise\r\n {\r\n //- compose upload data -----\r\n const chunk: ArcUpload = new ArcUpload();\r\n chunk.name = name; // file name\r\n chunk.file_size = size; // complete file size in bytes\r\n chunk.mime = mime; // mime type\r\n chunk.upload_key = uploadKey; // upload key, sha256\r\n chunk.block_index = chunkIdx; // block/chunk index in upload set\r\n chunk.block_size = chunkData.byteLength; // block size, max 102400 bytes or less, convenience field\r\n chunk.block_data = new Uint8Array( chunkData ); // block data\r\n\r\n //- call uploader api -----\r\n const ok = await FtRapi.callNew( \"arcUploadChunk\", {\r\n inRec: chunk,\r\n success: ( result, data ) => setProgress( chunkIdx / chunkCnt ),\r\n error: ( { message } ) => {\r\n if ( onError ) onError( \"An error occurred during upload, please try again or contact support\" );\r\n\r\n }\r\n });\r\n\r\n return ok;\r\n }\r\n\r\n}\r\nFtFmUploadFile.ftcompname = \"FtFmUploadFile\";\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtText from '../first/ftText';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmUploadFile from '../first/ftFmUploadFile';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\n\r\nimport Pastor from '../models/pastor';\r\n\r\n//********************************************************************\r\n// PagePastorFileEdit\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PagePastorFileEdit( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const { pastorId } = nav.params ?? { pastorId: 0 }; // unpack parameters passed from calling page\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ pnPastor , setPnPastor ] = useState( null );\r\n const [ fileKey , setFileKey ] = useState( Ft.randomSha256() );\r\n const [ mdlUploads , setMdlUploads ] = useState( { file_key : null } );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy || Ft.eAny( pnPastor ) ) return ftBusy( { popup: popup } );\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onLoad(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callRead( 'pastorRead', pastorId, {\r\n success: ( result, data ) => setPnPastor( data[0] ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { btn: \"Close\", onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function onError( message: string ): void\r\n {\r\n ftPopupMessage( setPopup, \"Error\", message );\r\n }\r\n\r\n function onSave(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callNew( 'pastorFileNew', {\r\n urlParms: { \r\n pastor_id : pastorId,\r\n file_key : mdlUploads.file_key,\r\n },\r\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n}","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastor40Year\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastor40Year( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {} as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openUrlSvr( 'reportPastor40Year' );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastoralStatus\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastoralStatus( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {} as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onSubmitReport(): void\r\n {\r\n Ut.openUrlSvr( 'reportPastoralStatus' );\r\n } \r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastoralStatusLapsed\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastoralStatusLapsed( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {} as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openUrlSvr( 'reportPastoralStatusLapsed' );\r\n } \r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastoralStatusLapsedWarning\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastoralStatusLapsedWarning( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {} as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openUrlSvr( 'reportPastoralStatusLapsedWarning' );\r\n } \r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastorDuplicates\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastorDuplicates( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {} as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openUrlSvr( 'reportPastorDuplicates' );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtFmDropdownField from '../first/ftFmDropdownField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastorGender\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastorGender( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlParms , setMdlParms ] = useState( { gender_id: null, pastor_status: '' } as any );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy || Ft.eAny( Ut.lkpGender ) ) return ftBusy( { popup: popup } );\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void \r\n {\r\n setBusy( true );\r\n Ut.loadLookups( {\r\n success: () => {},\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: () => nav.pop() } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportPastorGender', mdlParms );\r\n } \r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastorMarriageOfficers\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastorMarriageOfficers( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {} as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openUrlSvr( 'reportPastorMarriageOfficers' );\r\n } \r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmDateField from '../first/ftFmDateField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastorMovementAccepted\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastorMovementAccepted( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {\r\n date_fm: Ft.dtmAsDate( '2001-01-01' ),\r\n date_to: Ft.dtmAsDate(),\r\n } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportPastorMovementAccepted', {\r\n date_fm: Ft.dtFmt( mdlParms.date_fm ),\r\n date_to: Ft.dtFmt( mdlParms.date_to ),\r\n } );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmDateField from '../first/ftFmDateField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastorMovementCalled\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastorMovementCalled( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {\r\n date_fm: Ft.dtmAsDate( '2001-01-01' ),\r\n date_to: Ft.dtmAsDate(),\r\n } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportPastorMovementCalled', {\r\n date_fm: Ft.dtFmt( mdlParms.date_fm ),\r\n date_to: Ft.dtFmt( mdlParms.date_to ),\r\n } );\r\n } \r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastorReinstated\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastorReinstated( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {\r\n region_no_fm: '',\r\n region_no_to: '',\r\n } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportPastorReinstated', mdlParms );\r\n } \r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastorRenewed\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastorRenewed( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {\r\n region_no_fm: '',\r\n region_no_to: '',\r\n exp_year_to: '',\r\n } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportPastorRenewed', mdlParms );\r\n } \r\n}\r\n","import React, { useState } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastorSecondedAll\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastorSecondedAll( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( { exp_year_to: '' } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportPastorSecondedAll', mdlParms );\r\n } \r\n}\r\n","import React, { useState } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportPastorSecondedForces\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportPastorSecondedForces( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( { exp_year_to: '' } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportPastorSecondedForces', mdlParms );\r\n } \r\n}\r\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtFmSearchField from '../first/ftFmSearchField';\nimport FtButton from '../first/ftButton';\nimport FtDataGrid from '../first/ftDataGrid';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport Th from '../general/th';\nimport Ut from '../general/ut';\n\nimport GenLookup from '../models/genLookup';\nimport Assembly from '../models/assembly';\n\n//********************************************************************\n// PageAssemblySearch\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PageAssemblySearch( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n \n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlAssembly , setMdlAssembly ] = useState( new Assembly() );\n const [ lkpRegion , setLkpRegion ] = useState( [] );\n const [ lstAssembly , setLstAssembly ] = useState( [] );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n \n if ( busy || Ft.eAny( lkpRegion ) ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n );\n\n //====================================================================\n // event handlers\n \n function onLoad(): void \n {\n setBusy( true );\n FtRapi.callList( 'assemblyRegionLookup', {\n success: ( result, data ) => setLkpRegion( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { btn: \"Close\", onClose: () => nav.pop() } ), \n complete: () => setBusy( false ),\n });\n }\n\n function onSearch(): void\n {\n setLstAssembly( [] );\n setBusy( true );\n FtRapi.callList( 'assemblySearch', {\n urlParms: {\n prm_assembly_no : mdlAssembly.assembly_no,\n prm_assembly_name : mdlAssembly.assembly_name,\n prm_region_id : mdlAssembly.region_id,\n prm_physical_adr_1 : mdlAssembly.physical_adr_1,\n prm_physical_adr_city : mdlAssembly.physical_adr_city,\n },\n success: ( result, data ) => setLstAssembly( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n\n function onTapAssemblyEdit( { dataId }: FtDgAction ): void\n {\n nav.push( 'AssemblyEdit', { assemblyId: dataId } );\n }\n \n function onTapAssemblyProps( { dataId }: FtDgAction ): void\n {\n nav.push( 'PropertySearch', { assemblyId: dataId } );\n }\n\n function onTapAssemblyFolder( { dataItem }: FtDgAction ): void\n {\n Ft.openUrl( `${Ut.pastorFolderLink}/Assemblies${dataItem.assembly_no}` );\n } \n \n function onClickNewAssembly(): void \n {\n setLstAssembly( [] ); \n nav.push( 'AssemblyEdit', { assemblyId: 0 } );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtFmTextareaField from '../first/ftFmTextareaField';\nimport FtFmIntegerField from '../first/ftFmIntegerField';\nimport FtFmDateField from '../first/ftFmDateField';\nimport FtFmCheckboxField from '../first/ftFmCheckboxField';\nimport FtFmDropdownField from '../first/ftFmDropdownField';\nimport FtFmSearchField from '../first/ftFmSearchField';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport Th from '../general/th';\nimport Ut from '../general/ut';\n\nimport GenLookup from '../models/genLookup';\nimport Assembly from '../models/assembly';\n\n//********************************************************************\n// PageAssemblyEdit\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PageAssemblyEdit( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n \n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const { assemblyId } = nav.params ?? { assemblyId: 0 }; // unpack parameters passed from calling page\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlAssembly , setMdlAssembly ] = useState( null );\n const [ lkpRegion , setLkpRegion ] = useState( [] );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n \n if ( busy || Ft.eAny( mdlAssembly, Ut.lkpAssemblyType ) ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n\n \n \n\n \n \n\n \n \n\n \n \n \n\n \n \n\n \n \n\n \n \n\n \n \n \n\n \n \n \n \n \n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n \n \n \n\n \n \n\n \n \n \n \n \n\n );\n\n //====================================================================\n // event handlers\n \n function onLoad(): void\n {\n //- load lookups -----\n setBusy( true );\n Ut.loadLookups( {\n success: ( result, data ) => setBusy( false ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n }); \n FtRapi.callList( 'assemblyRegionLookup', {\n success: ( result, data ) => setLkpRegion( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n\n //- init record -----\n if ( assemblyId != 0 ) { // existing record\n FtRapi.callRead( 'assemblyRead', assemblyId, {\n success: ( result, data ) => setMdlAssembly( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n }); \n } else { // new record\n setMdlAssembly( new Assembly() );\n }\n }\n\n function onSave(): void\n {\n setBusy( true );\n if ( assemblyId != 0 ) { // existing record\n FtRapi.callUpdate( 'assemblyUpdate', assemblyId, {\n inRec: mdlAssembly,\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n } else { // new record\n FtRapi.callNew( 'assemblyNew', {\n inRec: mdlAssembly,\n success: ( { message }, data ) => {\n ftPopupMessage( setPopup, \"Success\", message );\n setMdlAssembly( new Assembly() );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n }\n\n}\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtText from '../first/ftText';\nimport FtButton from '../first/ftButton';\nimport FtDataGrid from '../first/ftDataGrid';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\nimport Th from '../general/th';\n\nimport Assembly from '../models/assembly';\nimport AssemblyProperty from '../models/assemblyProperty';\n\n//********************************************************************\n// PagePropertySearch\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PagePropertySearch( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n \n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const { assemblyId } = nav.params ?? { assemblyId: 0 };\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ pnAssembly , setPnAssembly ] = useState( null );\n const [ lstProperty , setLstProperty ] = useState( [] );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n \n if ( busy || Ft.eAny( pnAssembly )) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n );\n\n //====================================================================\n // event handlers\n \n function onLoad(): void \n {\n setBusy( true );\n FtRapi.callRead( 'assemblyRead', assemblyId, {\n success: ( result, data ) => {\n setPnAssembly( data[0] );\n onSearch();\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { btn: \"Close\", onClose: () => nav.pop() } ), \n complete: () => setBusy( false ),\n });\n }\n\n function onSearch(): void\n {\n setLstProperty( [] );\n setBusy( true );\n FtRapi.callList( 'assemblyPropertySearch', {\n urlParms: { prm_assembly_id : assemblyId },\n success: ( result, data ) => setLstProperty( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n\n function onTapAssemblyPropertyEdit( { dataId }: FtDgAction ): void\n {\n nav.push( 'PropertyEdit', { assemblyId: assemblyId, propertyId: dataId } );\n }\n \n function onTapAssemblyPropertyDelete( { dataId }: FtDgAction ): void\n {\n ftPopupConfirm( setPopup, 'Confirmation', \"Are you sure you want to delete this record?\", {\n btnA: 'Yes', onA: () => {\n setLstProperty( [] );\n setBusy( true );\n FtRapi.callDelete( 'AssemblyPropertyDelete', dataId, {\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { onClose: onSearch } ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n },\n btnB: 'No', onB: () => {}\n });\n }\n \n function onClickNewProperty(): void\n {\n nav.push( 'PropertyEdit', { assemblyId: assemblyId, propertyId: 0 } );\n }\n}\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2022 Jaco Bekker T/A LightSoft\nimport React, { useContext, useState } from 'react';\nimport { useWindowDimensions } from 'react-native';\nimport { useField, useFormikContext } from 'formik';\nimport { TextInput, HelperText } from 'react-native-paper';\nimport Decimal from 'decimal.js';\nimport Ft from './ft';\nimport { FtConProps, FtFmExtLabelProps } from './ftTypes';\nimport FtCon from './ftCon';\nimport { FtFormContext } from './ftForm';\nimport FtText from './ftText';\n\ninterface FtFmDecimalFieldProps extends FtConProps, FtFmExtLabelProps {\n name?: string;\n label?: string;\n txtClr?: string;\n labClr?: string;\n txtBkg?: string;\n lineClr?: string;\n pos?: boolean;\n dec?: number;\n onChange?: ( newDecVal: Decimal ) => void;\n ftreq?: boolean;\n ftmin?: string|Decimal;\n ftmax?: string|Decimal;\n ftreqmsg?: string;\n ftminmsg?: string;\n ftmaxmsg?: string;\n}\n\n//********************************************************************\n// FtFmDecimalField : react-native-paper TextField wrapped in FtCon\n//\n// DECIMALFIELD-PROP DATA_TYPE DESCRIPTION VALUES\n// name string field name for data binding, 'md11.field' -\n// label string label text -\n// txtClr string input text color '#'\n// labClr string label text color '#'\n// txtBkg string input background color '#'\n// lineClr string input outline color '#'\n// pos bool allow positive numbers only false\n// dec int number of decimal places to show 2\n// onChange function event handler: (newDecVal) => { .. } -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see FtCon docs\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// bkgClr self string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgClrX self string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// bkgImg self string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// bkgImgX self string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// elev self int elevation shadow 0 0 - 10\n// show self int/bool Show/Hide true 0/1/false/true\n// aligni self string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the outermost View for testing - -\n//\n// EXT_LABEL_CON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// ext self string generate external label, responsive '0' '0'/'1' responsive, see FtCon docs\n// labTxtDescr self string external label text styling descriptor - ,; : '24,O#0099cc;Roboto', size=scaled-font-size, bold=O, italic=I, Underline=U, Align=L/C/R/J, wrap=W, color=#XXXXXXXX, font=name\n// labOnTap self handler() on tap/click handler function - -\n// labOnSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// labSs container string size specification within parent container '' see FtCon docs\n// labMd children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// labLt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// labFlex container int size in main direction in ratio to other children - -\n// labInflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// labW container int/string width, pixels/percentage - -\n// labH container int/string height, pixels/percentage - -\n// labBkgClr container string background color/gradient descriptor - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgClrX container string background color/gradient descriptor when disabled - '#' | '*#ff0000,#00ff00,#0000ff', * = direction: |/-\\\n// labBkgImg container string/array background image descriptor, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labBkgImgX container string/array background image descriptor when disabled, must be in assets - or [ , ], fit: cover/contain/stretch/repeat/center\n// labFit container string background image fit descriptor - fit: cover/contain/stretch/repeat/center\n// labFitX container string background image fit descriptor when disabled - fit: cover/contain/stretch/repeat/center\n// labPad/* container int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// labMar/* container int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// labBor container int/array/string Border descriptor, all sides only 0 ',;'\n// labElev container int elevation shadow 0 0 - 10\n// labShow container int/bool Show/Hide true 0/1/false/true\n// labAligni container string cross direction alignment of self start stretch|flex-start|start|A|flex-end|end|Z|center|C|base|baseline\n// labEn both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// labId self string id attribute to be applied to the outermost View for testing - -\n//\n// Supported validation props:\n// PROP DESCRIPTION EXAMPLE\n// ftreq input is required \n// ftmin input must be at least this value \n// ftmax input must be at most this value \n//\n// ftreqmsg custom error message : freq \n// ftminmsg custom error message : ftmin \n// ftmaxmsg custom error message : ftmax \n//\n// Example:\n// \n//\nexport default function FtFmDecimalField(\n {\n label, txtClr, labClr, txtBkg, lineClr, pos, dec,\n ftreq, ftmin, ftmax, onChange,\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar, marT, marL, marB, marR,\n bor, elev, show, aligni, en = 1,\n //- external label props -----\n ext, labTxtDescr,\n labOnTap, labOnSize,\n labSs, labMd, labLt,\n labFlex, labInflex, labW, labH,\n labBkgClr, labBkgClrX, labBkgImg, labBkgImgX,\n labFit, labFitX,\n labPad, labPadT, labPadR, labPadB, labPadL,\n labMar, labMarT, labMarR, labMarB, labMarL,\n labBor, labElev, labShow, labAligni,\n labEn, labId,\n //- remaining props -----\n ...props\n }: FtFmDecimalFieldProps\n): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n const winDim = useWindowDimensions();\n const formCtx = useContext( FtFormContext ) as any;\n const { handleChange , handleBlur } = useFormikContext(); // fetch formik context\n const [ field , meta ] = useField( props as any );\n const [ info , setInfo ] = useState( { strValue: null } );\n\n //- prop field & containe props -----\n const { name, value } = field; // unpack from field\n const ctlMar: string|undefined = !Ft.e( mar ) ? mar : formCtx.spacing;\n const conProps: any = { // container properties\n onTap, onSize,\n id, ss, md, lt,\n flex, inflex, w, h,\n bkgClr, bkgClrX, bkgImg, bkgImgX,\n pad, padT, padL, padB, padR,\n mar: ctlMar, marT, marL, marB, marR,\n bor, elev, show, aligni, en,\n };\n\n //- setup some cosmetics -----\n let cosmet: any = { theme: { colors: {} } };\n cosmet.style = { fontSize: Ft.scaleFont( 16 ) };\n if ( !Ft.e( txtClr ) ) cosmet.theme.colors.text = txtClr;\n if ( !Ft.e( labClr) ) cosmet.theme.colors.placeholder = labClr;\n if ( !Ft.e( txtBkg ) ) cosmet.theme.colors.background = txtBkg;\n if ( !Ft.e( lineClr ) ) cosmet.outlineColor = lineClr;\n\n const disabled = !en;\n const labelReq: string|undefined = ( !Ft.e( label ) && !disabled && Ft.isDef( ftreq ) ) ? `${label} * ` : label;\n const decPlaces: number = dec != undefined ? Math.floor( dec ) : 2;\n\n //- setup external label -----\n const isExt: boolean = Ft.parseResp( ext ?? '0', winDim ) == '1';\n const extLabelProps: any = isExt\n ? {\n text: !ftreq ? label : `${label} *`,\n txtDescr: labTxtDescr,\n onTap: labOnTap, onSize: labOnSize,\n ss: labSs, md: labMd, lt: labLt,\n flex: labFlex, inflex: labInflex, w: labW, h: labH,\n bkgClr: labBkgClr, bkgClrX: labBkgClrX,\n bkgImg: labBkgImg, bkgImgX: labBkgImgX,\n fit: labFit, fitX: labFitX,\n pad: labPad, padT: labPadT, padR: labPadR, padB: labPadB, padL: labPadL,\n mar: labMar, marT: labMarT, marR: labMarR, marB: labMarB, marL: labMarL,\n bor: labBor, elev: labElev, show: labShow, aligni: labAligni,\n en: labEn, id: labId,\n }\n : {};\n\n //====================================================================\n // render\n\n //- render control -----\n const control: JSX.Element = (\n \n \n {( !!meta.error ? ({meta.error}) : (<>) )}\n \n );\n\n //- render final component -----\n const comp = isExt\n ? (<>{control})\n : control;\n\n return comp;\n\n //====================================================================\n // event handlers\n\n function onValue(): string\n {\n //- handle initial populating of info.strValue -----\n if ( info.strValue == null )\n info.strValue = value?.toFixed( decPlaces ) ?? '';\n\n //- handle possible change of field.value -----\n if ( info.strValue != '' ) {\n const parseDec = Ft.parseDecimalSpace( info.strValue );\n const changed = !Ft.decEq( value, parseDec );\n if ( changed ) info.strValue = value?.toFixed( decPlaces ) ?? '0';\n }\n return info.strValue;\n }\n\n function onChangeText( newValStr: string ): void\n {\n //- handle disabled and invalid newValStr cases -----\n if ( disabled ) return;\n const parseDec = Ft.parseDecimalSpace( newValStr );\n if ( parseDec == null ) return; // invalid newValStr is ignored\n\n //- process valid newValStr -----\n info.strValue = newValStr;\n const newValDec = !!pos ? parseDec.abs() : parseDec;\n formCtx.childChanged();\n if ( onChange != undefined ) onChange( newValDec );\n return handleChange(name)({ target: {\n name: name,\n value: newValDec\n }} as any );\n }\n}\nFtFmDecimalField.ftcompname = \"FtFmDecimalField\";\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtText from '../first/ftText';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtFmTextareaField from '../first/ftFmTextareaField';\r\nimport FtFmDecimalField from '../first/ftFmDecimalField';\r\nimport FtFmDateField from '../first/ftFmDateField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\n\r\nimport Assembly from '../models/assembly';\r\nimport AssemblyProperty from '../models/assemblyProperty';\r\n\r\n//********************************************************************\r\n// PagePropertyEdit\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PagePropertyEdit( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const { assemblyId, propertyId } = nav.params ?? { assemblyId: 0, propertyId: 0 }; // unpack parameters passed from calling page\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ pnAssembly , setPnAssembly ] = useState( null );\r\n const [ mdlProperty , setMdlProperty ] = useState( null );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( mdlProperty, pnAssembly ) ) return ftBusy( { popup: popup } );\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n setBusy( true );\r\n if ( propertyId != 0 ) { // existing record\r\n FtRapi.callRead( 'assemblyPropertyRead', propertyId, {\r\n success: ( result, data ) => {\r\n setMdlProperty( data[0] );\r\n setPnAssembly( data[1] );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n } else { // new record\r\n FtRapi.callRead( 'assemblyRead', assemblyId, {\r\n success: ( result, data ) => {\r\n setPnAssembly( data[0] );\r\n const rec = new AssemblyProperty();\r\n rec.assembly_id = assemblyId;\r\n rec.purch_date = Ft.dtTodayAsDate();\r\n setMdlProperty( rec );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { btn: \"Close\", onClose: () => nav.pop() } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n }\r\n\r\n function onSave(): void\r\n {\r\n setBusy( true );\r\n if ( propertyId != 0 ) { // existing record\r\n FtRapi.callUpdate( 'assemblyPropertyUpdate', propertyId, {\r\n inRec: mdlProperty,\r\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n } else { // new record\r\n FtRapi.callNew( 'assemblyPropertyNew', {\r\n inRec: mdlProperty,\r\n success: ( { message }, data ) => {\r\n ftPopupMessage( setPopup, \"Success\", message );\r\n const rec = new AssemblyProperty();\r\n rec.assembly_id = assemblyId;\r\n rec.purch_date = Ft.dtTodayAsDate();\r\n setMdlProperty( rec );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n }\r\n}","import React, { useState } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtButton from '../first/ftButton';\r\nimport FtDataGrid from '../first/ftDataGrid';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\r\nimport Th from '../general/th';\r\n\r\nimport AssemblyRegion from '../models/assemblyRegion';\r\n\r\n//********************************************************************\r\n// PageRegionSearch\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageRegionSearch( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlRegion , setMdlRegion ] = useState( new AssemblyRegion() );\r\n const [ lstRegion , setLstRegion ] = useState( [] );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy ) return ftBusy( { popup: popup } );\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onSearch(): void\r\n {\r\n setBusy( true );\r\n setLstRegion( [] );\r\n FtRapi.callList( 'assemblyRegionSearch', {\r\n urlParms: {\r\n prm_region_name : mdlRegion.region_name,\r\n prm_region_no : mdlRegion.region_no,\r\n },\r\n success: ( result, data ) => setLstRegion( data[0] ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function onTapAssemblyRegionEdit( { dataId }: FtDgAction ): void\r\n {\r\n nav.push( 'RegionEdit', { regionId: dataId } );\r\n }\r\n\r\n function onTapAssemblyRegionDelete( { dataId }: FtDgAction ): void\r\n {\r\n ftPopupConfirm( setPopup, 'Confirmation', \"Are you sure you want to delete this record?\", {\r\n btnA: 'Yes', onA: () => {\r\n setLstRegion( [] );\r\n setBusy( true );\r\n FtRapi.callDelete( 'assemblyRegionDelete', dataId, {\r\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { onClose: onSearch } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n },\r\n btnB: 'No', onB: () => {}\r\n });\r\n }\r\n\r\n function onClickNewRegion(): void\r\n {\r\n nav.push( 'RegionEdit', { regionId: 0 } );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtFmDateField from '../first/ftFmDateField';\r\nimport FtFmCheckboxField from '../first/ftFmCheckboxField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\n\r\nimport AssemblyRegion from '../models/assemblyRegion';\r\n\r\n//********************************************************************\r\n// PageRegionEdit\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageRegionEdit( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const { regionId } = nav.params ?? { regionId: 0 }; // unpack parameters passed from calling page\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlRegion , setMdlRegion ] = useState( null );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy || Ft.eAny( mdlRegion ) ) return ftBusy( { popup: popup } );\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onLoad(): void\r\n {\r\n if ( regionId != 0 ) { // existing record\r\n FtRapi.callRead( 'assemblyRegionRead', regionId, {\r\n success: ( result, data ) => setMdlRegion( data[0] ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n });\r\n } else { // new record\r\n setMdlRegion( new AssemblyRegion() );\r\n }\r\n }\r\n\r\n function onSave(): void\r\n {\r\n setBusy( true );\r\n if ( regionId != 0 ) { // existing record\r\n FtRapi.callUpdate( 'assemblyRegionUpdate', regionId, {\r\n inRec: mdlRegion,\r\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n } else { // new record\r\n FtRapi.callNew( 'assemblyRegionNew', {\r\n inRec: mdlRegion,\r\n success: ( { message }, data ) => {\r\n ftPopupMessage( setPopup, \"Success\", message );\r\n setMdlRegion( new AssemblyRegion() );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportAssemblyAddedLast6Months\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportAssemblyAddedLast6Months( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {\r\n region_no_fm: '',\r\n region_no_to: '',\r\n } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportAssemblyAddedLast6Months', mdlParms );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportAssemblyNoPastors\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportAssemblyNoPastors( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {} as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openUrlSvr( 'reportAssemblyNoPastors' );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportAssemblyNumberList\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportAssemblyNumberList( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {\r\n region_no_fm: '',\r\n region_no_to: '',\r\n } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportAssemblyNumberList', mdlParms );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportAssemblyNumberListSum\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportAssemblyNumberListSum( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( { region_no: '' } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportAssemblyNumberListSum', mdlParms );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportAssemblyPastorsList\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportAssemblyPastorsList( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {\r\n region_no_fm: '',\r\n region_no_to: '',\r\n } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportAssemblyPastorsList', mdlParms );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportLabelAssemblySecretary\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportLabelAssemblySecretary( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {\r\n region_no_fm: '',\r\n region_no_to: '',\r\n } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportLabelAssemblySecretary', mdlParms );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportLabelNoMailAddresses\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportLabelNoMailAddresses( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {\r\n region_no_fm: '',\r\n region_no_to: '',\r\n language: '',\r\n } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportLabelNoMailAddresses', mdlParms );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportRegionList\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportRegionList( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {\r\n region_no_fm: '',\r\n region_no_to: '',\r\n } as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openReport( 'reportRegionList', mdlParms );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\n//********************************************************************\r\n// PageReportRegionOfficeBearers\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportRegionOfficeBearers( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ mdlParms , setMdlParms ] = useState( {} as any );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onSubmitReport(): void\r\n {\r\n Ut.openUrlSvr( 'reportRegionOfficeBearers' );\r\n } \r\n}\r\n","import React, { useState } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtDataGrid from '../first/ftDataGrid';\nimport FtButton from '../first/ftButton';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport Th from '../general/th';\n\nimport Justice from '../models/justice';\n\n//********************************************************************\n// PageJusticeSearch\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PageJusticeSearch( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n \n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlJustice , setMdlJustice ] = useState( new Justice() );\n const [ lstJustice , setLstJustice ] = useState( [] );\n\n //- hooks: effect/startup -----\n // useEffect( onLoad, [] );\n\n\n //====================================================================\n // render\n \n if ( busy ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n );\n\n //====================================================================\n // event handlers\n\n function onSearch(): void\n {\n setBusy( true );\n setLstJustice( [] );\n FtRapi.callList( 'JusticeSearch', {\n urlParms: {\n prm_case_no : mdlJustice.case_no, \n prm_member_no : mdlJustice.member_no, \n },\n success: ( result, data ) => setLstJustice( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n\n function onTapJusticeEdit( { dataId }: FtDgAction ): void\n {\n nav.push( 'JusticeEdit', { justiceId: dataId } );\n }\n\n function onTapJusticeNotes( { dataId }: FtDgAction ): void\n {\n nav.push( 'JusticeNoteSearch', { justiceId: dataId } );\n }\n\n function onTapJusticeFiles( { dataId }: FtDgAction ): void\n {\n nav.push( 'JusticeFileSearch', { justiceId: dataId } );\n }\n\n function onClickNewJusticeCase(): void\n {\n nav.push( 'JusticeEdit', { justiceId: 0 } );\n }\n}\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtFmTextareaField from '../first/ftFmTextareaField';\nimport FtFmDateField from '../first/ftFmDateField';\nimport FtFmDropdownField from '../first/ftFmDropdownField';\nimport FtFmSearchField from '../first/ftFmSearchField';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport Th from '../general/th';\nimport Ut from '../general/ut';\n\nimport Justice from '../models/justice';\nimport GenLookup from '../models/genLookup';\n\n//********************************************************************\n// PageJusticeEdit\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PageJusticeEdit( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n\n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const { justiceId } = nav.params ?? { justiceId: 0 }; // unpack parameters passed from calling page\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlJustice , setMdlJustice ] = useState( null );\n const [ lkpPastor , setLkpPastor ] = useState( [] );\n const [ lkpUserz , setLkpUserz ] = useState( [] );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n\n if ( busy || Ft.eAny( mdlJustice, Ut.lkpGender, lkpPastor, lkpUserz ) ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n \n\n \n \n \n \n\n );\n\n //====================================================================\n // event handlers\n\n function onLoad(): void\n {\n //- load lookups -----\n setBusy( true );\n Ut.loadLookups( {\n success: ( result, data ) => setBusy( false ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n FtRapi.callList( 'pastorLookup', {\n success: ( result, data ) => setLkpPastor( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n FtRapi.callList( 'userzLookup', {\n success: ( result, data ) => setLkpUserz( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n }); \n\n //- init edit record -----\n if ( justiceId != 0 ) { // existing record\n FtRapi.callRead( 'justiceRead', justiceId, {\n success: ( result, data ) => setMdlJustice( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n } else { // new record\n const rec = new Justice();\n setMdlJustice( rec );\n }\n }\n\n function onSave(): void\n {\n setBusy( true );\n if ( justiceId != 0 ) { // existing record\n FtRapi.callUpdate( 'justiceUpdate', justiceId, {\n inRec: mdlJustice,\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n } else { // new record\n FtRapi.callNew( 'justiceNew', {\n inRec: mdlJustice,\n success: ( { message }, data ) => {\n ftPopupMessage( setPopup, \"Success\", message );\n const rec = new Justice();\n setMdlJustice( rec );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n } \n }\n}","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtText from '../first/ftText';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtButton from '../first/ftButton';\nimport FtDataGrid from '../first/ftDataGrid';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\nimport Th from '../general/th';\n\nimport Justice from '../models/justice';\nimport JusticeNote from '../models/justiceNote';\n\n\n//********************************************************************\n// PageJusticeNoteSearch\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PageJusticeNoteSearch( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n\n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const { justiceId } = nav.params ?? { justiceId: 0 };\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlNote , setMdlNote ] = useState( new JusticeNote() );\n const [ pnJustice , setPnJustice ] = useState( null );\n const [ lstNote , setLstNote ] = useState( [] );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n\n if ( busy || Ft.eAny( pnJustice ) ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n\n );\n\n //====================================================================\n // event handlers\n\n function onLoad(): void\n {\n setBusy( true );\n FtRapi.callRead( 'justiceRead', justiceId, {\n success: ( result, data ) => {\n setPnJustice( data[0] );\n onSearch();\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { btn: \"Close\", onClose: () => nav.pop() } ),\n complete: () => setBusy( false ),\n });\n }\n\n function onSearch(): void\n {\n setBusy( true );\n setLstNote( [] );\n FtRapi.callList( 'JusticeNoteSearch', {\n urlParms: {\n prm_justice_id : justiceId,\n prm_userz_who : mdlNote.userz_who,\n prm_description : mdlNote.description,\n },\n success: ( result, data ) => setLstNote( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n\n function onTapNoteEdit( { dataId }: FtDgAction ): void\n {\n nav.push( 'JusticeNoteEdit', { justiceId: justiceId, noteId: dataId } );\n }\n\n function onTapNoteDelete( { dataId }: FtDgAction ): void\n {\n ftPopupConfirm( setPopup, 'Confirmation', \"Are you sure you want to delete this record?\", {\n btnA: 'Yes', onA: () => {\n setLstNote( [] );\n setBusy( true );\n FtRapi.callDelete( 'JusticeNoteDelete', dataId, {\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { onClose: onSearch } ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n },\n btnB: 'No', onB: () => {}\n });\n }\n\n function onClickNewNote(): void\n {\n nav.push( 'JusticeNoteEdit', { justiceId: justiceId, noteId: 0 } );\n }\n}\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtText from '../first/ftText';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextareaField from '../first/ftFmTextareaField';\r\nimport FtFmDateField from '../first/ftFmDateField';\r\nimport FtFmDropdownField from '../first/ftFmDropdownField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\n\r\nimport Justice from '../models/justice';\r\nimport JusticeNote from '../models/justiceNote';\r\nimport Userz from '../models/userz';\r\n\r\n//********************************************************************\r\n// PageJusticeNoteEdit\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageJusticeNoteEdit( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const { justiceId, noteId } = nav.params ?? { justiceId: 0, noteId: 0 }; // unpack parameters passed from calling page\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlNote , setMdlNote ] = useState( null );\r\n const [ pnJustice , setPnJustice ] = useState( null );\r\n const [ lkpUserz , setLkpUserz ] = useState( [] as Userz[] );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( mdlNote, pnJustice ) ) return ftBusy( { popup: popup } );\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callList( 'userzLookup', {\r\n success: ( result, data ) => {\r\n setLkpUserz( data[0] );\r\n if ( noteId != 0 ) { // existing record\r\n FtRapi.callRead( 'justiceNoteRead', noteId, {\r\n success: ( result, data ) => {\r\n setMdlNote( data[0] );\r\n setPnJustice( data[1] );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n } else { // new record\r\n FtRapi.callRead( 'justiceRead', justiceId, {\r\n success: ( result, data ) => {\r\n setPnJustice( data[0] );\r\n const rec = new JusticeNote();\r\n rec.justice_id = justiceId;\r\n rec.justice_case_no = data[0].case_no;\r\n rec.entry_date = Ft.dtTodayAsDate();\r\n setMdlNote( rec );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ), // Ft.dirs( \"ERROR:\", result );\r\n complete: () => setBusy( false ),\r\n });\r\n\r\n\r\n }\r\n\r\n function onSave(): void\r\n {\r\n setBusy( true );\r\n if ( noteId != 0 ) { // existing record\r\n FtRapi.callUpdate( 'justiceNoteUpdate', noteId, {\r\n inRec: mdlNote,\r\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n } else { // new record\r\n FtRapi.callNew( 'justiceNoteNew', {\r\n inRec: mdlNote,\r\n success: ( { message }, data ) => {\r\n ftPopupMessage( setPopup, \"Success\", message );\r\n const rec = new JusticeNote();\r\n rec.justice_id = justiceId;\r\n rec.justice_case_no = pnJustice!.case_no;\r\n rec.entry_date = Ft.dtTodayAsDate();\r\n setMdlNote( rec );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n } \r\n }\r\n}","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtText from '../first/ftText';\nimport FtButton from '../first/ftButton';\nimport FtDataGrid from '../first/ftDataGrid';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\nimport Th from '../general/th';\n\nimport Justice from '../models/justice';\nimport ArcRepo from '../models/arcRepo';\n\n//********************************************************************\n// PageJusticeFileSearch\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PageJusticeFileSearch( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n \n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const { justiceId } = nav.params ?? { justiceId: 0 };\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlArcRepo , setMdlArcRepo ] = useState( new ArcRepo() );\n const [ pnJustice , setPnJustice ] = useState( null );\n const [ lstRepo , setLstRepo ] = useState( [] );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n \n if ( busy || Ft.eAny( pnJustice ) ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n\n );\n\n //====================================================================\n // event handlers\n \n function onLoad(): void \n { \n setBusy( true );\n FtRapi.callRead( 'justiceRead', justiceId, {\n success: ( result, data ) => {\n setPnJustice( data[0] );\n onSearch();\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { btn: \"Close\", onClose: () => nav.pop() } ), \n complete: () => setBusy( false ),\n });\n }\n\n function onSearch(): void\n {\n setLstRepo( [] );\n setBusy( true );\n FtRapi.callList( 'justiceFileSearch', {\n urlParms: { prm_justice_id: justiceId },\n success: ( result, data ) => setLstRepo( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n\n function onTapFileDelete( { dataId }: FtDgAction ): void\n {\n ftPopupConfirm( setPopup, 'Confirmation', \"Are you sure you want to delete this record?\", {\n btnA: 'Yes', onA: () => {\n setLstRepo( [] );\n setBusy( true );\n FtRapi.callDelete( 'justiceFileDelete', dataId, {\n success: ( { message }, data ) => {\n ftPopupMessage( setPopup, \"Success\", message, { onClose: onSearch } );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n },\n btnB: 'No', onB: () => {}\n });\n }\n \n function onClickNewFile(): void\n {\n nav.push( 'JusticeFileEdit', { justiceId: justiceId } );\n }\n\n function onTapDownload( { dataItem }: FtDgAction ): void\n {\n FtRapi.callUrl( 'arcReadImgFile', { repo_key: dataItem.repo_key } );\n }\n\n}\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtText from '../first/ftText';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmUploadFile from '../first/ftFmUploadFile';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\n\r\nimport Justice from '../models/justice';\r\n\r\n//********************************************************************\r\n// PageJusticeFileEdit\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageJusticeFileEdit( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const { justiceId } = nav.params ?? { justiceId: 0 }; // unpack parameters passed from calling page\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ pnJustice , setPnJustice ] = useState( null );\r\n const [ fileKey , setFileKey ] = useState( Ft.randomSha256() );\r\n const [ mdlUploads , setMdlUploads ] = useState( { file_key : null } );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy || Ft.eAny( pnJustice ) ) return ftBusy( { popup: popup } );\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onLoad(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callRead( 'justiceRead', justiceId, {\r\n success: ( result, data ) => setPnJustice( data[0] ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { btn: \"Close\", onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function onError( message: string ): void\r\n {\r\n ftPopupMessage( setPopup, \"Error\", message );\r\n }\r\n\r\n function onSave(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callNew( 'justiceFileNew', {\r\n urlParms: { \r\n justice_id : justiceId,\r\n file_key : mdlUploads.file_key,\r\n },\r\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n}","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtText from '../first/ftText';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtFmDropdownField from '../first/ftFmDropdownField';\r\nimport FtFmSearchField from '../first/ftFmSearchField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport FtAppInfo from '../first/ftAppInfo';\r\nimport Ut from '../general/ut';\r\nimport Th from '../general/th';\r\n\r\nimport GenLookup from '../models/genLookup';\r\nimport Attendee from '../models/attendee';\r\nimport ConfRegisterStatus from '../models/confRegisterStatus';\r\n\r\n// const merchantId: string = \"10033961\"; // TEST\r\n// const merchantKey: string = \"0lzxser40knnv\"; // TEST\r\n// const payUrl: string = \"https://sandbox.payfast.co.za/eng/process\"; // TEST\r\n// const passphrase: string = \"saltandpepper\"; // TEST\r\n// const payAmnt: string = \"10.00\"; // TEST\r\n\r\nconst merchantId: string = \"10304296\"; // LIVE\r\nconst merchantKey: string = \"22hl0wa6omrtl\"; // LIVE\r\nconst payUrl: string = \"https://www.payfast.co.za/eng/process\"; // LIVE\r\nconst passphrase: string = \"fhJhfyr/.-hn1234gGdhjuk124\"; // LIVE\r\nconst payAmnt: string = \"450.00\"; // LIVE\r\n\r\n//********************************************************************\r\n// PageAttendeeNewOnline\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageAttendeeNewOnline( { navigation, options, url }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ lkpAssembly , setLkpAssembly ] = useState( [] as GenLookup[] );\r\n const [ lkpRegion , setLkpRegion ] = useState( [] as GenLookup[] );\r\n const [ lkpTitle , setLkpTitle ] = useState( [] as GenLookup[] );\r\n const [ lkpProvince , setLkpProvince ] = useState( [] as GenLookup[] );\r\n const [ lkpContact , setLkpContact ] = useState( [] as GenLookup[] );\r\n const [ lkpPayMethod , setLkpPayMethod ] = useState( [] as GenLookup[] );\r\n const [ lkpAttType , setLkpAttType ] = useState( [] as GenLookup[] );\r\n const [ lkpRegStatus , setLkpRegStatus ] = useState( [] as GenLookup[] );\r\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\r\n const [ mode , setMode ] = useState( 0 ); // 0= check, 1= registered-paid, 2= registered-not-paid, 3= not-registered\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( lkpAssembly, lkpRegion, lkpTitle, lkpProvince, lkpContact, lkpPayMethod, lkpAttType, lkpRegStatus ) ) return ftBusy( { popup: popup } );\r\n\r\n const frame: any = {\r\n ss : '12',\r\n md : 'c',\r\n lt : 'a,c',\r\n txtDescr : '20,B#ffffff;Helvetica',\r\n headBkgClr : '#005493',\r\n // bodyBor : '2,#d4ab50',\r\n marB : 20,\r\n };\r\n\r\n const fld: any = {\r\n ext : '0|0|1|1|1',\r\n ss : '12|12|6|6|6',\r\n labSs : '0|4|4|4|4',\r\n bkgClr : '#ffffff',\r\n pad : '3,5,3,5',\r\n labMd : 'r',\r\n labLt : 'z,c',\r\n labTxtDescr : '16,#000000',\r\n labPad : '16,5,0,5',\r\n };\r\n\r\n const fldSm: any = {\r\n ext : '0|0|1|1|1',\r\n ss : '6|6|3|3|3',\r\n labSs : '0|0|4|4|4',\r\n bkgClr : '#ffffff',\r\n pad : '3,5,3,5',\r\n labMd : 'r',\r\n labLt : 'z,c',\r\n labTxtDescr : '16,#000000',\r\n labPad : '16,5,0,5',\r\n }; \r\n\r\n const txtProps: any = {\r\n ss: '12|10|8|8|8',\r\n md: 'rw',\r\n lt: 'c,c',\r\n };\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {}}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {}}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
);\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n //- load lookups -----\r\n setBusy( true );\r\n FtRapi.callList( 'assemblyLookup', {\r\n success: ( result, data ) => {\r\n setLkpAssembly( data[0] );\r\n setLkpRegion( data[1] );\r\n\r\n FtRapi.callList( 'basicLookups', {\r\n success: ( result, data ) => {\r\n setBusy( false );\r\n setLkpTitle( data[0] );\r\n setLkpProvince( data[1] );\r\n setLkpContact( data[2] );\r\n setLkpPayMethod( data[3] );\r\n setLkpAttType( data[4] );\r\n setLkpRegStatus( data[5] );\r\n //- catch success url -----\r\n handlePaySuccess();\r\n },\r\n error: ( result ) => ftPopupMessage( setPopup, \"Error\", result.message, { onClose: () => {} } ),\r\n }); \r\n },\r\n error: ( result ) => ftPopupMessage( setPopup, \"Error\", result.message, { onClose: () => {} } ),\r\n });\r\n }\r\n\r\n function handlePaySuccess(): void\r\n {\r\n if ( !url?.parms.hasOwnProperty( 'r' ) || url.parms.r != 'paymentSuccess' || !url?.parms.hasOwnProperty( 'rsaid_no' ) ) return;\r\n mdlAttendee.rsaid_no = url.parms.rsaid_no;\r\n onIdCheck();\r\n }\r\n\r\n function onIdCheck(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callRead( 'confRegisterCheck', 0, {\r\n urlParms: { 'rsaid_no': mdlAttendee?.rsaid_no ?? '' } as any,\r\n success: ( result, data ) => {\r\n setBusy( false );\r\n const statusId = data[0] as Number;\r\n if ( data.length > 1 )\r\n setMdlAttendee( data[1] );\r\n switch ( statusId ) {\r\n case ConfRegisterStatus.CRS_NOT_REGISTERED: setMode( 3 ); break;\r\n case ConfRegisterStatus.CRS_REGISTERED_NOTPAID: setMode( 2 ); break;\r\n case ConfRegisterStatus.CRS_REGISTERED_AND_PAID: setMode( 1 ); break;\r\n }\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: () => setMode( 0 ) } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function onResend(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callRead( 'confResendLetter', 0, {\r\n urlParms: { 'rsaid_no': mdlAttendee?.rsaid_no ?? '' } as any,\r\n success: ( result, data ) => {\r\n setBusy( false );\r\n ftPopupMessage( setPopup, \"Success\", result.message, { onClose: () => {} } );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: () => setMode( 0 ) } ),\r\n complete: () => setBusy( false ),\r\n });\r\n } \r\n\r\n function generateSignature( data: any, passphrase: string )\r\n {\r\n const lines: Array = [];\r\n for ( let key in data ) {\r\n if ( !data.hasOwnProperty( key ) || data[key] === \"\" ) continue;\r\n lines.push( `${key}=${encodeURIComponent( data[key].trim() ).replace( /%20/g, \"+\" )}` );\r\n }\r\n lines.push( `passphrase=${encodeURIComponent( passphrase.trim() ).replace( /%20/g, \"+\" )}` );\r\n const encoded: string = lines.join( '&' );\r\n return Ft.md5( encoded );\r\n };\r\n\r\n function payAttendee( att: Attendee ): void\r\n {\r\n //- set busy -----\r\n setBusy( true );\r\n\r\n //- prepare submit to payfast -----\r\n const payload: any = {\r\n merchant_id : merchantId,\r\n merchant_key : merchantKey,\r\n return_url : `${Ut.feBaseUrl()}?r=paymentSuccess&rsaid_no=${mdlAttendee.rsaid_no}`,\r\n cancel_url : `${Ut.feBaseUrl()}?r=paymentSuccess&rsaid_no=${mdlAttendee.rsaid_no}`,\r\n notify_url : `${FtAppInfo.baseUrl}rapi/confPaid?rsaid_no=${mdlAttendee.rsaid_no}`,\r\n name_first : mdlAttendee.fullnames,\r\n name_last : mdlAttendee.surname,\r\n email_address : mdlAttendee.email,\r\n m_payment_id : mdlAttendee.rsaid_no,\r\n amount : payAmnt,\r\n item_name : \"AFM GBM 2024\",\r\n };\r\n const signature = generateSignature( payload, passphrase );\r\n\r\n const elems = document.getElementById(\"PayForm\").elements;\r\n elems.namedItem( \"merchant_id\" ).value = payload.merchant_id;\r\n elems.namedItem( \"merchant_key\" ).value = payload.merchant_key;\r\n elems.namedItem( \"return_url\" ).value = payload.return_url;\r\n elems.namedItem( \"cancel_url\" ).value = payload.cancel_url;\r\n elems.namedItem( \"notify_url\" ).value = payload.notify_url;\r\n elems.namedItem( \"name_first\" ).value = payload.name_first;\r\n elems.namedItem( \"name_last\" ).value = payload.name_last;\r\n elems.namedItem( \"email_address\" ).value = payload.email_address;\r\n elems.namedItem( \"m_payment_id\" ).value = payload.m_payment_id;\r\n elems.namedItem( \"amount\" ).value = payload.amount;\r\n elems.namedItem( \"item_name\" ).value = payload.item_name;\r\n elems.namedItem( \"signature\" ).value = signature;\r\n \r\n document.getElementById(\"PayForm\").submit();\r\n }\r\n\r\n function onPayNow(): void\r\n {\r\n payAttendee( mdlAttendee );\r\n }\r\n\r\n function onSaveAndPay(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callNew( 'attendeeNewOnline', {\r\n inRec: mdlAttendee,\r\n success: ( result, data ) => {\r\n setBusy( false );\r\n ftPopupMessage( setPopup, \"Success\", result.message, { onClose: () => payAttendee( mdlAttendee ) } );\r\n },\r\n error: ( result ) => ftPopupMessage( setPopup, \"Error\", result.message, { onClose: () => {} } ),\r\n });\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps, FtDgAction } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtCon from '../first/ftCon';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtButton from '../first/ftButton';\nimport FtDataGrid from '../first/ftDataGrid';\nimport FtFmDropdownField from '../first/ftFmDropdownField';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\nimport Th from '../general/th';\nimport Ut from '../general/ut';\n\nimport GenLookup from '../models/genLookup';\nimport Attendee from '../models/attendee';\n\n//********************************************************************\n// PageAttendeeSearch\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PageAttendeeSearch( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n\n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\n const [ mdlGoody , setMdlGoody ] = useState( { prm_goody: null } );\n const [ lkpAssembly , setLkpAssembly ] = useState( [] );\n const [ lkpRegion , setLkpRegion ] = useState( [] );\n const [ lkpProvince , setLkpProvince ] = useState( [] );\n const [ lstAttendee , setLstAttendee ] = useState( [] );\n const [ lkpGoody , setLkpGoody ] = useState( [] );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n\n if ( busy || Ft.eAny( lkpAssembly, lkpRegion, lkpProvince, lkpGoody ) ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n\n );\n\n //====================================================================\n // event handlers\n\n function onLoad(): void\n {\n //- load lookups -----\n setLkpGoody( [ \n new GenLookup().copyFrom( { id: 1, name: 'Received' } ),\n new GenLookup().copyFrom( { id: 0, name: 'Not-Received' } ),\n ] );\n setBusy( true );\n FtRapi.callList( 'assemblyLookup', {\n success: ( result, data ) => {\n setLkpAssembly( data[0] );\n setLkpRegion( data[1] );\n\n FtRapi.callList( 'basicLookups', {\n success: ( result, data ) => {\n setBusy( false );\n setLkpProvince( data[1] );\n },\n error: ( result ) => ftPopupMessage( setPopup, \"Error\", result.message, { onClose: () => {} } ),\n });\n },\n error: ( result ) => ftPopupMessage( setPopup, \"Error\", result.message, { onClose: () => {} } ),\n });\n }\n\n function onSearch(): void\n {\n setLstAttendee( [] );\n setBusy( true );\n FtRapi.callList( 'attendeeSearch', {\n urlParms: {\n prm_rsaid_no : mdlAttendee?.rsaid_no,\n prm_email : mdlAttendee?.email,\n prm_surname : mdlAttendee?.surname,\n prm_fullnames : mdlAttendee?.fullnames,\n prm_cell_no : mdlAttendee?.cell_no,\n prm_goody : mdlGoody.prm_goody,\n },\n success: ( result, data ) => setLstAttendee( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n\n function onTapAttendeeNew(): void\n {\n nav.push( 'AttendeeEdit', { attendeeId: 0 } );\n }\n\n function onTapAttendeeEdit( { dataId }: FtDgAction ): void\n {\n nav.push( 'AttendeeEdit', { attendeeId: dataId } );\n } \n\n function onTapAttendeeDelete( { dataId }: FtDgAction ): void\n {\n ftPopupConfirm( setPopup, 'Confirmation', \"Are you sure you want to delete this record?\", {\n btnA: 'Yes', onA: () => {\n setLstAttendee( [] );\n setBusy( true );\n FtRapi.callDelete( 'attendeeDelete', dataId, {\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { onClose: onSearch } ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n },\n btnB: 'No', onB: () => {}\n });\n } \n\n function onTapAttendeePrint( { dataId }: FtDgAction ): void\n {\n Ut.openReport( 'reportConfregisConfirmLetter', { attendee_id: dataId } );\n }\n\n}\n","import React, { useState, useEffect } from 'react';\nimport type { FtPageProps } from '../first/ftTypes';\nimport Ft from '../first/ft';\nimport FtRapi from '../first/ftRapi';\nimport FtCon from '../first/ftCon';\nimport FtFrame from '../first/ftFrame';\nimport FtCanvas from '../first/ftCanvas';\nimport FtSpacer from '../first/ftSpacer';\nimport FtForm from '../first/ftForm';\nimport FtFmSubmit from '../first/ftFmSubmit';\nimport FtFmTextField from '../first/ftFmTextField';\nimport FtFmEmailField from '../first/ftFmEmailField';\nimport FtFmDecimalField from '../first/ftFmDecimalField';\nimport FtFmDateField from '../first/ftFmDateField';\nimport FtFmTimeField from '../first/ftFmTimeField';\nimport FtFmCheckboxField from '../first/ftFmCheckboxField';\nimport FtFmDropdownField from '../first/ftFmDropdownField';\nimport FtFmSearchField from '../first/ftFmSearchField';\nimport { ftBusy } from '../first/ftBusy';\nimport { ftPopupMessage } from '../first/ftPopupMessage';\nimport Th from '../general/th';\nimport Ut from '../general/ut';\n\nimport Attendee from '../models/attendee';\nimport GenLookup from '../models/genLookup';\n\n//********************************************************************\n// PageAttendeeEdit\n// @FTGEN_PROGRESS: done\n// ...todo: specify props here...\nexport default function PageAttendeeEdit( { navigation, options }: FtPageProps ): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n\n //- hooks: state -----\n const nav = Ft.useNav( navigation );\n const { attendeeId } = nav.params ?? { attendeeId: 0 }; // unpack parameters passed from calling page\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\n const [ busy , setBusy ] = useState( false );\n const [ mdlAttendee , setMdlAttendee ] = useState( null );\n const [ lkpAssembly , setLkpAssembly ] = useState( [] );\n const [ lkpRegion , setLkpRegion ] = useState( [] );\n const [ lkpUserz , setLkpUserz ] = useState( [] );\n\n //- hooks: effect/startup -----\n useEffect( onLoad, [] );\n\n //====================================================================\n // render\n\n if ( busy || Ft.eAny( mdlAttendee, lkpAssembly, lkpRegion, Ut.lkpAttendeeTitle, lkpUserz ) ) return ftBusy( { popup: popup } );\n\n return (\n {popup}\n\n \n \n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n \n onSave( false ) } />\n onSave( true ) } />\n \n \n \n \n\n );\n\n //====================================================================\n // event handlers\n\n function onLoad(): void\n {\n //- load lookups -----\n setBusy( true );\n Ut.loadLookups( {\n success: ( result, data ) => setBusy( false ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n\n FtRapi.callList( 'assemblyLookup', {\n success: ( result, data ) => {\n setLkpAssembly( data[0] );\n setLkpRegion( data[1] );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n\n FtRapi.callList( 'userzLookup', {\n success: ( result, data ) => setLkpUserz( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n\n //- init record -----\n if ( attendeeId != 0 ) { // existing record\n FtRapi.callRead( 'attendeeRead', attendeeId, {\n success: ( result, data ) => setMdlAttendee( data[0] ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\n });\n } else { // new record\n setMdlAttendee( new Attendee() );\n }\n }\n\n function onSave( withLetter: boolean ): void\n {\n setBusy( true );\n if ( attendeeId != 0 ) { // existing record\n FtRapi.callUpdate( 'attendeeUpdate', attendeeId, {\n urlParms: { withLetter: withLetter ? 1 : 0 },\n inRec: mdlAttendee,\n success: ( { message }, data ) => ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } ),\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n } else { // new record\n FtRapi.callNew( 'attendeeNew', {\n urlParms: { withLetter: withLetter ? 1 : 0 },\n inRec: mdlAttendee,\n success: ( { message }, data ) => {\n ftPopupMessage( setPopup, \"Success\", message );\n setMdlAttendee( new Attendee() );\n },\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\n complete: () => setBusy( false ),\n });\n }\n }\n\n}\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtText from '../first/ftText';\r\nimport Th from '../general/th';\r\n\r\n\r\n//********************************************************************\r\n// PageConfregisStatistics\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageConfregisStatistics( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ counts , setCounts ] = useState( [ 0, 0, 0, 0.0, 0 ] ); // attendee counts: [ att_reg, asm_rep, asm_tot, asm_prc, is_quorum ]\r\n const duration = 30000;\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n const [ attReg, asmRep, asmTot, asmPrc, isQuorum ] = counts;\r\n\r\n const descrStl: string = '100,C#0e71b0';\r\n const statStl: string = '180,C#000000';\r\n const quorStl: string = !!isQuorum ? '200,#008000' : '200,#ff0000'\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void \r\n {\r\n loadCounts();\r\n setTimeout( loadCounts, duration );\r\n }\r\n\r\n function dummyCounts(): void\r\n {\r\n const n = Math.floor( Math.random() * 1000 );\r\n setCounts([ n, 300 ]);\r\n setTimeout( dummyCounts, duration );\r\n }\r\n\r\n function loadCounts()\r\n {\r\n FtRapi.callRead( 'confregisStatsRead', 0, {\r\n success: ( result, data ) => {\r\n // attendee counts: [ att_reg, asm_rep, asm_tot, asm_prc, is_quorum ]\r\n setCounts( [ data[0], data[1], data[2], data[3], data[4] ] );\r\n },\r\n error: ( result ) => {\r\n setCounts( [ 0, 0, 0, 0, 0.0, 0 ] );\r\n }\r\n });\r\n setTimeout( loadCounts, duration );\r\n }\r\n\r\n}\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtFmCheckboxField from '../first/ftFmCheckboxField';\r\nimport FtFmSearchField from '../first/ftFmSearchField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport { ftPopupOptions } from '../first/ftPopupOptions';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport GenLookup from '../models/genLookup';\r\nimport Attendee from '../models/attendee';\r\n\r\n//********************************************************************\r\n// PageConfregisCards\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageConfregisCards( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ formKey , setFormKey ] = useState( Ft.randomStr() );\r\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\r\n const [ lkpAssembly , setLkpAssembly ] = useState( [] );\r\n const [ lkpRegion , setLkpRegion ] = useState( [] );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( mdlAttendee, lkpAssembly, lkpRegion ) ) return ftBusy( { popup: popup } );\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n //- load lookups -----\r\n setBusy( true );\r\n FtRapi.callList( 'assemblyLookup', {\r\n success: ( result, data ) => {\r\n setLkpAssembly( data[0] );\r\n setLkpRegion( data[1] );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'reportConfregisCards', {\r\n surname : mdlAttendee!.surname,\r\n rsaid_no : mdlAttendee!.rsaid_no,\r\n assembly_id : mdlAttendee!.assembly_id,\r\n region_id : mdlAttendee!.region_id,\r\n card_printed : mdlAttendee!.card_printed ? 1 : 0\r\n } );\r\n ftPopupOptions( setPopup, \"Confirm\", \"Did the cards Print Correctly\", { onA: () => markAsPrinted(), btnA: \"Yes\", btnB: \"No\" });\r\n }\r\n\r\n function markAsPrinted(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callNew( 'ConfregisCardsMark', {\r\n success: ( { message }, data ) => {\r\n setMdlAttendee( new Attendee() );\r\n setFormKey( Ft.randomStr() );\r\n ftPopupMessage( setPopup, \"Success\", message, { btn: \"Close\", onClose: nav.pop } );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextareaField from '../first/ftFmTextareaField';\r\nimport FtFmDropdownField from '../first/ftFmDropdownField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport GenLookup from '../models/genLookup';\r\n\r\nconst TYPE_VIP: number = 1;\r\nconst TYPE_VOLUNTEER: number = 2;\r\n\r\n//********************************************************************\r\n// PageConfregisCardsExtra\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageConfregisCardsExtra( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ formKey , setFormKey ] = useState( Ft.randomStr() );\r\n const [ lkpType , setLkpType ] = useState( null );\r\n const [ mdlInfo , setMdlInfo ] = useState( { type_id: 1, names: '' } );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( mdlInfo, lkpType ) ) return ftBusy( { popup: popup } );\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n setLkpType( [\r\n ( new GenLookup() ).copyFrom( { id: TYPE_VIP , name: 'VIP' } ),\r\n ( new GenLookup() ).copyFrom( { id: TYPE_VOLUNTEER , name: 'Volunteer' } ),\r\n ]);\r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'reportConfregisCardsExtra', {\r\n type_id : mdlInfo!.type_id,\r\n names : mdlInfo!.names,\r\n } );\r\n }\r\n}\r\n","import React, { useState } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport Attendee from '../models/attendee';\r\n\r\n//********************************************************************\r\n// PageReportConfregisSummaryTotal\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportConfregisSummaryTotal( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy ) return ftBusy( { popup: popup } ); // || Ft.eAny( mdlDataTest, mdlCatClass )\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onLoad(): void \r\n {\r\n setBusy( true );\r\n Ut.loadLookups( {\r\n success: ( result, data ) => setBusy( false ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n }); \r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'reportConfregisSummaryTotal' );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport Attendee from '../models/attendee';\r\n\r\n//********************************************************************\r\n// PageReportConfregisAttendees\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportConfregisAttendees( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy ) return ftBusy( { popup: popup } ); // || Ft.eAny( mdlDataTest, mdlCatClass )\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onLoad(): void \r\n {\r\n setBusy( true );\r\n Ut.loadLookups( {\r\n success: ( result, data ) => setBusy( false ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n }); \r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'reportConfregisAttendees' );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport Attendee from '../models/attendee';\r\n\r\n//********************************************************************\r\n// PageReportConfregisByRegion\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportConfregisByRegion( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy ) return ftBusy( { popup: popup } ); // || Ft.eAny( mdlDataTest, mdlCatClass )\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onLoad(): void \r\n {\r\n setBusy( true );\r\n Ut.loadLookups( {\r\n success: ( result, data ) => setBusy( false ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n }); \r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'reportConfregisByRegion' );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport Attendee from '../models/attendee';\r\n\r\n//********************************************************************\r\n// PageReportConfregisByType\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportConfregisByType( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy ) return ftBusy( { popup: popup } ); // || Ft.eAny( mdlDataTest, mdlCatClass )\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onLoad(): void \r\n {\r\n setBusy( true );\r\n Ut.loadLookups( {\r\n success: ( result, data ) => setBusy( false ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n }); \r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'reportConfregisByType' );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport Attendee from '../models/attendee';\r\n\r\n//********************************************************************\r\n// PageReportConfregisByRegionNoId\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportConfregisByRegionNoId( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy ) return ftBusy( { popup: popup } ); // || Ft.eAny( mdlDataTest, mdlCatClass )\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onLoad(): void \r\n {\r\n setBusy( true );\r\n Ut.loadLookups( {\r\n success: ( result, data ) => setBusy( false ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n }); \r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'reportConfregisByRegionNoId' );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport Attendee from '../models/attendee';\r\n\r\n//********************************************************************\r\n// PageReportConfregisQuorumDetail\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportConfregisQuorumDetail( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy ) return ftBusy( { popup: popup } ); // || Ft.eAny( mdlDataTest, mdlCatClass )\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void \r\n {\r\n setBusy( true );\r\n Ut.loadLookups( {\r\n success: ( result, data ) => setBusy( false ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n }); \r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'reportConfregisQuorumDetail' );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport Attendee from '../models/attendee';\r\n\r\n//********************************************************************\r\n// PageReportConfregisQuorumTotal\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportConfregisQuorumTotal( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy ) return ftBusy( { popup: popup } ); // || Ft.eAny( mdlDataTest, mdlCatClass )\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void \r\n {\r\n setBusy( true );\r\n Ut.loadLookups( {\r\n success: ( result, data ) => setBusy( false ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n }); \r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'reportConfregisQuorumTotal' );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmDropdownField from '../first/ftFmDropdownField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport Attendee from '../models/attendee';\r\n\r\n//********************************************************************\r\n// PageReportConfregisSummary\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportConfregisSummary( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy ) return ftBusy( { popup: popup } ); // || Ft.eAny( mdlDataTest, mdlCatClass )\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onLoad(): void \r\n {\r\n setBusy( true );\r\n Ut.loadLookups( {\r\n success: ( result, data ) => setBusy( false ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n }); \r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'reportConfregisSummary', { payment_method_id: mdlAttendee.payment_method_id } );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtText from '../first/ftText';\r\nimport Th from '../general/th';\r\n\r\n//********************************************************************\r\n// PageConfrecepStatistics\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageConfrecepStatistics( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ counts , setCounts ] = useState( [ 0, 0, 0, 0, 0.0, 0 ] ); // attendee counts: [ att_in, att_tot, asm_in, asm_tot, asm_prc, is_quorum ]\r\n const duration = 30000; // 30000\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n const [ attIn, attTot, asmIn, asmTot, asmPrc, isQuorum ] = counts;\r\n\r\n const descrStl: string = '100,C#0e71b0';\r\n const statStl: string = '180,C#000000';\r\n const quorStl: string = !!isQuorum ? '200,#008000' : '200,#ff0000'\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void \r\n {\r\n loadCounts();\r\n setTimeout( loadCounts, duration );\r\n }\r\n\r\n function dummyCounts(): void\r\n {\r\n const n = Math.floor( Math.random() * 1000 );\r\n setCounts([ n, 300 ]);\r\n setTimeout( dummyCounts, duration );\r\n }\r\n\r\n function loadCounts()\r\n {\r\n FtRapi.callRead( 'confrecepStatsRead', 0, {\r\n success: ( result, data ) => {\r\n // attendee counts: [ att_in, att_tot, asm_in, asm_tot, asm_prc, is_quorum ]\r\n setCounts( [ data[0], data[1], data[2], data[3], data[4], data[5] ] );\r\n },\r\n error: ( result ) => {\r\n setCounts( [ 0, 0, 0, 0, 0.0, 0 ] );\r\n }\r\n });\r\n setTimeout( loadCounts, duration );\r\n }\r\n\r\n}\r\n\r\n","/// FIRST: Framework Insuring Rapid Systems Typing\n///\n/// Copyright (c) 2024 Jaco Bekker T/A LightSoft\nimport React, { useState } from 'react';\nimport { Camera, CameraType, BarCodeScanningResult } from 'expo-camera';\nimport * as Device from 'expo-device';\nimport Ft from './ft';\nimport { FtConProps } from './ftTypes';\nimport FtCon from './ftCon';\nimport FtText from './ftText';\n\ninterface FtQrScannerProps extends FtConProps {\n onScan?: ( data: string ) => void;\n front?: boolean;\n distinct?: boolean;\n distReset?: number;\n onReset?: () => void;\n}\n\n//********************************************************************\n// FtQrScanner : mobile & web QR-Code Scanner\n// Note: tap on camera preview to switch between front and back cameras\n//\n// SCANNER-PROP DATA_TYPE DESCRIPTION DEFAULT VALUES \n// onScan code Scanned event handler, (data) => {..} - -\n// front bool True to use front camera on mobile, initial state only false -\n// distinct bool True to only call onScan on distinct QR data true -\n// distReset int Time to reset distinct status in milliseconds - int\n// onReset handler() on distReset handler to get notified on reset - -\n//\n// FTCON-PROP AFFECTS DATA_TYPE DESCRIPTION DEFAULT VALUES\n// onTap self handler() on tap/click handler function - -\n// onSize self handler(layout) on size handler function, called when View size changes - layout = { x, y, width, height } in pixels\n// ss self string size specification within parent container '' see below\n// md children string layout mode, responsive, see below - c/r/ac/ar/w > c=col, r=row, ac=anti-col, ar=anti-row, w=wrap\n// lt children string layout, '
,', responsive, see below - main : a/c/z/b/e > a=start, c=center, z=end, b=space-between, e=space-evenly; cross: a/c/z/s > a=start, c=center, z=end, s=stretch\n// flex self int size in main direction in ratio to other children - -\n// inflex self int 1/undefined, if mar* is not empty to set inner View flex=1 undefined use this only if: mar* not empty and md=r* and parent lt='*,s'\n// w self int/string width, pixels/percentage - -\n// h self int/string height, pixels/percentage - -\n// rat self number width to height ratio, ratio = width/height - -\n// bkgClr self string background color - '#'\n// bkgClrX self string background color when disabled - '#'\n// pad/* self int/array/string Padding descriptor, side = t/l/b/r 0 | | \n// mar/* self int/array/string Margin descriptor, side = t/l/b/r 0 | | \n// bor self int/array/string Border descriptor, all sides only 0 ',;'\n// show self int/bool Show/Hide true 0/1/false/true\n// en both int/bool enable contain, detetermines bkg vs bkgX 1 0/1/false/true\n// id self string id attribute to be applied to the innermost View for testing - -\n//\n// Notes:\n// TODO REVISE THIS\n// ~ tested with expo-camera: ~14.1.3\n// ~ NB!!! BEWARE state getters (from useState) are deep copied to a worker on another thread once Camera component \n// is started so any updates to them won't be visible from inside onScan handlers. State setters are safe to use,\n// but their previousState won't be updated either. \n// Possible Solutions: \n// - create state object and update the object members without changing the object itself.\n// - use state setter to update a flag and then trigger code on next render.\n//\n// Example:\n// { .. } } />\n//\nexport default function FtQrScanner(\n {\n front = false, distinct = true, distReset, \n bkgClr, show = true, en = true, rat = 1.5,\n onScan, onReset, onTap, \n ...props\n }: FtQrScannerProps\n): JSX.Element\n{\n //====================================================================\n // hooks\n\n //- hooks : no conditions here -----\n const [ lastScan , setLastScan ] = useState( { data: '' } as any ); // keep last scan to avoid looping over same scan\n const [ camFront , setCamFront ] = useState( front ); // true = front, false = back\n const [ permission , requestPermission ] = Camera.useCameraPermissions(); // camera permission getters & state\n const [ camKey , setCamKey ] = useState( Ft.randomStr() ); // must change key to reset camera on settings change\n const [ camLayout , setCamLayout ] = useState( { width: 1, height: 1 });\n\n //====================================================================\n // render\n\n //- prep field & container props -----\n const conProps: any = { // container properties\n rat: rat,\n bkgClr: ( !show || !en || !permission?.granted ) ? '#a0a0a0' : bkgClr,\n show, en,\n };\n const msgProps: any = {\n pad: 5,\n txtDescr: '16,w#ffffff;Arial',\n };\n\n if ( !show ) return ( );\n\n if ( !en ) return (\n \n \n \n ); \n\n if ( Device.osName == 'iOS' ) { // safari/iOS permissions get reset after every page reload\n if ( !permission ) return (\n \n \n \n );\n } else {\n if ( !permission ) return (\n \n \n \n );\n\n if ( !permission.granted ) return (\n \n \n \n );\n }\n\n return (\n setCamLayout( layout )}>\n \n \n );\n\n //====================================================================\n // event handlers\n\n function onTapRequest(): void\n {\n requestPermission().then( () => setCamKey( Ft.randomStr() ) );\n }\n\n function onTapFlip(): void\n {\n setCamFront( x => !x );\n setCamKey( Ft.randomStr() );\n if ( onTap != undefined ) onTap();\n }\n\n function handleScan( result: BarCodeScanningResult ): void\n {\n if ( Ft.e( result ) ) return;\n if ( distinct && result?.data == lastScan.data ) return;\n if ( !Ft.e( distReset ) ) setTimeout( handleReset, distReset );\n lastScan.data = result.data;\n if ( onScan != undefined ) onScan( result.data );\n }\n\n function handleReset(): void\n {\n lastScan.data = '';\n if ( onReset != undefined ) onReset();\n }\n}\n\nFtQrScanner.ftcompname = \"FtQrScanner\";\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtForm from '../first/ftForm';\r\nimport FtText from '../first/ftText';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtQrScanner from '../first/ftQrScanner';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport GenLookup from '../models/genLookup';\r\nimport Attendee from '../models/attendee';\r\nimport Reception from '../models/reception';\r\nimport PaymentMethod from '../models/paymentMethod';\r\n\r\n//********************************************************************\r\n// PageConfrecepScan\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageConfrecepScan( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlAtt , setMdlAtt ] = useState( null );\r\n const [ ren , setRen ] = useState( Ft.randomStr() ); // use to force rerender\r\n const [ mdlAtt2 , setMdlAtt2 ] = useState( new Attendee() );\r\n const [ lkpAssembly , setLkpAssembly ] = useState( [] );\r\n const [ lkpRegion , setLkpRegion ] = useState( [] );\r\n const [ lkpUserz , setLkpUserz ] = useState( [] );\r\n const [ formKey , setFormKey ] = useState( Ft.randomStr() ); // use to force reset form\r\n const [ info , setInfo ] = useState({\r\n msgReceive : 'Ready',\r\n msgPay : '',\r\n clrReceive : '#b29075',\r\n clrPay : '#b29075',\r\n });\r\n const resetTime = 5000;\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( lkpAssembly, lkpRegion, lkpUserz, Ut.lkpPayMethod ) ) return ftBusy( { popup: popup } );\r\n\r\n const stlFrame: any = {\r\n ...Th.frame,\r\n ss : '12|12|12|12|9',\r\n };\r\n const stlAttInfo: any = {\r\n ss : '12|4',\r\n txtDescr: '18,WCO#404040',\r\n };\r\n const stlMsg: any = {\r\n ss: '12',\r\n txtDescr: '18,WCO#ffffff',\r\n };\r\n const stlBox: any = {\r\n bor: '2,#01457d',\r\n pad: '10',\r\n };\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n x.id == mdlAtt?.assembly_id )?.name ?? ''}`} />\r\n x.id == mdlAtt?.region_id )?.name ?? ''}`} />\r\n x.id == mdlAtt?.payment_method_id )?.name ?? ''}`} />\r\n \r\n \r\n \r\n\r\n \r\n setReception( mdlAtt2.rsaid_no! )}\r\n >\r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n //- load lookups -----\r\n setBusy( true );\r\n\r\n FtRapi.callList( 'assemblyLookup', {\r\n success: ( result, data ) => {\r\n setLkpAssembly( data[0] );\r\n setLkpRegion( data[1] );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n });\r\n\r\n FtRapi.callList( 'userzLookup', {\r\n success: ( result, data ) => setLkpUserz( data[0] ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n });\r\n\r\n Ut.loadLookups( {\r\n success: ( result, data ) => setBusy( false ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n });\r\n }\r\n\r\n function setReception( data: string ): void\r\n {\r\n FtRapi.callNew( 'ConfrecepScan', {\r\n urlParms: { rsaid_no: data },\r\n success: ( result, data ) => {\r\n if ( data[1] == 1 ) { // received OK\r\n info.clrReceive = '#008000';\r\n info.msgReceive = 'Attendee Received OK';\r\n } else { // already received previously\r\n const rec: Reception = data[2];\r\n info.clrReceive = '#ff0000';\r\n info.msgReceive \r\n = 'Already received\\n'\r\n + `at '${Ft.tmFmtMin( rec.scan_dttm )}'\\n`\r\n + `by '${lkpUserz.find( x => x.id == rec.user_id )?.name ?? 'Unkown'}'`;\r\n }\r\n if ( data[0].payment_method_id != PaymentMethod.PM_NONE ) { // paid\r\n info.msgPay = 'Paid';\r\n info.clrPay = '#008000';\r\n } else { // not-paid\r\n info.msgPay = 'Not Paid';\r\n info.clrPay = '#ff0000';\r\n }\r\n setMdlAtt( data[0] );\r\n },\r\n error: ( { message } ) => {\r\n info.msgReceive = message;\r\n info.msgBkg = '#ff0000';\r\n info.msgPay = '';\r\n setMdlAtt( new Attendee() );\r\n },\r\n complete: () => {\r\n setBusy( false );\r\n setTimeout( resetDisplay, resetTime );\r\n }\r\n });\r\n }\r\n\r\n function resetDisplay(): void\r\n {\r\n info.msgReceive = 'Ready';\r\n info.msgPay = '';\r\n info.clrReceive = '#b29075';\r\n info.clrPay = '#b29075';\r\n setMdlAtt( new Attendee() );\r\n setFormKey( Ft.randomStr() );\r\n }\r\n}\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtForm from '../first/ftForm';\r\nimport FtText from '../first/ftText';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtQrScanner from '../first/ftQrScanner';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport GenLookup from '../models/genLookup';\r\nimport Attendee from '../models/attendee';\r\n\r\n//********************************************************************\r\n// PageConfrecepGoodyScan\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageConfrecepGoodyScan( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlAtt , setMdlAtt ] = useState( null );\r\n const [ ren , setRen ] = useState( Ft.randomStr() ); // use to force rerender\r\n const [ mdlAtt2 , setMdlAtt2 ] = useState( new Attendee() );\r\n const [ lkpAssembly , setLkpAssembly ] = useState( [] );\r\n const [ lkpRegion , setLkpRegion ] = useState( [] );\r\n const [ lkpUserz , setLkpUserz ] = useState( [] );\r\n const [ formKey , setFormKey ] = useState( Ft.randomStr() ); // use to force reset form\r\n const [ info , setInfo ] = useState({\r\n msgReceive : 'Ready',\r\n clrReceive : '#b29075',\r\n });\r\n const resetTime = 5000;\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy || Ft.eAny( lkpAssembly, lkpRegion, lkpUserz ) ) return ftBusy( { popup: popup } );\r\n\r\n const stlFrame: any = {\r\n ...Th.frame,\r\n ss : '12|12|12|12|9',\r\n };\r\n const stlAttInfo: any = {\r\n ss : '12|4',\r\n txtDescr: '18,WCO#404040',\r\n };\r\n const stlMsg: any = {\r\n ss: '12',\r\n txtDescr: '18,WCO#ffffff',\r\n };\r\n const stlBox: any = {\r\n bor: '2,#01457d',\r\n pad: '10',\r\n };\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n x.id == mdlAtt?.assembly_id )?.name ?? ''}`} />\r\n x.id == mdlAtt?.region_id )?.name ?? ''}`} />\r\n x.id == mdlAtt?.payment_method_id )?.name ?? ''}`} />\r\n \r\n \r\n \r\n\r\n \r\n setReception( mdlAtt2.rsaid_no! )}\r\n >\r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n //- load lookups -----\r\n setBusy( true );\r\n\r\n FtRapi.callList( 'assemblyLookup', {\r\n success: ( result, data ) => {\r\n setLkpAssembly( data[0] );\r\n setLkpRegion( data[1] );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n });\r\n\r\n FtRapi.callList( 'userzLookup', {\r\n success: ( result, data ) => setLkpUserz( data[0] ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n });\r\n\r\n Ut.loadLookups( {\r\n success: ( result, data ) => setBusy( false ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n });\r\n }\r\n\r\n function setReception( data: string ): void\r\n {\r\n FtRapi.callNew( 'ConfrecepGoodyScan', {\r\n urlParms: { rsaid_no: data },\r\n success: ( result, data ) => {\r\n if ( data[1] == 1 ) { // received OK\r\n info.clrReceive = '#008000';\r\n info.msgReceive = 'Received OK';\r\n } else { // already received previously\r\n info.clrReceive = '#ff0000';\r\n info.msgReceive \r\n = 'Already scanned\\n'\r\n + `on '${Ft.dtFmt( data[0].goodybag_scan_dttm, 'D MMMM' )}'\\n`\r\n + `at '${Ft.tmFmtMin( data[0].goodybag_scan_dttm )}'\\n`\r\n + `by '${lkpUserz.find( x => x.id == data[0].goodybag_scan_user_id )?.name ?? 'Unkown'}'`;\r\n }\r\n setMdlAtt( data[0] );\r\n },\r\n error: ( { message } ) => {\r\n info.msgReceive = message;\r\n info.msgBkg = '#ff0000';\r\n info.msgPay = '';\r\n setMdlAtt( new Attendee() );\r\n },\r\n complete: () => {\r\n setBusy( false );\r\n setTimeout( resetDisplay, resetTime );\r\n }\r\n });\r\n }\r\n\r\n function resetDisplay(): void\r\n {\r\n info.msgReceive = 'Ready';\r\n info.clrReceive = '#b29075';\r\n setMdlAtt( new Attendee() );\r\n setFormKey( Ft.randomStr() );\r\n }\r\n}\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtFmDateField from '../first/ftFmDateField';\r\nimport FtFmSearchField from '../first/ftFmSearchField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport GenLookup from '../models/genLookup';\r\nimport Attendee from '../models/attendee';\r\nimport Reception from '../models/reception';\r\n\r\n//********************************************************************\r\n// PageReportConfrecepSummary\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportConfrecepSummary( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\r\n const [ mdlReception , setMdlReception ] = useState( new Reception() );\r\n const [ lkpAssembly , setLkpAssembly ] = useState( [] );\r\n const [ lkpRegion , setLkpRegion ] = useState( [] ); \r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy || Ft.eAny( lkpAssembly, lkpRegion ) ) return ftBusy( { popup: popup } );\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n \r\n function onLoad(): void\r\n {\r\n //- load lookups -----\r\n setBusy( true );\r\n FtRapi.callList( 'assemblyLookup', {\r\n success: ( result, data ) => {\r\n setLkpAssembly( data[0] );\r\n setLkpRegion( data[1] );\r\n mdlReception!.receive_date = Ft.dtTodayAsDate();\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'ReportConfrecepSummary', {\r\n surname : mdlAttendee!.surname,\r\n rsaid_no : mdlAttendee!.rsaid_no,\r\n assembly_id : mdlAttendee!.assembly_id,\r\n region_id : mdlAttendee!.region_id,\r\n receive_date : Ft.dtFmt( mdlReception!.receive_date ),\r\n } );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport Attendee from '../models/attendee';\r\n\r\n//********************************************************************\r\n// PageReportConfrecepDetail\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportConfrecepDetail( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlAttendee , setMdlAttendee ] = useState( new Attendee() );\r\n\r\n //- hooks: effect/startup -----\r\n // useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy ) return ftBusy( { popup: popup } ); // || Ft.eAny( mdlDataTest, mdlCatClass )\r\n\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void \r\n {\r\n setBusy( true );\r\n Ut.loadLookups( {\r\n success: ( result, data ) => setBusy( false ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n }); \r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'reportConfrecepDetail' );\r\n }\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtText from '../first/ftText';\r\nimport FtButton from '../first/ftButton';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\r\nimport Th from '../general/th';\r\n\r\nimport GenLookup from '../models/genLookup';\r\nimport VotingPosition from '../models/votingPosition';\r\nimport VotingRound from '../models/votingRound';\r\nimport PositionStatus from '../models/positionStatus';\r\nimport RoundStatus from '../models/roundStatus';\r\n\r\n//********************************************************************\r\n// PageVoteProcessManager\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageVoteProcessManager( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ lkpPositionStatus , setLkpPositionStatus ] = useState( null );\r\n const [ lkpRoundStatus , setLkpRoundStatus ] = useState( null );\r\n const [ lkpCandidateStatus , setLkpCandidateStatus ] = useState( null );\r\n const [ refPositionStatus , setRefPositionStatus ] = useState( null );\r\n const [ refRoundStatus , setRefRoundStatus ] = useState( null );\r\n const [ lstPosition , setLstPosition ] = useState( null );\r\n const [ lstRound , setLstRound ] = useState( null );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( () => loadData(), [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( lkpPositionStatus, lkpRoundStatus, lkpCandidateStatus, refPositionStatus, refRoundStatus, lstPosition, lstRound ) ) return ftBusy( { popup: popup } );\r\n\r\n /*\r\n DESIGN:\r\n\r\n === Positions ===\r\n | | [Open] | [Close] | [Reverse]\r\n ...\r\n =================\r\n\r\n === Rounds ===\r\n | | | [Start Processing] | [Close] | [Reverse]\r\n ...\r\n [Open Next Round]\r\n ==============\r\n */\r\n\r\n const txtHeading: any = {\r\n txtDescr: '20,WCO#005493'\r\n };\r\n const txtItem: any = {\r\n txtDescr: '18,WCO#000000'\r\n };\r\n const txtPosition: any = {\r\n txtDescr: '22,WCO#2196f3'\r\n };\r\n const btnPropsGr: any = {\r\n clr : \"#008000\",\r\n clrX : \"#cccccc\",\r\n txtClr : \"#ffffff\",\r\n txtClrX : \"#000000\",\r\n pad: 3\r\n };\r\n const btnPropsOr: any = {\r\n clr : \"#e67e22\",\r\n clrX : \"#cccccc\",\r\n txtClr : \"#ffffff\",\r\n txtClrX : \"#000000\",\r\n pad: 3\r\n }; \r\n\r\n return (\r\n {popup}\r\n\r\n {/* === Positions box =====================================================================*/}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {lstPosition!.map( pos => (\r\n \r\n \r\n \r\n \r\n posOpen( pos )} />\r\n posClose( pos )} />\r\n posReverse( pos )} />\r\n \r\n \r\n ))}\r\n \r\n\r\n {/* === Rounds box =====================================================================*/}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {lstPosition!.map( pos => (<>\r\n \r\n {Ft.lq( lstRound! ).where( x => x.position_id == pos.id ).toArray().map( ( rnd, idx, lst ) => (\r\n \r\n \r\n \r\n \r\n roundProcess( rnd )} />\r\n roundClose( rnd )} />\r\n roundReverse( rnd )} />\r\n \r\n \r\n ))}\r\n \r\n roundOpen( pos )} />\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n\r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function loadData(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callRead( 'VoteBasicsRead', 0, {\r\n success: ( result, data ) => {\r\n setLkpPositionStatus( data[0] );\r\n setRefPositionStatus( Ft.objArrToIdVal( data[0] ) );\r\n setLkpRoundStatus( data[1] );\r\n setRefRoundStatus( Ft.objArrToIdVal( data[1] ) );\r\n setLkpCandidateStatus( data[2] );\r\n setLstPosition( data[3] );\r\n setLstRound( data[4] );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n } );\r\n }\r\n\r\n function posCanOpen( pos: VotingPosition ): boolean\r\n {\r\n if ( pos.status_id != PositionStatus.PS_TO_BE_DONE ) return false;\r\n if ( Ft.lq( lstPosition! ).any( x => x.id != pos.id && x.status_id == PositionStatus.PS_OPEN ) ) return false; // bail if any other position is open\r\n return true;\r\n }\r\n\r\n function posCanClose( pos: VotingPosition ): boolean\r\n {\r\n if ( pos.status_id != PositionStatus.PS_OPEN ) return false; // status == open\r\n if ( Ft.lq( lstRound! ).any( x => x.position_id == pos.id && x.status_id != RoundStatus.RS_COMPLETED ) ) return false; //all rounds status == completed\r\n return true;\r\n }\r\n\r\n function posCanReverse( pos: VotingPosition ): boolean\r\n {\r\n return pos.status_id != PositionStatus.PS_TO_BE_DONE; // any position can be reversed if not status is to-be-done\r\n }\r\n\r\n function posOpen( pos: VotingPosition ): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to open this position?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VotePositionOpen', pos!.id, {\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", \"Position opened successfully\", { btn: \"Close\", onClose: loadData }),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData }),\r\n complete: () => setBusy( false ),\r\n });\r\n } } );\r\n }\r\n\r\n function posClose( pos: VotingPosition ): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to close this position?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VotePositionClose', 0, {\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", \"Position closed successfully\", { btn: \"Close\", onClose: loadData }),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData }),\r\n complete: () => setBusy( false ),\r\n });\r\n } } );\r\n }\r\n\r\n function posReverse( pos: VotingPosition ): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \r\n \"Are you sure you want to reverse this position, this cannot be undone and all votes will be permanently deleted?\", \r\n { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VotePositionReverse', pos.id, {\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", \"Position reversed successfully\", { btn: \"Close\", onClose: loadData }),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData }),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n });\r\n }\r\n\r\n function roundStatus( rnd: VotingRound ): string\r\n {\r\n return rnd.status_id != RoundStatus.RS_COMPLETED\r\n ? refRoundStatus![ rnd.status_id! ]\r\n : \"Completed and displaying results\";\r\n }\r\n\r\n function roundCanOpen( pos: VotingPosition ): boolean\r\n {\r\n if ( pos.status_id != PositionStatus.PS_OPEN ) return false; // pos status == open\r\n const lastRound = Ft.lq( lstRound! ).where( x => x.position_id == pos.id ).orderBy( x => x.id ).last();\r\n if ( lastRound.status_id == RoundStatus.RS_CREATED || lastRound.status_id == RoundStatus.RS_COMPLETED ) return true; // last round == created || == completed\r\n return false;\r\n }\r\n\r\n function openRoundBtnText( pos: VotingPosition ): string\r\n {\r\n if ( !roundCanOpen( pos ) ) return '';\r\n const lastRound = Ft.lq( lstRound! ).where( x => x.position_id == pos.id ).orderBy( x => x.id ).last();\r\n return lastRound.round_no == 0 && lastRound.status_id == RoundStatus.RS_CREATED\r\n ? \"Open Round for Nominations\"\r\n : \"Open Next Round for Voting\";\r\n }\r\n\r\n function roundCanProcess( rnd: VotingRound ): boolean\r\n {\r\n return rnd.status_id == RoundStatus.RS_OPEN_FOR_VOTING;\r\n }\r\n\r\n function roundCanClose( rnd: VotingRound ): boolean\r\n {\r\n return rnd.status_id == RoundStatus.RS_APPROVED_FINAL;\r\n }\r\n\r\n function roundCanReverse( rnd: VotingRound, lst: VotingRound[] ): boolean\r\n {\r\n return rnd.status_id != RoundStatus.RS_CREATED && rnd.id == lst?.findLast( x => true )?.id;\r\n }\r\n\r\n function roundOpen( pos: VotingPosition ): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to open this round?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VoteRoundOpen', 0, {\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", \"Round opened successfully\", { btn: \"Close\", onClose: loadData }),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData }),\r\n complete: () => setBusy( false ),\r\n });\r\n } });\r\n }\r\n\r\n function roundProcess( rnd: VotingRound ): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to start processing on this round?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VoteRoundProcess', 0, {\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", \"Round switched to 'Processing' successfully\", { btn: \"Close\", onClose: loadData }),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData }),\r\n complete: () => setBusy( false ),\r\n });\r\n }});\r\n }\r\n\r\n function roundClose( rnd: VotingRound ): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to close this round and display its results?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VoteRoundClose', 0, {\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", \"Round closed successfully\", { btn: \"Close\", onClose: loadData }),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData }),\r\n complete: () => setBusy( false ),\r\n });\r\n }});\r\n }\r\n\r\n function roundReverse( rnd: VotingRound ): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \r\n \"Are you sure you want to reverse this round, all round votes will be deleted permanently and cannot be undone?\", \r\n { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VoteRoundReverse', 0, {\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", \"Round reversed successfully\", { btn: \"Close\", onClose: loadData }),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData }),\r\n complete: () => setBusy( false ),\r\n });\r\n } \r\n });\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtText from '../first/ftText';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmIntegerField from '../first/ftFmIntegerField';\r\nimport FtFmSearchField from '../first/ftFmSearchField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\r\nimport Th from '../general/th';\r\n\r\nimport GenLookup from '../models/genLookup';\r\nimport VotingPosition from '../models/votingPosition';\r\nimport VotingRound from '../models/votingRound';\r\nimport VotingCandidate from '../models/votingCandidate';\r\n\r\n//********************************************************************\r\n// PageVoteCaptureNomin\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageVoteCaptureNomin( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlPosition , setMdlPosition ] = useState( null );\r\n const [ mdlRound , setMdlRound ] = useState( null );\r\n const [ mdlCandidate , setMdlCandidate ] = useState( new VotingCandidate() );\r\n const [ lkpCandidate , setLkpCandidate ] = useState( null );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy || Ft.eAny( mdlPosition, mdlRound, lkpCandidate ) ) return ftBusy( { popup: popup } );\r\n\r\n /*\r\n DESIGN:\r\n === Current Status ===\r\n Open Position : None/\r\n Open Round : None/\r\n ======================\r\n\r\n === Capture New Candidate ===\r\n Candidate: \r\n Votes: \r\n =============================\r\n */\r\n\r\n const txtStatus: any = {\r\n ss: '12',\r\n txtDescr: '20,WCO#273891',\r\n };\r\n\r\n //- render -----\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void \r\n {\r\n loadData();\r\n }\r\n\r\n function loadData()\r\n {\r\n setBusy( true );\r\n FtRapi.callList( 'VoteCaptureInfoNomin', {\r\n success: ( result, data ) => {\r\n setMdlPosition( data[0] );\r\n setMdlRound( data[1] );\r\n setLkpCandidate( data[2] );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function onSave(): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to capture this candidate?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callNew( 'VoteCandidateNew', {\r\n inRec: mdlCandidate,\r\n success: ( result, data ) => {\r\n setMdlCandidate( new VotingCandidate() );\r\n ftPopupMessage( setPopup, \"Success\", result.message, {} );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ), // Ft.dirs( \"ERROR:\", result );\r\n complete: () => setBusy( false ),\r\n });\r\n } } );\r\n }\r\n}\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtText from '../first/ftText';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtFmIntegerField from '../first/ftFmIntegerField';\r\nimport FtButton from '../first/ftButton';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\r\nimport Th from '../general/th';\r\n\r\nimport VotingPosition from '../models/votingPosition';\r\nimport VotingRound from '../models/votingRound';\r\nimport VotingCandidate from '../models/votingCandidate';\r\nimport CandidateStatus from '../models/candidateStatus';\r\n\r\n//********************************************************************\r\n// PageVoteApprovalPrimary\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageVoteApprovalPrimary( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlPosition , setMdlPosition ] = useState( null );\r\n const [ mdlRound , setMdlRound ] = useState( null );\r\n const [ mdlCandidate , setMdlCandidate ] = useState( new VotingCandidate() );\r\n const [ lstCandidate , setLstCandidate ] = useState( [] );\r\n const [ showEdit , setShowEdit ] = useState( false );\r\n const [ formKey , setFormKey ] = useState( Ft.key() ); // used to force rerender of form\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( mdlPosition, mdlRound ) ) return ftBusy( { popup: popup } );\r\n\r\n /*\r\n PREMISE:\r\n this function approves or rectifies votes on existing candidates\r\n candidates can only be deleted during nomination round\r\n approving hides buttons\r\n any updates reloads whole screen\r\n\r\n DESIGN:\r\n === Current Status ===\r\n Open Position : None/\r\n Open Round : None/\r\n ======================\r\n\r\n === Edit Candidate ===========\r\n Name : \r\n Votes : \r\n ==============================\r\n\r\n === Approve Candidates (Primary) ===\r\n CANDIDATE VOTES ACTIONS\r\n [Edit] [Approve] [Delete]\r\n =============================\r\n */\r\n\r\n const txtStatus: any = {\r\n ss: '12',\r\n txtDescr: '20,WCO#273891',\r\n };\r\n const txtHeading: any = {\r\n txtDescr: '20,WO#005493',\r\n };\r\n const txtItem: any = {\r\n txtDescr: '18,WO#000000'\r\n };\r\n const btnProps: any = {\r\n clr : \"#008000\",\r\n clrX : \"#cccccc\",\r\n txtClr : \"#ffffff\",\r\n txtClrX : \"#000000\",\r\n pad: 3\r\n };\r\n const roundName = mdlRound?.round_no == 0 ? 'Nomination' : `${mdlRound?.round_no}`;\r\n\r\n //- render -----\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {lstCandidate.map( can => (<>\r\n \r\n \r\n \r\n candidateEdit( can )} />\r\n candidateApprove( can )} />\r\n candidateDelete( can )} show={mdlRound?.round_no === 0} />\r\n \r\n \r\n \r\n ))}\r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n loadData();\r\n }\r\n\r\n function loadData()\r\n {\r\n setBusy( true );\r\n FtRapi.callList( 'VoteApprovalInfo', {\r\n success: ( result, data ) => {\r\n setMdlPosition( data[0] );\r\n setMdlRound( data[1] );\r\n setLstCandidate( data[2] );\r\n setShowEdit( false );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function onSave(): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to save the new votes?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VotePrimaryRevote', mdlCandidate.id, {\r\n urlParms: { vote_count: mdlCandidate.vote_count },\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", result.message, { onClose: loadData } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData } ),\r\n complete: () => setBusy( false ),\r\n });\r\n } } );\r\n }\r\n\r\n function showButtons( can: VotingCandidate ): boolean\r\n {\r\n return can.status_id == CandidateStatus.CS_OPEN_FOR_VOTING;\r\n }\r\n\r\n function candidateEdit( can: VotingCandidate ): void\r\n {\r\n const can2: VotingCandidate = new VotingCandidate();\r\n can2.id = can.id;\r\n can2.name = can.name;\r\n can2.vote_count = can.vote_count;\r\n setMdlCandidate( can2 );\r\n setFormKey( Ft.key() );\r\n setShowEdit( true );\r\n }\r\n\r\n function onEditCancel(): void\r\n {\r\n setShowEdit( false );\r\n }\r\n\r\n function candidateApprove( can: VotingCandidate ): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to approve this candidate?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VotePrimaryApprove', can.id, {\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", result.message, { onClose: loadData } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData } ),\r\n complete: () => setBusy( false ),\r\n });\r\n } } );\r\n }\r\n\r\n function candidateDelete( can: VotingCandidate ): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to delete this candidate?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VotePrimaryDelete', can.id, {\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", result.message, { onClose: loadData } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData } ),\r\n complete: () => setBusy( false ),\r\n })\r\n } } );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtText from '../first/ftText';\r\nimport FtButton from '../first/ftButton';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\r\nimport Th from '../general/th';\r\n\r\nimport VotingPosition from '../models/votingPosition';\r\nimport VotingRound from '../models/votingRound';\r\nimport VotingCandidate from '../models/votingCandidate';\r\nimport CandidateStatus from '../models/candidateStatus';\r\n\r\n//********************************************************************\r\n// PageVoteApprovalSecondary\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageVoteApprovalSecondary( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlPosition , setMdlPosition ] = useState( null );\r\n const [ mdlRound , setMdlRound ] = useState( null );\r\n const [ lstCandidate , setLstCandidate ] = useState( [] );\r\n const [ totalDelegates , setTotalDelegates ] = useState( 0 );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( mdlPosition, mdlRound ) ) return ftBusy( { popup: popup } );\r\n\r\n /*\r\n PREMISE:\r\n this function approves or rejects votes on existing candidates\r\n approving hides buttons\r\n any updates reloads whole screen\r\n\r\n DESIGN:\r\n === Current Status ===\r\n Open Position : None/\r\n Open Round : None/\r\n ======================\r\n\r\n === Approve Candidates (Secondary) ===\r\n CANDIDATE VOTES ACTIONS\r\n [Approve] [Reject]\r\n =============================\r\n */\r\n\r\n const txtStatus: any = {\r\n ss: '12',\r\n txtDescr: '20,WO#273891',\r\n };\r\n const txtHeading: any = {\r\n txtDescr: '20,WO#005493'\r\n };\r\n const txtItem: any = {\r\n txtDescr: '18,WO#000000'\r\n };\r\n const btnProps: any = {\r\n clr : \"#008000\",\r\n clrX : \"#cccccc\",\r\n txtClr : \"#ffffff\",\r\n txtClrX : \"#000000\",\r\n pad: 3\r\n };\r\n const roundName = mdlRound?.round_no == 0 ? 'Nomination' : `${mdlRound?.round_no}`;\r\n const totalVotes: number = lstCandidate[0].total_count ?? 0;\r\n\r\n //- render -----\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {lstCandidate.map( can => (<>\r\n \r\n \r\n \r\n candidateApproval( can, true )} />\r\n candidateApproval( can, false )} />\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n loadData();\r\n }\r\n\r\n function loadData()\r\n {\r\n setBusy( true );\r\n FtRapi.callList( 'VoteApprovalInfo', {\r\n success: ( result, data ) => {\r\n setMdlPosition( data[0] );\r\n setMdlRound( data[1] );\r\n setLstCandidate( data[2] );\r\n setTotalDelegates( data[3] );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function showButtons( can: VotingCandidate ): boolean\r\n {\r\n return can.status_id == CandidateStatus.CS_APPROVED_PRIMARY;\r\n }\r\n\r\n function showApproved( can: VotingCandidate ): boolean\r\n {\r\n return can.status_id == CandidateStatus.CS_APPROVED_SECONDARY;\r\n }\r\n\r\n function showRejected( can: VotingCandidate ): boolean\r\n {\r\n return can.status_id == CandidateStatus.CS_OPEN_FOR_VOTING;\r\n } \r\n\r\n function candidateApproval( can: VotingCandidate, approved: boolean ): void\r\n {\r\n const msg: string = `Are you sure you want to ${approved ? 'approve' : 'reject'} this candidate's votes?`;\r\n ftPopupConfirm( setPopup, \"Confirmation\", msg, { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VoteSecondaryApproval', can.id, {\r\n urlParms: { approved: approved ? 1 : 0 },\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", result.message, { onClose: loadData } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData } ),\r\n complete: () => setBusy( false ),\r\n });\r\n } } );\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtText from '../first/ftText';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmTextField from '../first/ftFmTextField';\r\nimport FtFmTextareaField from '../first/ftFmTextareaField';\r\nimport FtButton from '../first/ftButton';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport { ftPopupConfirm } from '../first/ftPopupOptions';\r\nimport Th from '../general/th';\r\n\r\nimport VotingPosition from '../models/votingPosition';\r\nimport VotingRound from '../models/votingRound';\r\nimport VotingCandidate from '../models/votingCandidate';\r\nimport CandidateStatus from '../models/candidateStatus';\r\n\r\n//********************************************************************\r\n// PageVoteApprovalFinal\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageVoteApprovalFinal( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlPosition , setMdlPosition ] = useState( null );\r\n const [ mdlRound , setMdlRound ] = useState( null );\r\n const [ mdlCandidate , setMdlCandidate ] = useState( new VotingCandidate() );\r\n const [ lstCandidate , setLstCandidate ] = useState( [] );\r\n const [ showReject , setShowReject ] = useState( false );\r\n const [ formKey , setFormKey ] = useState( Ft.randomStr() ); // used to force rerender of form\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( mdlPosition, mdlRound ) ) return ftBusy( { popup: popup } );\r\n\r\n /*\r\n PREMISE:\r\n this function selects finalists or disquilifies candidates based on council approval\r\n candidates can only be disqualified during nomination round\r\n\r\n ACTIONS:\r\n remove from finalists\r\n make finalist\r\n disqualify\r\n requalify\r\n\r\n DESIGN:\r\n === Current Status ===\r\n Open Position : None/\r\n Open Round : None/\r\n ======================\r\n\r\n === Reject Candidate ===========\r\n Name : \r\n Reason : \r\n ==============================\r\n\r\n === Finalists ===============\r\n CANDIDATE VOTES ACTIONS\r\n [Remove from Finalists]\r\n =============================\r\n\r\n === Candidates ==============\r\n CANDIDATE VOTES ACTIONS\r\n [Make Finalist] [Disqualify]\r\n =============================\r\n\r\n === Rejected Candidates =====\r\n CANDIDATE VOTES ACTIONS\r\n [Requalify]\r\n =============================\r\n */\r\n\r\n const txtStatus: any = {\r\n ss: '12',\r\n txtDescr: '20,WCO#273891',\r\n };\r\n const txtHeading: any = {\r\n txtDescr: '20,WCO#005493'\r\n };\r\n const txtItem: any = {\r\n txtDescr: '18,WCO#000000'\r\n };\r\n const btnProps: any = {\r\n clr : \"#008000\",\r\n clrX : \"#cccccc\",\r\n txtClr : \"#ffffff\",\r\n txtClrX : \"#000000\",\r\n pad: 3\r\n };\r\n const ACT_FINALIST_SET: number = 1;\r\n const ACT_FINALIST_UNSET: number = 2;\r\n const ACT_DISQUALIFY_SET: number = 3;\r\n const ACT_DISQUALIFY_UNSET: number = 4;\r\n\r\n const roundName:string = mdlRound?.round_no == 0 ? 'Nomination' : `${mdlRound?.round_no}`;\r\n const isNomin: boolean = mdlRound?.round_no == 0;\r\n\r\n //- render -----\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {lstCandidate.map( can => ( isFinalist( can ) && (<>\r\n \r\n \r\n \r\n finalistUnset( can )} />\r\n \r\n )))}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {lstCandidate.map( can => ( isNormal( can ) && (<>\r\n \r\n \r\n \r\n finalistSet( can )} />\r\n disqualifySet( can )} />\r\n \r\n \r\n \r\n )))}\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {lstCandidate.map( can => ( isDisqualified( can ) && (<>\r\n \r\n \r\n \r\n disqualifyUnset( can )} />\r\n \r\n )))}\r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n loadData();\r\n }\r\n\r\n function loadData()\r\n {\r\n setBusy( true );\r\n FtRapi.callList( 'VoteApprovalInfo', {\r\n success: ( result, data ) => {\r\n setMdlPosition( data[0] );\r\n setMdlRound( data[1] );\r\n setLstCandidate( data[2] );\r\n setShowReject( false );\r\n },\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function isFinalist( can: VotingCandidate ): boolean\r\n {\r\n return can!.is_finalist == 1;\r\n }\r\n\r\n function isNormal( can: VotingCandidate ): boolean\r\n {\r\n return can!.is_finalist == 0 && can!.status_id != CandidateStatus.CS_DISQUALIFIED;\r\n }\r\n\r\n function isDisqualified( can: VotingCandidate ): boolean\r\n {\r\n return can!.is_finalist == 0 && can!.status_id == CandidateStatus.CS_DISQUALIFIED;\r\n }\r\n\r\n function showButtons( can: VotingCandidate ): boolean\r\n {\r\n return can.status_id == CandidateStatus.CS_APPROVED_SECONDARY;\r\n }\r\n\r\n function finalistSet( can: VotingCandidate ): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to make this candidate a finalist?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VoteFinalApproval', can.id, {\r\n urlParms: { action: ACT_FINALIST_SET },\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", result.message, { onClose: loadData } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData } ),\r\n complete: () => setBusy( false ),\r\n });\r\n } } );\r\n }\r\n\r\n function finalistUnset( can: VotingCandidate ): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to remove this candidate from the finalists?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VoteFinalApproval', can.id, {\r\n urlParms: { action: ACT_FINALIST_UNSET },\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", result.message, { onClose: loadData } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData } ),\r\n complete: () => setBusy( false ),\r\n });\r\n } } );\r\n }\r\n\r\n function disqualifySet( can: VotingCandidate ): void\r\n {\r\n const can2: VotingCandidate = new VotingCandidate();\r\n can2.id = can.id;\r\n can2.name = can.name;\r\n can2.disq_reason = '';\r\n setMdlCandidate( can2 );\r\n setFormKey( Ft.randomStr() );\r\n setShowReject( true );\r\n }\r\n\r\n function onSave(): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to disqualify this candidate?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VoteFinalApproval', mdlCandidate.id, {\r\n urlParms: {\r\n action : ACT_DISQUALIFY_SET,\r\n disq_reason : mdlCandidate.disq_reason,\r\n },\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", result.message, { onClose: loadData } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData } ),\r\n complete: () => setBusy( false ),\r\n });\r\n } } );\r\n }\r\n\r\n function disqualifyUnset( can: VotingCandidate ): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to remove this disqualification?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VoteFinalApproval', can.id, {\r\n urlParms: { action : ACT_DISQUALIFY_UNSET },\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", result.message, { onClose: loadData } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData } ),\r\n complete: () => setBusy( false ),\r\n });\r\n } } );\r\n }\r\n\r\n function enableSubmit(): boolean\r\n {\r\n const allSecondApproved = Ft.lq( lstCandidate ).all( can => can.status_approve_second_dttm != null );\r\n const anyFinalists: boolean = Ft.lq( lstCandidate ).any( can => can.is_finalist == 1 );\r\n return allSecondApproved && anyFinalists;\r\n }\r\n\r\n function submitFinalists(): void\r\n {\r\n ftPopupConfirm( setPopup, \"Confirmation\", \"Are you sure you want to submit these finalists?\", { onA: () => {\r\n setBusy( true );\r\n FtRapi.callUpdate( 'VoteRoundApprove', 0, {\r\n success: ( result, data ) => ftPopupMessage( setPopup, \"Success\", result.message, { onClose: nav.pop } ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: loadData } ),\r\n complete: () => setBusy( false ),\r\n });\r\n } } );\r\n }\r\n}","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtText from '../first/ftText';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmSearchField from '../first/ftFmSearchField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\n\r\nimport GenLookup from '../models/genLookup';\r\nimport VotingCandidate from '../models/votingCandidate';\r\nimport CandidateStatus from '../models/candidateStatus';\r\n\r\n//********************************************************************\r\n// PageVoteDisplayResults\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageVoteDisplayResults( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n\r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ lstCandidate , setLstCandidate ] = useState( [] );\r\n const [ lkpPosRound , setLkpPosRound ] = useState( [] );\r\n const [ mdlCandidate , setMdlCandidate ] = useState( new VotingCandidate() );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n if ( busy || Ft.eAny( lkpPosRound ) ) return ftBusy( { popup: popup } );\r\n\r\n const headProps: any = {\r\n txtDescr: '36,WCO#273891',\r\n };\r\n const infoProps: any = {\r\n txtDescr: '30,WCO#000000',\r\n };\r\n\r\n //- render -----\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {lstCandidate.map( can => (<>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void\r\n {\r\n loadData();\r\n }\r\n\r\n function loadData(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callList( 'VotePosRoundLookup', {\r\n success: (result, data) => setLkpPosRound( data[0] ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function onSearch(): void\r\n {\r\n setBusy( true );\r\n FtRapi.callList( 'VotePosRoundSearch', {\r\n urlParms: { round_id : mdlCandidate.round_id },\r\n success: ( result, data ) => setLstCandidate( data[0] ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtCon from '../first/ftCon';\r\nimport FtText from '../first/ftText';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport Th from '../general/th';\r\n\r\nimport VotingPosition from '../models/votingPosition';\r\nimport VotingRound from '../models/votingRound';\r\nimport VotingCandidate from '../models/votingCandidate';\r\nimport RoundStatus from '../models/roundStatus';\r\nimport GenLookup from '../models/genLookup';\r\n\r\nconst MSG_STATE_NONE = 0; // no position or round open Welcome to the AFM of SA GBM Conference\r\nconst MSG_STATE_POS_OPEN = 1; // position open and no rounds open Voting for to start soon\r\nconst MSG_STATE_RND_OPEN = 2; // position and round open Voting for in progress / / Nominations/Candidates: \r\nconst MSG_STATE_RND_PROC = 3; // position open and last round in correct or finalize Voting for in progress / being processed\r\nconst MSG_STATE_RND_COMPL = 4; // position open and last round completed Voting for in progress / completed\r\n\r\n//********************************************************************\r\n// PageVoteDisplayStatus\r\n// @FTGEN_PROGRESS: busy\r\n// ...todo: specify props here...\r\nexport default function PageVoteDisplayStatus( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ mdlPosition , setMdlPosition ] = useState( null );\r\n const [ mdlRound , setMdlRound ] = useState( null );\r\n const [ lkpCandidate , setLkpCandidate ] = useState( [] );\r\n const [ lstFinalist , setLstFinalist ] = useState( [] );\r\n const duration = 5000; \r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n\r\n //- calculate status -----\r\n const msgState = getMsgState( mdlPosition, mdlRound );\r\n\r\n //- styles -----\r\n const txtGbm: any = {\r\n ss: '12',\r\n lt: 'C,A',\r\n txtDescr: '80,#c04040',\r\n };\r\n const txtProgInd: any = {\r\n ss: '12',\r\n lt: 'C,A',\r\n txtDescr: '90,#0e71b0',\r\n }; \r\n const txtReady: any = {\r\n ss: '12',\r\n lt: 'C,A',\r\n txtDescr: '70,#0e71b0',\r\n }; \r\n\r\n //- render -----\r\n return (\r\n {popup}\r\n\r\n \r\n\r\n {/*=== No State =============================================*/}\r\n {(msgState != MSG_STATE_NONE ? (<>) : (<>\r\n \r\n \r\n ))}\r\n\r\n {/*=== Open Position Empty rounds =============================================*/}\r\n {(msgState != MSG_STATE_POS_OPEN ? (<>) : (<>\r\n \r\n \r\n ))}\r\n\r\n {/*=== Open Position and round open =============================================*/}\r\n {(msgState != MSG_STATE_RND_OPEN ? (<>) : (<>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {lkpCandidate.map( can => () )}\r\n \r\n \r\n ))}\r\n\r\n {/*=== Open Position and round in correction/finalization ========================*/}\r\n {(msgState != MSG_STATE_RND_PROC ? (<>) : (<>\r\n \r\n \r\n ))}\r\n\r\n {/*=== Open Position and round completed ========================================*/}\r\n {(msgState != MSG_STATE_RND_COMPL ? (<>) : (<>\r\n \r\n \r\n 0 ? 'FINALISTS' : 'NOMINATIONS'} />\r\n \r\n \r\n {lstFinalist.map( fin => (<>\r\n \r\n \r\n \r\n ) )}\r\n \r\n ))}\r\n\r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void \r\n {\r\n loadData();\r\n }\r\n\r\n function loadData(): void\r\n {\r\n FtRapi.callList( 'VoteStatusSearch', {\r\n success: ( result, data ) => {\r\n setMdlPosition( data[0] );\r\n setMdlRound( data[1] );\r\n setLkpCandidate( data[2] );\r\n setLstFinalist( data[3] );\r\n },\r\n // don't display errors, just let it revert to welcome message\r\n });\r\n setTimeout( loadData, duration );\r\n }\r\n\r\n // Get current message state\r\n // voting_position [openPos] Currently open position or null\r\n // voting_round [lastRound] Last round in currently open position or null\r\n function getMsgState( pos: VotingPosition|null, round: VotingRound|null ): number\r\n {\r\n if ( pos == null )\r\n return MSG_STATE_NONE; // no position or round open Welcome to the AFM of SA GBM Conference\r\n if ( round == null || round.round_no == 0 && round.status_id == RoundStatus.RS_CREATED )\r\n return MSG_STATE_POS_OPEN; // position open and no rounds open Voting for to start soon\r\n if ( round.status_id == RoundStatus.RS_OPEN_FOR_VOTING )\r\n return MSG_STATE_RND_OPEN; // position and round open Voting for in progress / / Nominations/Candidates: \r\n if ( round.status_id == RoundStatus.RS_PROCESSING || round.status_id == RoundStatus.RS_APPROVED_FINAL )\r\n return MSG_STATE_RND_PROC; // position open and last round in processing Voting for in progress / being finalized\r\n if ( round.status_id == RoundStatus.RS_COMPLETED )\r\n return MSG_STATE_RND_COMPL; // position open and last round completed Voting for in progress / completed\r\n return MSG_STATE_NONE; // no position or round open Welcome to the AFM of SA GBM Conference\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport type { FtPageProps } from '../first/ftTypes';\r\nimport Ft from '../first/ft';\r\nimport FtRapi from '../first/ftRapi';\r\nimport FtFrame from '../first/ftFrame';\r\nimport FtCanvas from '../first/ftCanvas';\r\nimport FtSpacer from '../first/ftSpacer';\r\nimport FtForm from '../first/ftForm';\r\nimport FtFmSubmit from '../first/ftFmSubmit';\r\nimport FtFmSearchField from '../first/ftFmSearchField';\r\nimport { ftBusy } from '../first/ftBusy';\r\nimport { ftPopupMessage } from '../first/ftPopupMessage';\r\nimport Th from '../general/th';\r\nimport Ut from '../general/ut';\r\n\r\nimport GenLookup from '../models/genLookup';\r\nimport VotingCandidate from '../models/votingCandidate';\r\n\r\n//********************************************************************\r\n// PageReportVoteResults\r\n// @FTGEN_PROGRESS: done\r\n// ...todo: specify props here...\r\nexport default function PageReportVoteResults( { navigation, options }: FtPageProps ): JSX.Element\r\n{\r\n //====================================================================\r\n // hooks: no conditions here\r\n \r\n //- hooks: state -----\r\n const nav = Ft.useNav( navigation );\r\n const [ popup , setPopup ] = useState( <> ); // placeholder for any popup message/options\r\n const [ busy , setBusy ] = useState( false );\r\n const [ lkpPosRound , setLkpPosRound ] = useState( [] );\r\n const [ mdlCandidate , setMdlCandidate ] = useState( new VotingCandidate() );\r\n\r\n //- hooks: effect/startup -----\r\n useEffect( onLoad, [] );\r\n\r\n //====================================================================\r\n // render\r\n \r\n if ( busy || Ft.eAny( lkpPosRound ) ) return ftBusy( { popup: popup } );\r\n\r\n //- render -----\r\n return (\r\n {popup}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n\r\n //====================================================================\r\n // event handlers\r\n\r\n function onLoad(): void \r\n {\r\n setBusy( true );\r\n FtRapi.callList( 'VotePosRoundLookup', {\r\n success: (result, data) => setLkpPosRound( data[0] ),\r\n error: ( { message } ) => ftPopupMessage( setPopup, \"Error\", message, { onClose: nav.pop } ),\r\n complete: () => setBusy( false ),\r\n });\r\n }\r\n\r\n function onGenerate(): void\r\n {\r\n Ut.openReport( 'reportVoteResults', { round_id: mdlCandidate.round_id } );\r\n }\r\n\r\n}\r\n","import 'react-native-gesture-handler';\nimport React, { useState, useEffect } from 'react';\nimport { useURL } from \"expo-linking\";\nimport FtAppInfo from './source/first/ftAppInfo';\nimport FtNavScreens from './source/first/ftNavScreens';\nimport appTheme from './source/general/theme';\nimport Models from './source/models';\nimport Ft from './source/first/ft';\n\n//- startups -----\nimport FragHeader from './source/fragments/fragHeader';\nimport PageLanding from \"./source/pages/pageLanding\";\nimport PageAuthLogin from \"./source/pages/pageAuthLogin\";\nimport PageMenu from \"./source/pages/pageMenu\";\nimport PageMenuConfRegister from \"./source/pages/pageMenuConfRegister\";\nimport PageMenuConfReception from \"./source/pages/pageMenuConfReception\";\nimport PageMenuVoting from \"./source/pages/pageMenuVoting\";\n//- system module -----\nimport PageUserSearch from \"./source/pages/pageUserSearch\";\nimport PageUserEdit from \"./source/pages/pageUserEdit\";\nimport PageTaskSearch from \"./source/pages/pageTaskSearch\";\nimport PageTaskEdit from \"./source/pages/pageTaskEdit\";\n//- pastors modules -----\nimport PagePastorSearch from \"./source/pages/pagePastorSearch\";\nimport PagePastorEdit from \"./source/pages/pagePastorEdit\";\nimport PagePastorSearchMob from \"./source/pages/pagePastorSearchMob\";\nimport PagePastorDetailMob from \"./source/pages/pagePastorDetailMob\";\nimport PageQualificationSearch from \"./source/pages/pageQualificationSearch\";\nimport PageQualificationEdit from \"./source/pages/pageQualificationEdit\";\nimport PagePastorFileSearch from \"./source/pages/pagePastorFileSearch\";\nimport PagePastorFileEdit from \"./source/pages/pagePastorFileEdit\";\nimport PageReportPastor40Year from \"./source/pages/pageReportPastor40Year\";\nimport PageReportPastoralStatus from \"./source/pages/pageReportPastoralStatus\";\nimport PageReportPastoralStatusLapsed from \"./source/pages/pageReportPastoralStatusLapsed\";\nimport PageReportPastoralStatusLapsedWarning from \"./source/pages/pageReportPastoralStatusLapsedWarning\";\nimport PageReportPastorDuplicates from \"./source/pages/pageReportPastorDuplicates\";\nimport PageReportPastorGender from \"./source/pages/pageReportPastorGender\";\nimport PageReportPastorMarriageOfficers from \"./source/pages/pageReportPastorMarriageOfficers\";\nimport PageReportPastorMovementAccepted from \"./source/pages/pageReportPastorMovementAccepted\";\nimport PageReportPastorMovementCalled from \"./source/pages/pageReportPastorMovementCalled\";\nimport PageReportPastorReinstated from \"./source/pages/pageReportPastorReinstated\";\nimport PageReportPastorRenewed from \"./source/pages/pageReportPastorRenewed\";\nimport PageReportPastorSecondedAll from \"./source/pages/pageReportPastorSecondedAll\";\nimport PageReportPastorSecondedForces from \"./source/pages/pageReportPastorSecondedForces\";\n//- assemblies-regions module -----\nimport PageAssemblySearch from \"./source/pages/pageAssemblySearch\";\nimport PageAssemblyEdit from \"./source/pages/pageAssemblyEdit\";\nimport PagePropertySearch from \"./source/pages/pagePropertySearch\";\nimport PagePropertyEdit from \"./source/pages/pagePropertyEdit\";\nimport PageRegionSearch from \"./source/pages/pageRegionSearch\";\nimport PageRegionEdit from \"./source/pages/pageRegionEdit\";\nimport PageReportAssemblyAddedLast6Months from \"./source/pages/pageReportAssemblyAddedLast6Months\";\nimport PageReportAssemblyNoPastors from \"./source/pages/pageReportAssemblyNoPastors\";\nimport PageReportAssemblyNumberList from \"./source/pages/pageReportAssemblyNumberList\";\nimport PageReportAssemblyNumberListSum from \"./source/pages/pageReportAssemblyNumberListSum\";\nimport PageReportAssemblyPastorsList from \"./source/pages/pageReportAssemblyPastorsList\";\nimport PageReportLabelAssemblySecretary from \"./source/pages/pageReportLabelAssemblySecretary\";\nimport PageReportLabelNoMailAddresses from \"./source/pages/pageReportLabelNoMailAddresses\";\nimport PageReportRegionList from \"./source/pages/pageReportRegionList\";\nimport PageReportRegionOfficeBearers from \"./source/pages/pageReportRegionOfficeBearers\";\n//- justice module -----\nimport PageJusticeSearch from \"./source/pages/pageJusticeSearch\";\nimport PageJusticeEdit from \"./source/pages/pageJusticeEdit\";\nimport PageJusticeNoteSearch from \"./source/pages/pageJusticeNoteSearch\";\nimport PageJusticeNoteEdit from \"./source/pages/pageJusticeNoteEdit\";\nimport PageJusticeFileSearch from \"./source/pages/pageJusticeFileSearch\";\nimport PageJusticeFileEdit from \"./source/pages/pageJusticeFileEdit\";\n//- conf registration module -----\nimport PageAttendeeNewOnline from \"./source/pages/pageAttendeeNewOnline\";\nimport PageAttendeeSearch from \"./source/pages/pageAttendeeSearch\";\nimport PageAttendeeEdit from \"./source/pages/pageAttendeeEdit\";\nimport PageConfregisStatistics from \"./source/pages/pageConfregisStatistics\";\nimport PageConfregisCards from './source/pages/pageConfregisCards';\nimport PageConfregisCardsExtra from './source/pages/pageConfregisCardsExtra';\nimport PageReportConfregisSummaryTotal from \"./source/pages/pageReportConfregisSummaryTotal\";\nimport PageReportConfregisAttendees from \"./source/pages/pageReportConfregisAttendees\";\nimport PageReportConfregisByRegion from \"./source/pages/pageReportConfregisByRegion\";\nimport PageReportConfregisByType from \"./source/pages/pageReportConfregisByType\";\nimport PageReportConfregisByRegionNoId from \"./source/pages/pageReportConfregisByRegionNoId\";\nimport PageReportConfregisQuorumDetail from \"./source/pages/pageReportConfregisQuorumDetail\";\nimport PageReportConfregisQuorumTotal from \"./source/pages/pageReportConfregisQuorumTotal\";\nimport PageReportConfregisSummary from \"./source/pages/pageReportConfregisSummary\";\n//- conf reception module -----\nimport PageConfrecepStatistics from \"./source/pages/pageConfrecepStatistics\";\nimport PageConfrecepScan from \"./source/pages/pageConfrecepScan\";\nimport PageConfrecepGoodyScan from \"./source/pages/pageConfrecepGoodyScan\";\nimport PageReportConfrecepSummary from \"./source/pages/pageReportConfrecepSummary\";\nimport PageReportConfrecepDetail from \"./source/pages/pageReportConfrecepDetail\";\n//- voting module -----\nimport PageVoteProcessManager from './source/pages/pageVoteProcessManager';\nimport PageVoteCaptureNomin from './source/pages/pageVoteCaptureNomin';\nimport PageVoteApprovalPrimary from './source/pages/pageVoteApprovalPrimary';\nimport PageVoteApprovalSecondary from './source/pages/pageVoteApprovalSecondary';\nimport PageVoteApprovalFinal from './source/pages/pageVoteApprovalFinal';\nimport PageVoteDisplayResults from './source/pages/pageVoteDisplayResults';\nimport PageVoteDisplayStatus from './source/pages/pageVoteDisplayStatus';\nimport PageReportVoteResults from './source/pages/pageReportVoteResults';\n\nModels.addModelsClassMap();\n\n//********************************************************************\n// App: application entry point\nexport default function App(): JSX.Element\n{\n //====================================================================\n // hooks: no conditions here\n const urlHook = useURL();\n const [ init, setInit ] = useState( false );\n const [ startPage, setStartPage ] = useState( 'Landing' ); // Landing\n\n useEffect( (): void => {\n FtAppInfo.staticInit({\n isDebug: false,\n version: '000202220095',\n orien: 'A',\n appId: '76f5a1a73802793ae2b2b76a4f045d206e6da78d304f89a551c5c738772a1bc05cf38171ff17f82ec657c5b048807ea4fbd56ba67f18f62f84f5c0a3cd4d8ce5',\n baseUrlDebug: 'https://localhost:7154/',\n baseUrlRelease: 'https://afminfosystem.azurewebsites.net/',\n title: 'Afmsa Information System',\n })\n .then( () => setInit( true ) );\n }, []);\n\n //====================================================================\n // render\n\n if ( !init ) return (<>);\n\n const url = Ft.parseUrl( urlHook );\n\n //- detect special pages from url -----\n if ( url.parms.hasOwnProperty( 'r' ) && url.parms.r == 'confRegister' && startPage != 'AttendeeNewOnline' )\n setStartPage( 'AttendeeNewOnline' );\n else if ( url.parms.hasOwnProperty( 'r' ) && url.parms.r == 'paymentSuccess' && startPage != 'AttendeeNewOnline' )\n setStartPage( 'AttendeeNewOnline' );\n\n //- render page -----\n return ( }\n screens={[\n //- startups -----\n { name: 'Landing' , title: 'AFM of SA Information System' , comp: p => () },\n { name: 'AuthLogin' , title: 'Log Into System' , comp: p => () },\n { name: 'Menu' , title: 'Home' , comp: p => () },\n { name: 'MenuConfRegister' , title: 'Conference/GBM Registrations' , comp: p => () },\n { name: 'MenuConfReception' , title: 'Conference/GBM Reception' , comp: p => () },\n { name: 'MenuVoting' , title: 'GBM Voting' , comp: p => () },\n //- system module -----\n { name: 'UserSearch' , title: 'User List' , comp: p => () },\n { name: 'UserEdit' , title: 'Edit User' , comp: p => () },\n { name: 'TaskSearch' , title: 'Task List' , comp: p => () },\n { name: 'TaskEdit' , title: 'Edit Task' , comp: p => () },\n //- pastors module -----\n { name: 'PastorSearch' , title: 'Pastor List' , comp: p => () },\n { name: 'PastorEdit' , title: 'Edit Pastor' , comp: p => () },\n { name: 'PastorSearchMob' , title: 'Pastor List' , comp: p => () },\n { name: 'PastorDetailMob' , title: 'Pastor Detail' , comp: p => () },\n { name: 'QualificationSearch' , title: 'Pastor Qualification List' , comp: p => () },\n { name: 'QualificationEdit' , title: 'Edit Pastor Qualification' , comp: p => () },\n { name: 'PastorFileSearch' , title: 'Pastor File List' , comp: p => () },\n { name: 'PastorFileEdit' , title: 'Edit Pastor File Edit' , comp: p => () },\n { name: 'ReportPastor40Year' , title: 'Pastor 40 Year Report' , comp: p => () },\n { name: 'ReportPastoralStatus' , title: 'Pastoral Status Report' , comp: p => () },\n { name: 'ReportPastoralStatusLapsed' , title: 'Pastoral Status Lapsed Report' , comp: p => () },\n { name: 'ReportPastoralStatusLapsedWarning' , title: 'Pastoral Status Lapsed Warning Report' , comp: p => () },\n { name: 'ReportPastorDuplicates' , title: 'Pastor Duplicates Report' , comp: p => () },\n { name: 'ReportPastorGender' , title: 'Pastor Gender Report' , comp: p => () },\n { name: 'ReportPastorMarriageOfficers' , title: 'Pastor Marriage Officers Report' , comp: p => () },\n { name: 'ReportPastorMovementAccepted' , title: 'Pastor Movement Accepted Report' , comp: p => () },\n { name: 'ReportPastorMovementCalled' , title: 'Pastor Movement Called Report' , comp: p => () },\n { name: 'ReportPastorReinstated' , title: 'Pastor Reinstated Report' , comp: p => () },\n { name: 'ReportPastorRenewed' , title: 'Pastor Renewed Report' , comp: p => () },\n { name: 'ReportPastorSecondedAll' , title: 'Pastor Seconded All Report' , comp: p => () },\n { name: 'ReportPastorSecondedForces' , title: 'Pastor Seconded Forces Report' , comp: p => () },\n //- assemblies-regions module -----\n { name: 'AssemblySearch' , title: 'Assembly List' , comp: p => () },\n { name: 'AssemblyEdit' , title: 'Edit Assembly' , comp: p => () },\n { name: 'PropertySearch' , title: 'Assembly Property List' , comp: p => () },\n { name: 'PropertyEdit' , title: 'Edit Assembly Property' , comp: p => () },\n { name: 'RegionSearch' , title: 'Assembly Region List' , comp: p => () },\n { name: 'RegionEdit' , title: 'Edit Region' , comp: p => () },\n { name: 'ReportAssemblyAddedLast6Months' , title: 'Assembly Added Last 6 Months Report' , comp: p => () },\n { name: 'ReportAssemblyNoPastors' , title: 'Assembly No Pastors Report' , comp: p => () },\n { name: 'ReportAssemblyNumberList' , title: 'Assembly Number List Report' , comp: p => () },\n { name: 'ReportAssemblyNumberListSum' , title: 'Assembly Number List Sum Report' , comp: p => () },\n { name: 'ReportAssemblyPastorsList' , title: 'Assembly Pastors List Report' , comp: p => () },\n { name: 'ReportLabelAssemblySecretary' , title: 'Label Assembly Secretary Report' , comp: p => () },\n { name: 'ReportLabelNoMailAddresses' , title: 'Label No Mail Addresses Report' , comp: p => () },\n { name: 'ReportRegionList' , title: 'Region List Report' , comp: p => () },\n { name: 'ReportRegionOfficeBearers' , title: 'Region Office Bearers Report' , comp: p => () },\n //- justice module -----\n { name: 'JusticeSearch' , title: 'Justice List' , comp: p => () },\n { name: 'JusticeEdit' , title: 'Edit Justice Case' , comp: p => () },\n { name: 'JusticeNoteSearch' , title: 'Justice Note List' , comp: p => () },\n { name: 'JusticeNoteEdit' , title: 'Edit Justice Case Note' , comp: p => () },\n { name: 'JusticeFileSearch' , title: 'Justice File List' , comp: p => () },\n { name: 'JusticeFileEdit' , title: 'Edit Justice File' , comp: p => () },\n //- conf registration module -----\n { name: 'AttendeeNewOnline' , title: 'GBM 2024 Registration' , comp: p => () },\n { name: 'AttendeeSearch' , title: 'Attendee List' , comp: p => () },\n { name: 'AttendeeEdit' , title: 'Edit Attendee' , comp: p => () },\n { name: 'ConfregisStatistics' , title: 'Registration Statistics' , comp: p => () },\n { name: 'ConfregisCards' , title: 'Registrations Cards' , comp: p => () },\n { name: 'ConfregisCardsExtra' , title: 'Registrations Cards Extra' , comp: p => () },\n { name: 'ReportConfregisSummaryTotal' , title: 'Summary Totals Report' , comp: p => () },\n { name: 'ReportConfregisAttendees' , title: 'Attendees List Report' , comp: p => () },\n { name: 'ReportConfregisByRegion' , title: 'Attendees by Region Report' , comp: p => () },\n { name: 'ReportConfregisByType' , title: 'Attendees by Type Report' , comp: p => () },\n { name: 'ReportConfregisByRegionNoId' , title: 'Attendees by Region No ID Report' , comp: p => () }, \n { name: 'ReportConfregisQuorumDetail' , title: 'Quorum Detail Report' , comp: p => () },\n { name: 'ReportConfregisQuorumTotal' , title: 'Quorum Totals Report' , comp: p => () },\n { name: 'ReportConfregisSummary' , title: 'Attendees Summary Report' , comp: p => () },\n //- conf reception module -----\n { name: 'ConfrecepStatistics' , title: 'Reception Statistics' , comp: p => () },\n { name: 'ConfrecepScan' , title: 'Reception Scanning' , comp: p => () },\n { name: 'ConfrecepGoodyScan' , title: 'Goody-Bag Scanning' , comp: p => () },\n { name: 'ReportConfrecepSummary' , title: 'Reception Summary' , comp: p => () },\n { name: 'ReportConfrecepDetail' , title: 'Reception Breakdown' , comp: p => () },\n //- voting module -----\n { name: 'VoteProcessManager' , title: 'Process Manager' , comp: p => () },\n { name: 'VoteCaptureNomin' , title: 'Capture Nominations' , comp: p => () },\n { name: 'VoteApprovalPrimary' , title: 'Primary Approvals' , comp: p => () },\n { name: 'VoteApprovalSecondary' , title: 'Secondary Approvals' , comp: p => () },\n { name: 'VoteApprovalFinal' , title: 'Final Approvals' , comp: p => () },\n { name: 'VoteDisplayResults' , title: 'Voting Round Results' , comp: p => () },\n { name: 'VoteDisplayStatus' , title: 'Voting Status' , comp: p => () },\n { name: 'ReportVoteResults' , title: 'Report: Voting Results' , comp: p => () },\n ]}\n />);\n}\n","var map = {\n\t\"./af\": 7582,\n\t\"./af.js\": 7582,\n\t\"./ar\": 3042,\n\t\"./ar-dz\": 4265,\n\t\"./ar-dz.js\": 4265,\n\t\"./ar-kw\": 4934,\n\t\"./ar-kw.js\": 4934,\n\t\"./ar-ly\": 5352,\n\t\"./ar-ly.js\": 5352,\n\t\"./ar-ma\": 7097,\n\t\"./ar-ma.js\": 7097,\n\t\"./ar-ps\": 6150,\n\t\"./ar-ps.js\": 6150,\n\t\"./ar-sa\": 4427,\n\t\"./ar-sa.js\": 4427,\n\t\"./ar-tn\": 7221,\n\t\"./ar-tn.js\": 7221,\n\t\"./ar.js\": 3042,\n\t\"./az\": 458,\n\t\"./az.js\": 458,\n\t\"./be\": 7596,\n\t\"./be.js\": 7596,\n\t\"./bg\": 3830,\n\t\"./bg.js\": 3830,\n\t\"./bm\": 7044,\n\t\"./bm.js\": 7044,\n\t\"./bn\": 8573,\n\t\"./bn-bd\": 3296,\n\t\"./bn-bd.js\": 3296,\n\t\"./bn.js\": 8573,\n\t\"./bo\": 5614,\n\t\"./bo.js\": 5614,\n\t\"./br\": 2041,\n\t\"./br.js\": 2041,\n\t\"./bs\": 1786,\n\t\"./bs.js\": 1786,\n\t\"./ca\": 5833,\n\t\"./ca.js\": 5833,\n\t\"./cs\": 2711,\n\t\"./cs.js\": 2711,\n\t\"./cv\": 1036,\n\t\"./cv.js\": 1036,\n\t\"./cy\": 4977,\n\t\"./cy.js\": 4977,\n\t\"./da\": 8770,\n\t\"./da.js\": 8770,\n\t\"./de\": 7342,\n\t\"./de-at\": 1566,\n\t\"./de-at.js\": 1566,\n\t\"./de-ch\": 7544,\n\t\"./de-ch.js\": 7544,\n\t\"./de.js\": 7342,\n\t\"./dv\": 2875,\n\t\"./dv.js\": 2875,\n\t\"./el\": 8536,\n\t\"./el.js\": 8536,\n\t\"./en-au\": 8617,\n\t\"./en-au.js\": 8617,\n\t\"./en-ca\": 9227,\n\t\"./en-ca.js\": 9227,\n\t\"./en-gb\": 9754,\n\t\"./en-gb.js\": 9754,\n\t\"./en-ie\": 7217,\n\t\"./en-ie.js\": 7217,\n\t\"./en-il\": 5418,\n\t\"./en-il.js\": 5418,\n\t\"./en-in\": 800,\n\t\"./en-in.js\": 800,\n\t\"./en-nz\": 7299,\n\t\"./en-nz.js\": 7299,\n\t\"./en-sg\": 6305,\n\t\"./en-sg.js\": 6305,\n\t\"./eo\": 8673,\n\t\"./eo.js\": 8673,\n\t\"./es\": 1301,\n\t\"./es-do\": 3187,\n\t\"./es-do.js\": 3187,\n\t\"./es-mx\": 8223,\n\t\"./es-mx.js\": 8223,\n\t\"./es-us\": 7634,\n\t\"./es-us.js\": 7634,\n\t\"./es.js\": 1301,\n\t\"./et\": 4976,\n\t\"./et.js\": 4976,\n\t\"./eu\": 1847,\n\t\"./eu.js\": 1847,\n\t\"./fa\": 4372,\n\t\"./fa.js\": 4372,\n\t\"./fi\": 1628,\n\t\"./fi.js\": 1628,\n\t\"./fil\": 6802,\n\t\"./fil.js\": 6802,\n\t\"./fo\": 2874,\n\t\"./fo.js\": 2874,\n\t\"./fr\": 9853,\n\t\"./fr-ca\": 7170,\n\t\"./fr-ca.js\": 7170,\n\t\"./fr-ch\": 2825,\n\t\"./fr-ch.js\": 2825,\n\t\"./fr.js\": 9853,\n\t\"./fy\": 8876,\n\t\"./fy.js\": 8876,\n\t\"./ga\": 3533,\n\t\"./ga.js\": 3533,\n\t\"./gd\": 2770,\n\t\"./gd.js\": 2770,\n\t\"./gl\": 8602,\n\t\"./gl.js\": 8602,\n\t\"./gom-deva\": 3059,\n\t\"./gom-deva.js\": 3059,\n\t\"./gom-latn\": 8212,\n\t\"./gom-latn.js\": 8212,\n\t\"./gu\": 3409,\n\t\"./gu.js\": 3409,\n\t\"./he\": 7210,\n\t\"./he.js\": 7210,\n\t\"./hi\": 4750,\n\t\"./hi.js\": 4750,\n\t\"./hr\": 1315,\n\t\"./hr.js\": 1315,\n\t\"./hu\": 7626,\n\t\"./hu.js\": 7626,\n\t\"./hy-am\": 1317,\n\t\"./hy-am.js\": 1317,\n\t\"./id\": 6892,\n\t\"./id.js\": 6892,\n\t\"./is\": 7577,\n\t\"./is.js\": 7577,\n\t\"./it\": 7628,\n\t\"./it-ch\": 3046,\n\t\"./it-ch.js\": 3046,\n\t\"./it.js\": 7628,\n\t\"./ja\": 2504,\n\t\"./ja.js\": 2504,\n\t\"./jv\": 5917,\n\t\"./jv.js\": 5917,\n\t\"./ka\": 4513,\n\t\"./ka.js\": 4513,\n\t\"./kk\": 4935,\n\t\"./kk.js\": 4935,\n\t\"./km\": 6661,\n\t\"./km.js\": 6661,\n\t\"./kn\": 9964,\n\t\"./kn.js\": 9964,\n\t\"./ko\": 8067,\n\t\"./ko.js\": 8067,\n\t\"./ku\": 1165,\n\t\"./ku-kmr\": 5158,\n\t\"./ku-kmr.js\": 5158,\n\t\"./ku.js\": 1165,\n\t\"./ky\": 1177,\n\t\"./ky.js\": 1177,\n\t\"./lb\": 2967,\n\t\"./lb.js\": 2967,\n\t\"./lo\": 1972,\n\t\"./lo.js\": 1972,\n\t\"./lt\": 8469,\n\t\"./lt.js\": 8469,\n\t\"./lv\": 3155,\n\t\"./lv.js\": 3155,\n\t\"./me\": 7935,\n\t\"./me.js\": 7935,\n\t\"./mi\": 4483,\n\t\"./mi.js\": 4483,\n\t\"./mk\": 2501,\n\t\"./mk.js\": 2501,\n\t\"./ml\": 3120,\n\t\"./ml.js\": 3120,\n\t\"./mn\": 266,\n\t\"./mn.js\": 266,\n\t\"./mr\": 9406,\n\t\"./mr.js\": 9406,\n\t\"./ms\": 109,\n\t\"./ms-my\": 864,\n\t\"./ms-my.js\": 864,\n\t\"./ms.js\": 109,\n\t\"./mt\": 523,\n\t\"./mt.js\": 523,\n\t\"./my\": 4067,\n\t\"./my.js\": 4067,\n\t\"./nb\": 3682,\n\t\"./nb.js\": 3682,\n\t\"./ne\": 1152,\n\t\"./ne.js\": 1152,\n\t\"./nl\": 6735,\n\t\"./nl-be\": 7761,\n\t\"./nl-be.js\": 7761,\n\t\"./nl.js\": 6735,\n\t\"./nn\": 7569,\n\t\"./nn.js\": 7569,\n\t\"./oc-lnc\": 833,\n\t\"./oc-lnc.js\": 833,\n\t\"./pa-in\": 3044,\n\t\"./pa-in.js\": 3044,\n\t\"./pl\": 4249,\n\t\"./pl.js\": 4249,\n\t\"./pt\": 7585,\n\t\"./pt-br\": 6826,\n\t\"./pt-br.js\": 6826,\n\t\"./pt.js\": 7585,\n\t\"./ro\": 2526,\n\t\"./ro.js\": 2526,\n\t\"./ru\": 2204,\n\t\"./ru.js\": 2204,\n\t\"./sd\": 3270,\n\t\"./sd.js\": 3270,\n\t\"./se\": 1541,\n\t\"./se.js\": 1541,\n\t\"./si\": 1921,\n\t\"./si.js\": 1921,\n\t\"./sk\": 9935,\n\t\"./sk.js\": 9935,\n\t\"./sl\": 6254,\n\t\"./sl.js\": 6254,\n\t\"./sq\": 9897,\n\t\"./sq.js\": 9897,\n\t\"./sr\": 2496,\n\t\"./sr-cyrl\": 1135,\n\t\"./sr-cyrl.js\": 1135,\n\t\"./sr.js\": 2496,\n\t\"./ss\": 2215,\n\t\"./ss.js\": 2215,\n\t\"./sv\": 4716,\n\t\"./sv.js\": 4716,\n\t\"./sw\": 803,\n\t\"./sw.js\": 803,\n\t\"./ta\": 1538,\n\t\"./ta.js\": 1538,\n\t\"./te\": 2302,\n\t\"./te.js\": 2302,\n\t\"./tet\": 5280,\n\t\"./tet.js\": 5280,\n\t\"./tg\": 4100,\n\t\"./tg.js\": 4100,\n\t\"./th\": 5385,\n\t\"./th.js\": 5385,\n\t\"./tk\": 736,\n\t\"./tk.js\": 736,\n\t\"./tl-ph\": 9726,\n\t\"./tl-ph.js\": 9726,\n\t\"./tlh\": 1873,\n\t\"./tlh.js\": 1873,\n\t\"./tr\": 6463,\n\t\"./tr.js\": 6463,\n\t\"./tzl\": 7491,\n\t\"./tzl.js\": 7491,\n\t\"./tzm\": 9500,\n\t\"./tzm-latn\": 196,\n\t\"./tzm-latn.js\": 196,\n\t\"./tzm.js\": 9500,\n\t\"./ug-cn\": 1287,\n\t\"./ug-cn.js\": 1287,\n\t\"./uk\": 5341,\n\t\"./uk.js\": 5341,\n\t\"./ur\": 6246,\n\t\"./ur.js\": 6246,\n\t\"./uz\": 5550,\n\t\"./uz-latn\": 7254,\n\t\"./uz-latn.js\": 7254,\n\t\"./uz.js\": 5550,\n\t\"./vi\": 8796,\n\t\"./vi.js\": 8796,\n\t\"./x-pseudo\": 2736,\n\t\"./x-pseudo.js\": 2736,\n\t\"./yo\": 8621,\n\t\"./yo.js\": 8621,\n\t\"./zh-cn\": 9982,\n\t\"./zh-cn.js\": 9982,\n\t\"./zh-hk\": 9053,\n\t\"./zh-hk.js\": 9053,\n\t\"./zh-mo\": 1248,\n\t\"./zh-mo.js\": 1248,\n\t\"./zh-tw\": 4725,\n\t\"./zh-tw.js\": 4725\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5358;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/frontend/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkweb\"] = self[\"webpackChunkweb\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [423], () => (__webpack_require__(5036)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["Ft","_classCallCheck","_createClass","key","value","_len","arguments","length","args","Array","_key","i","console","log","_len2","_key2","obj","undefined","pPrm","prm","isArray","Date","prop","this","isUndef","isNull","emptyObj","isArr","e","str","TextEncoder","encode","ba","TextDecoder","decode","base64","b64","moment","format","dtToday","toDate","dt","fmt","utc","dtm","dtm2","includes","tmFmt","dttm","years","months","weeks","days","past","subtract","dtFmt","hours","minutes","seconds","dtmFmt","future","add","dtmA","dtmZ","z","diff","asSeconds","dow","isoWeekday","substring","dtmB","isBefore","isAfter","isSame","isSameOrBefore","isSameOrAfter","dtmC","isBetween","timePart","dtmSpliceDate","tm","dtmSpliceTime","day","curDate","period","pData","JSON","stringify","pJson","parse","isIsoDate","o","match","processObj","propName","processArr","a","propsObj","list","base","ret","forEach","val","push","k","v","ptn","m","_toConsumableArray","RegExp","haystack","needle","pos","indexOf","n","toLowerCase","_parseInt","parseInt","_x","apply","toString","strCount","val2","replace","isNaN","clean","trim","parseFloat","_parseFloat","_x2","Decimal","parseDecimal","md5","sha512","dtmNow","Math","random","floor","sha256","objArr","fldId","dictLookup","fldName","arr","id","name","dict","arg1","arg2","arg3","arg4","arg5","arg6","len","c","s","padLen","repeat","substr","num","strPadR","search","textDescr","ms","regMatch","style","fontSize","msStyles","toUpperCase","flexWrap","numberOfLines","fontWeight","fontStyle","textDecorationLine","textAlign","color","fontFamily","bold","italic","fontName","iconDescr","index","fullName","lib","size","descr","res","resA","resH","resV","resT","resR","resB","resL","isDef","h","t","r","b","l","pad","padT","padR","padB","padL","spec","argPad","fetchArg","argT","argL","argR","argB","isNum","padding","paddingLeft","paddingRight","paddingTop","paddingBottom","isStr","sides","_objectSpread","parseSidesDescr","bor","arg","borderWidth","borderColor","borderRadius","_Ft$regMatch","_ref","_ref2","_slicedToArray","w","clr","rad","strLc","dir","flexDirection","translateAlignJustDir","wrap","isDefFalse","md","lt","_lt$toLowerCase$split","loMd","display","isCol","alignContent","_ref3","split","_ref4","main","cross","props","justifyContent","alignItems","gap","_gap$split","_ref5","_ref6","col","row","columnGap","rowGap","just","justM","justC","argJust","argJustM","argJustC","_argJust$split","_ref7","_ref8","align","url","urlParms","parmKey","encodeURIComponent","fullUrl","window","open","navigation","_state$routes","_state$routes$state$i","state","getState","pntName","routes","navObj","params","isFocused","useIsFocused","target","pop","canGoBack","navigate","merge","popAll","popToTop","popAllTo","reset","canPop","listenFocus","handler","addListener","callback","useFocusEffect","strVer","verATxt","verBTxt","verCTxt","src","init","fill","d","isDecimal","toDecimalPlaces","d1","d2","eq","n1","n2","pJsonB64","json","scrollTo","top","behavior","Promise","resolve","reject","NetInfo","then","_state$isConnected","isConnected","catch","error","resp","winDim","_Ft$regMatch2","_resA$","_resA$2","_resA$3","_resA$4","_resA$5","_resA$6","_resA$7","_resA$8","_resA$9","_resA$10","xs","sm","lg","xl","width","_urlObj$origin","parms","urlObj","URL","origin","_ref9","searchParams","_ref10","now","lq","linq","from","FtAppInfo","_staticInit","_asyncToGenerator","version","isDebug","appId","getGenAppId","title","baseUrlDebug","baseUrlRelease","baseUrl","fontScaler","PixelRatio","get","_getGenAppId","AsyncStorage","getItem","setItem","user_id","prmStack","Map","FtFixIconFonts","isWeb","_jsx","FtiFixMatComIcons","_Fragment","_useFonts","useFonts","require","Stack","createStackNavigator","FtNavScreens","theme","header","screens","_jsxs","children","SafeAreaProvider","PaperProvider","NavigationContainer","Navigator","initialRouteName","screenOptions","map","screen","Screen","options","comp","MD3LightTheme","dark","roundness","colors","FtRapiResult","status","code","message","decJson","Object","assign","FtRapi","clsName","classMap","hasOwnProperty","objType","regMatch1","decodeDec","decodeDate","decodeTime","decodeDttm","decodeDttmz","decodeUni","decodeBin","tgt","xData","randomInt","_call_checkResponse","response","Error","data","payload","inList","inRec","objToJson","setObjProps","encodeToObj","join","encodePayload","call_encodePayload","retUrlData","strToUtf8Base64","jsonMap","outResults","startsWith","dataKeys","keys","decodeType","resList","dataList","cls","getModelClass","decodeFromObj","table","el","openUrl","_callList","urlData","call_encodeUrlData","makeUrlRapi","rapiResult","_rapiResult","fetch","method","headers","Accept","call_checkResponse","call_parseResults","success","complete","ex","stdError","_x3","_callRead","_rapiResult2","_x4","_x5","_x6","_callNew","_rapiResult3","body","_x7","_x8","_callUpdate","_rapiResult4","_x9","_x10","_x11","_callDelete","_rapiResult5","_x12","_x13","_x14","utf8Base64ToStr","base64ToBa","encodeBool","bol","encodeStr","encodeDec","dec","encodeDate","encodeTime","encodeDttm","encodeDttmz","dtmFmtUtc","encodeUni","encodeBin","buf","baToBase64","Uint8Array","AdminTask","_AdminTaskBase","_callSuper","_inherits","AdminTaskBase","tid","create_date","description","category_id","category_name","responsible_id","responsible_user","is_done","due_by","member_no","assembly_id","assembly_no","request_cat","parseInt0","parseInt0Null","parseBool","AdminTaskCategory","_AdminTaskCategoryBas","AdminTaskCategoryBase","ATC_NOT_URGENT","ATC_FAIRLY","ATC_URGENT","ArcRepo","_ArcRepoBase","ArcRepoBase","upload_dttm","store_dttm","repo_key","ext","media_type_id","hash","ArcRepoMediaType","_ArcRepoMediaTypeBase","ArcRepoMediaTypeBase","ARMT_IMAGE","ARMT_VIDEO","ARMT_GENERAL","ArcUpload","_ArcUploadBase","ArcUploadBase","mime","file_size","upload_key","block_index","block_size","block_data","Assembly","_AssemblyBase","AssemblyBase","gemid","assembly_name","type_id","region_id","region_no","region_name","physical_adr_1","physical_adr_2","physical_adr_city","physical_adr_code","postal_adr_1","postal_adr_2","postal_adr_city","postal_code","asset_register","fax_no","phone_no","phone_extension","procedure","bank","bank_branch","bank_account","bank_account_type","treasurer_name","treasurer_phone_extension","treasurer_procedure","treasurer_phone","treasurer_postal_adr_1","treasurer_postal_adr_2","treasurer_postal_adr_city","treasurer_postal_code","secretary_name","secretary_phone_extension","secretary_procedure","secretary_phone","secretary_postal_adr_1","secretary_postal_adr_2","secretary_postal_adr_city","secretary_postal_adr_code","input_date","vicechairperson_name","vicechairperson_phone_extension","vicechairperson_procedure","vicechairperson_phone","vicechairperson_postal_adr_1","vicechairperson_postal_adr_2","vicechairperson_postal_adr_city","vicechairperson_postal_adr_code","main_pastor","pentecost_pastor","file_date","is_filed","move_no","last_updated","email","website","date_registered","census_date","census_women_count","census_men_count","census_youth_count","census_children_count","spoken_languages","title_deed","baptised_water_count","baptised_spirit_count","attending_sunday_service_count","attending_sunday_school_count","attending_over_35_count","attending_under_35_count","attending_other_count","audit_books","assembly_policy","assembly_gb","site_no_building","site_and_building","no_property","stat_funds_months","ordained_pastors_count","non_ordained_pastors_count","assembly_leader","service_contract","branch_assemblies_count","nlf","notes","last_edited_by_id","last_edited","web_usedid","scode","gps_lat","gps_long","bin","justice_case_active","AssemblyProperty","_AssemblyPropertyBase","AssemblyPropertyBase","oldid","physical_adr_area","physical_adr_region","physical_adr_country","erf_no","purch_value","purch_date","owner","phone","cell","AssemblyRegion","_AssemblyRegionBase","AssemblyRegionBase","AssemblyType","_AssemblyTypeBase","AssemblyTypeBase","AT_AFFILIATED","AT_NORMAL","AT_DEPARTMENT","AT_MISSION","AT_SPECIALIZED","AT_PROJECT","Attendee","_AttendeeBase","AttendeeBase","conference_id","surname","fullnames","title_id","rsaid_no","postal_adr_code","cell_no","fax","province_id","attendee_type_id","contact_method_id","capture_dttm","payment_date","payment_online","payment","payment_amount","payment_method_id","card_printing","card_printed","is_committee","reg_status_id","goodybag_received","goodybag_scan_user_id","goodybag_scan_dttm","AttendeeTitle","_AttendeeTitleBase","AttendeeTitleBase","AT_PAST","AT_MR","AT_MS","AT_MRS","AT_DR","AT_PROF","AttendeeType","_AttendeeTypeBase","AttendeeTypeBase","AT_DELPASTOR","AT_DELEGATE","AT_NLFMEMBER","AT_NATDEP","AT_STANCOMMEM","AT_OBSERVER","AT_EMIRITUS","AuditAction","_AuditActionBase","AuditActionBase","AA_VOTE_POSITION_OPEN","AA_VOTE_POSITION_CLOSE","AA_VOTE_POSITION_REVERSE","AA_VOTE_ROUND_REVERSE","AA_VOTE_ROUND_PROCESS","AA_VOTE_ROUND_OPEN","AA_VOTE_ROUND_CLOSE","AA_VOTE_ROUND_SUBMIT","AA_VOTE_CANDIDATE_CAPTURE_NOMIN","AA_VOTE_CANDIDATE_VOTE_EDIT","AA_VOTE_CANDIDATE_DELETE","AA_VOTE_CANDIDATE_PRIMARY_APPROVE","AA_VOTE_CANDIDATE_SECONDARY_APPROVE","AA_VOTE_CANDIDATE_SECONDARY_REJECT","AA_VOTE_CANDIDATE_FINALIST_SET","AA_VOTE_CANDIDATE_FINALIST_UNSET","AA_VOTE_CANDIDATE_DISQUALIFIY_SET","AA_VOTE_CANDIDATE_DISQUALIFIY_UNSET","CandidateStatus","_CandidateStatusBase","CandidateStatusBase","CS_OPEN_FOR_VOTING","CS_APPROVED_PRIMARY","CS_APPROVED_SECONDARY","CS_APPROVED_FINAL","CS_DISQUALIFIED","Conference","_ConferenceBase","ConferenceBase","is_active","conf_date","ConfRegisterStatus","_ConfRegisterStatusBa","ConfRegisterStatusBase","CRS_NOT_REGISTERED","CRS_REGISTERED_NOTPAID","CRS_REGISTERED_AND_PAID","ContactMethod","_ContactMethodBase","ContactMethodBase","CM_SMS","CM_WHATSAPP","CM_EMAIL","CM_POST","Gender","_GenderBase","GenderBase","G_MALE","G_FEMALE","GenLookup","_GenLookupBase","GenLookupBase","Justice","_JusticeBase","JusticeBase","oldid2","userz_id","userz_who","pastor_id","entry_date","case_no","resolution","date_resolved","resolutionb_expiry_date","status_id","status_name","com_name","com_natid","com_affil","com_gender_id","com_gender_name","com_phone","com_fax","com_email","com_physical_adr_1","com_physical_adr_2","com_physical_adr_city","com_physical_adr_code","com_cocom","JusticeCategory","_JusticeCategoryBase","JusticeCategoryBase","JC_ASSEMBLY","JC_PASTOR","JC_REGION","JusticeFile","_JusticeFileBase","JusticeFileBase","justice_id","arcrepo_id","JusticeNote","_JusticeNoteBase","JusticeNoteBase","justice_case_no","JusticeStatus","_JusticeStatusBase","JusticeStatusBase","JS_ACTIVE","JS_CLOSED","Language","_LanguageBase","LanguageBase","MaritalStatus","_MaritalStatusBase","MaritalStatusBase","MS_SINGLE","MS_MARRIED","MS_WIDOWER","MS_WIDOW","MS_DIVORCED","MS_UNKNOWN","Parameter","_ParameterBase","ParameterBase","version_app","version_break","Pastor","_PastorBase","PastorBase","pastid","first_name","maiden_name","initials","personal_title","idno","gender_id","gender_name","birth_date","birth_place","death_date","instruments","spouse_member_no","spouse_first_name","spouse_surname","spouse_maiden_name","spouse_initials","spouse_personal_title","spouse_idno","spouse_birth_date","spouse_birth_place","spouse_death_date","spouse_talents","phone_home","fax_home","phone_work","postal_adr_country","pastor_status","children_count","marital_status_id","marital_status","wedding_date","fulltime_date","marriage_officiant_date","q_number","ordained_date","legitimize_date","preachers_panel_tv_date","preachers_panel_radio_date","phone_request_line","remarks","language_preference","position_id","position_no","celno","expiry_date","photo","photoz_id","application_date","add_change_date","preferred_addressee","ge_comms","special_start_date","special_end_date","special_reason","file_no","seconded_to","seconded_report_date","called_date","accepted_date","seconded_date","country","field1_text","field2_num","field3_date","field_text2","field_text3","field_text4","field_text5","pastor_own","PastorFile","_PastorFileBase","PastorFileBase","PastorHistory","_PastorHistoryBase","PastorHistoryBase","compliance_asset_idx","content_type","app_created_by","app_modified_by","workflow_instance_idx","file_type","modified","created","created_by","modified_by","url_path","path","item_type","encoded_absolute_url","PastorPosition","_PastorPositionBase","PastorPositionBase","ampid","position","PastorQualification","_PastorQualificationB","PastorQualificationBase","category","awarding_date","accredited_by","obtained_from","PastorStatus","_PastorStatusBase","PastorStatusBase","PastorTitle","_PastorTitleBase","PastorTitleBase","PaymentMethod","_PaymentMethodBase","PaymentMethodBase","PM_NONE","PM_ONLINE","PM_CASH","PM_EFT","PositionStatus","_PositionStatusBase","PositionStatusBase","PS_TO_BE_DONE","PS_OPEN","PS_COMPLETED","Reception","_ReceptionBase","ReceptionBase","attendee_id","receive_date","scan_dttm","RoundStatus","_RoundStatusBase","RoundStatusBase","RS_CREATED","RS_OPEN_FOR_VOTING","RS_PROCESSING","RS_APPROVED_FINAL","RS_COMPLETED","RsaProvince","_RsaProvinceBase","RsaProvinceBase","UserAuthRole","_UserAuthRoleBase","UserAuthRoleBase","role_id","UserAuthRoleType","_UserAuthRoleTypeBase","UserAuthRoleTypeBase","parent_id","UART_SYSTEMADMIN","UART_NOB","UART_ADMINISTRATION","UART_ADMINJUSTICE","UART_NLF","UART_REGIONAL_SECRETARY","UART_REGIONAL_TREASURER","UART_ADMIN_CLERK","UART_CONF_SUPERVISOR","UART_CONF_RECEPTION_SCANNING","UART_CONF_GOODYBAG_SCANNING","UART_CONF_DISPLAY_STATS","UART_VOTING_MANAGER","UART_VOTING_CAPTURE_PRIMARY","UART_VOTING_APPROVAL_SECONDARY","UART_VOTING_APPROVAL_FINAL","UserDevice","_UserDeviceBase","UserDeviceBase","device_lid","device_dttm","UserType","_UserTypeBase","UserTypeBase","UT_ADMIN","UT_CLIENT","UT_GUEST","Userz","_UserzBase","UserzBase","username","password","disp_name","init_code","active","pass_reset","user_type_id","create_dttm","last_login","VotingCandidate","_VotingCandidateBase","VotingCandidateBase","round_id","vote_count","total_count","vote_perc","is_finalist","calc_dttm","calc_user_id","status_capture_dttm","status_capture_user_id","status_approve_primary_dttm","status_approve_primary_user_id","status_approve_second_dttm","status_approve_second_user_id","status_final_disq_dttm","status_final_disq_user_id","disq_reason","VotingPosition","_VotingPositionBase","VotingPositionBase","VotingRound","_VotingRoundBase","VotingRoundBase","round_no","round_name","Models","FtCon","onTap","onSize","ss","flex","inflex","rat","bkgClr","bkgClrX","mar","marT","marL","marB","marR","show","en","useWindowDimensions","hasTap","hasLead","hasTrail","hasMain","hasMar","stlLead","stlTrail","stlInner","stlOuter","propOuter","onPress","decodeTap","_resSz$","_resSz$2","_resSz$3","sizeSpec","parseResp","ptnColons","resSz","resLead","resMain","resTrail","resLeadNum","resMainNum","resTrailNum","decodeSs","decodeFlex","height","aspectRatio","decodeWHRat","eAll","decodeMar","isEn","clrX","backgroundColor","decodeBkgClr","parseBorderDescr","decodeBor","parsePadding","decodePad","onLayout","nativeEvent","layout","decodeOnSize","dwSpec","ltSpec","stl","parseLayout","decodeMdLt","lead","View","trail","Pressable","FtImage","imgFit","bkgImg","bkgImgX","fit","fitX","elev","aligni","_useState","useState","_useState2","imgRat","setImgRat","useEffect","Image","getSize","conProps","imgStyle","resizeMode","source","ftcompname","FtPopupMessage","setOpen","hd","msg","btn","onClose","txtClr","btnLabel","btnProps","buttonColor","textColor","dlgStyle","alignSelf","Portal","Dialog","visible","onDismiss","Title","Content","Text","variant","Actions","Button","mode","ftPopupMessage","setPopup","_ref2$btn","setBusy","webScrollTop","FtText","text","txtDescr","_objectWithoutProperties","_excluded","txtProps","parseTextDescrAlign","FtSpacer","FtBusy","_ref$popup","popup","_ref$isUpload","isUpload","progress","ActivityIndicator","ProgressBar","ftBusy","Ut","svrVer","loadUser","callRead","display_name","user_roles","role","role2","role3","role4","role5","role6","RoleT","feBaseUrlDebug","feBaseUrlRelease","_this","lkpArcRepoMediaType","callList","result","lkpAttendeeTitle","lkpProvince","lkpContactMethod","lkpPayMethod","lkpAttendeeType","lkpRegisterStatus","lkpAssemblyType","lkpMaritalStatus","lkpGender","lkpTaskCategory","lkpJusticeStatus","lkpJusticeCategory","lkpPastorStatus","lkpPastorTitle","lkpPastorPosition","lkpUserAuthRoleType","p","objToJsonBase64","pastorFolderLink","assemblyFolderLink","SYSTEMADMIN","NOB","ADMINISTRATION","ADMINJUSTICE","NLF","REGIONAL_SECRETARY","REGIONAL_TREASURER","ADMIN_CLERK","CONF_SUPERVISOR","CONF_RECEPTION_SCANNING","CONF_GOODYBAG_SCANNING","CONF_DISPLAY_STATS","VOTING_MANAGER","VOTING_CAPTURE_PRIMARY","VOTING_APPROVAL_SECONDARY","VOTING_APPROVAL_FINAL","FragHeader","nav","useNav","_useState3","_useState4","_useState5","_useState6","busy","checkUser","headStr","prettyVersionExt","Appbar","im_logo","BackAction","titleStyle","Action","icon","callNew","FtCanvas","_ref$scroll","scroll","style2","ImageBackground","nativeID","ScrollView","contentContainerStyle","FtButton","label","txtClrX","small","_ref$en","ftConProps","btnClr","btnTxtClr","btnStl","margin","submitHandler","loading","labelStyle","Th","page","frame","headBkgClr","form","grid","hdBkg","flow1BkgDescr","flow1PaddingDescr","flow1MarginDescr","flow1BordersDescr","flow1ShadowDescr","headerBkgDescr","mainheadBkgDescr","mainheadTextDescr","mainheadMarginDescr","mainheadMarginDescrL","mainheadMarginDescrU","mainheadShadowDescr","mainhead","subheadBkgDescr","subheadTextDescr","subheadTextDescr2","subheadTextDescr3","subheadMarginDescr","subhead","listHead","listItemHead","icMarL","icMarR","listItemHeadBkg0","listItemHeadBkg1","listItemLabel","listItemField","headSmall","fieldCon","fieldHead","fldpnlBkgDescr","fldpnlPaddingDescr","fldpnlMarginDescr","field","labSs","labMd","labLt","labTxtDescr","labPad","field12","fieldLg","lines","fieldLabel","fieldIcon","buttonClr","buttonTxtClr","buttonBkgDescr","buttonLabelClr","buttonLabelSize","buttonLabelClr2","buttonLabelSize2","buttonLabelClr3","buttonLabelSize3","buttonPadding","buttonMargin","buttonMarginU","buttonMarginL","buttonMarginS","buttonElev","buttonBorder","button","submit","submit2","genTextHeadTextDescr","genTextHeadTextDescr2","menuBtnBkgDescr","menuBtnPaddingDescr","menuBtnBordersDescr","menuBtnShadowDescr","menuBtnMarginDescr","menuRow","menuButton","menuFrame","menuBlock","menuHeading","menuBtn","menuBtnW","menuBtnM","menuBtnX","btnMenuB","logoSmallBsSpec","logoSmallPaddingDescr","logoSmallBordersDescr","textLg","reportBtn","reportBtn2","lineChart","labelXDescr","labelYDescr","titleXDescr","titleYDescr","lineColors","chartBordersDescr","chartTextDescr","chartColor00","chartColor01","chartColor02","chartColor03","chartColor04","chartColor05","chartColor06","chartColor07","chartColor08","chartColor09","chartColor10","chartColor11","chartColor12","chartColor13","chartColor14","chartColor15","PageLanding","im_nob","FtFrame","headLt","bodyBor","bodyBkgClr","headPad","headPadT","headPadL","headPadB","headPadR","bodyPad","bodyPadT","bodyPadL","bodyPadB","bodyPadR","bodyProps","FtFormContext","createContext","FtForm","spacing","models","onSubmit","onChange","yupSchema","setYupSchema","customSubmitter","info","formSubmit","mdl","_models$mdl","copyFrom","setCustomSubmitter","submitter","childChanged","yupModels","parseValidationsChildren","mdlSchema","mdlName","yup","convertModelsToSchema","initData","Formik","validateOnChange","enableReinitialize","initialValues","validationSchema","Provider","parseValidationsChildren_parseRule","_schema","_props$ftreqmsg","_schema2","_props$ftminmsg","_schema3","_props$ftmaxmsg","_schema4","_props$ftregexmsg","_schema5","_props$ftreqmsg2","_schema6","_props$ftminmsg2","_schema7","_props$ftmaxmsg2","_schema8","_props$ftreqmsg3","_schema9","_props$ftminmsg3","_schema10","_props$ftmaxmsg3","_schema11","_props$ftreqmsg4","_schema12","_props$ftminmsg4","_schema13","_props$ftmaxmsg4","_schema14","_props$ftreqmsg5","_schema15","_props$ftreqmsg6","_comp$type","type","parseValidationsChildren_isFtFmComp","nameParts","_nameParts","model","msgReq","msgMinS","msgMaxS","schema","required","ftreqmsg","min","ftmin","ftminmsg","max","ftmax","ftmaxmsg","matches","ftregex","ftregexmsg","child","FtFmSubmit","getSubmitter","formCtx","useContext","handleSubmit","useFormikContext","enabled","FtFmTextField","labClr","txtBkg","lineClr","pass","onTapIcon","affix","spel","_ref$selOnFocus","selOnFocus","_ref$num","labOnTap","labOnSize","labFlex","labInflex","labW","labH","labBkgClr","labBkgClrX","labBkgImg","labBkgImgX","labFit","labFitX","labPadT","labPadR","labPadB","labPadL","labMar","labMarT","labMarR","labMarB","labMarL","labBor","labElev","labShow","labAligni","labEn","labId","_useFormikContext","handleChange","handleBlur","_useField","useField","_useField2","_useField2$","meta","cosmet","scaleFont","placeholder","background","outlineColor","multiline","right","TextInput","Affix","keyboardType","iconPress","Icon","spellCheck","disabled","labelReq","ftreq","isExt","extLabelProps","control","onChangeText","newVal","onBlur","selectTextOnFocus","dense","secureTextEntry","HelperText","FtFmPasswordField","_objectDestructuringEmpty","isOpen","setIsOpen","passProps","FtFmEmailField","PageAuthLogin","mdlUser","PageMenu","showAdmin","setShowAdmin","_useState7","_useState8","showManagement","setShowManagement","_useState9","_useState10","showProvinces","setShowProvinces","_useState11","_useState12","showRegions","setShowRegions","_useState13","_useState14","showAssemblies","setShowAssemblies","_useState15","_useState16","showPastors","setShowPastors","_useState17","_useState18","showJustice","setShowJustice","_useState19","_useState20","showRegSecretary","setShowRegSecretary","_useState21","_useState22","showTreasurers","setShowTreasurers","roleTest","PageMenuConfRegister","PageMenuConfReception","PageMenuVoting","FtDataGrid","cols","pgsize","pgstart","itBkg0","itBkg1","sortColIdx","setSortColIdx","sortDir","setSortDir","pageIdx","setPageIdx","lkpData","setLkpData","tmpData","_col$lkp","objArrToIdVal","lkp","pageSize","pageCount","ceil","pageLabel","headProps","heads","_loop","_col$flex10","head","dataType","colAlign","numeric","sortDirection","sort","composeHeaders","pageData","_cols$sortColIdx$fld","skip","take","toArray","sortField","fld","sortLookup","orderHandler","rec","toNumber","_sortLookup$rec$sortF","orderBy","orderByDescending","sortAndPageData","tblTheme","primary","rowBkg0","rowBkg1","DataTable","Pagination","numberOfPages","onPageChange","numberOfItemsPerPage","showFastPaginationControls","accessibilityLabel","Header","item","idx","Row","pointerEvents","renderCells","renderCells_int","itemData","colI","_col$flex","Cell","renderCells_dblDec","_col$flex2","scale","toFixed","renderCells_bool","_col$flex3","iconClr","MaterialCommunityIcons","renderCells_dtm","_col$flex4","celProps","renderCells_date","_col$flex5","renderCells_time","_col$flex6","renderCells_text","_col$flex7","renderCells_lookup","_col$flex8","renderCells_action","_col$flex9","AntDesign","FontAwesome","Ionicons","Feather","act","lineIdx","dataId","dataItem","columnIdx","rowComps","withTheme","FtPopupOptions","btnA","btnB","btnC","btnD","btnE","onA","onB","onC","onD","onE","clrA","clrB","clrC","clrD","clrE","txtClrA","txtClrB","txtClrC","txtClrD","txtClrE","propsOptA","propsOptB","propsOptC","propsOptD","propsOptE","softBlue","ftPopupConfirm","PageUserSearch","mdlUserz","lstUserz","setLstUserz","userId","onSearch","callDelete","prm_disp_name","prm_email","FtFmCheckboxField","iconOn","iconOff","textOn","textOff","txtIconOn","txtIconOff","txtTextOn","txtTextOff","iconProps","newValBool","inputProps","editable","newValStr","FtFmDropdownField","_ddData$find$name","_ddData$find","showDdn","setShowDdn","menuWidth","setMenuWidth","ddData","setDdData","data2","concat","find","x","menuProps","anchorPosition","anchor","contentStyle","menuItem","newId","Menu","Item","PageUserEdit","_nav$params","setMdlUser","mdlRole","setMdlRole","pass_new","pass_confirm","mdlPasswords","loadLookups","eAny","m2","m3","callUpdate","PageTaskSearch","mdlTask","lkpCategory","setLkpCategory","lkpUserz","setLkpUserz","lstTask","setLstTask","taskId","prm_description","prm_responsible_id","prm_category_id","FtFmTextareaField","lines2","FtFmDateField","registerTranslation","DateEN","dateFmt","dateProps","validRange","DatePickerModal","locale","date","saveLabel","animationType","onConfirm","newDttm","dtmSpliceDateDtm","FtFmTimeField","_value$getHours","_value$getMinutes","TimePickerModal","getHours","getMinutes","confirmLabel","newTime","strPadNum","dtmSpliceTimeDtm","FtFmSearchField","_name","_Ft$lq$firstOrDefault","limit","optHeight","showSel","setShowSel","filter","setFilter","btnCosmet","curValue","firstOrDefault","listData","where","strContainsCi","onFocus","ScrollArea","FlatList","renderItem","keyExtractor","compact","PageTaskEdit","setMdlTask","lkpAssembly","setLkpAssembly","initLkpBasic","setInitLkpBasic","initLkpAssembly","setInitLkpAssembly","initLkpUserz","setInitLkpUserz","dtmAsDate","PagePastorSearch","mdlPastor","lkpRegion","setLkpRegion","lstPastor","setLstPastor","pastorId","prm_member_no","prm_surname","prm_first_name","prm_assembly_id","prm_region_id","prm_pastor_status","prm_idno","prm_celno","FtFmIntegerField","strValue","_value$toString","_value$toFixed","parseNum","parseIntSpace","numEq","onValue","newValInt","abs","CHUNK_SIZE","FtFmUploadImage","uploadKey","onError","onSuccess","_ref$md","_ref$lt","preview","setPreview","uploading","setUploading","setProgress","imgKey","setImgKey","ctlMar","intLabel","lblProps","composeIntLabel","extLabel","composeExtLabel","image","imgProps","im_placeholder","composeImage","btnUpload","onTapUpload","btnDelete","onTapDelete","innerConProps","_onTapUpload","config","copyToCacheDirectory","multiple","_asset$file","getDocumentAsync","canceled","assets","asset","arrBuf","file","arrayBuffer","chunkCnt","byteLength","uploadChunk","mimeType","slice","extension","endsWith","previewData","randomStr","enablePreview","_unused","_uploadChunk","chunkIdx","chunkData","chunk","PagePastorEdit","setMdlPastor","randomSha256","photozKey","photoz_key","mdlUploads","_data$1$repo_key","_data$","FtList","renItem","initCount","FtIcon","_ref$idx","_Ft$parseIconDescr","parseIconDescr","iconComp","FtTextIcons","onTapText","txtSs","_ref$txtMd","txtMd","txtLt","_ref$txtFlex","txtFlex","txtInflex","txtW","txtH","txtBkgClr","txtBkgClrX","txtBkgImg","txtBkgImgX","txtFit","txtFitX","txtPad","txtPadT","txtPadL","txtPadB","txtPadR","txtMar","txtMarT","txtMarL","txtMarB","txtMarR","txtBor","txtElev","txtShow","txtAligni","txtEn","icDescrL1","icDescrL2","icDescrL3","icDescrR1","icDescrR2","icDescrR3","onTapIconL1","onTapIconL2","onTapIconL3","onTapIconR1","onTapIconR2","onTapIconR3","icIdxL1","icIdxL2","icIdxL3","icIdxR1","icIdxR2","icIdxR3","icMd","icLt","icFlex","icInflex","icW","icH","icRat","icBkgClr","icBkgClrX","icBkgImg","icBkgImgX","icFit","icFitX","icPad","icPadT","icPadL","icPadB","icPadR","icMar","icMarT","icMarB","icBor","icElev","icShow","icAligni","icEn","iconL1","iconL2","iconL3","iconR1","iconR2","iconR3","PagePastorSearchMob","lbl","onTapPastorDetails","PagePastorDetailMob","PageQualificationSearch","pnPastor","setPnPastor","lstQualification","setLstQualification","qualId","prm_pastor_id","PageQualificationEdit","mdlQual","setMdlQual","PagePastorFileSearch","lstRepo","setLstRepo","callUrl","FtFmUploadFile","filetext","composeFiletext","btnView","onTapView","PagePastorFileEdit","fileKey","file_key","PageReportPastor40Year","mdlParms","openUrlSvr","PageReportPastoralStatus","PageReportPastoralStatusLapsed","PageReportPastoralStatusLapsedWarning","PageReportPastorDuplicates","PageReportPastorGender","openReport","PageReportPastorMarriageOfficers","PageReportPastorMovementAccepted","date_fm","date_to","PageReportPastorMovementCalled","PageReportPastorReinstated","region_no_fm","region_no_to","PageReportPastorRenewed","exp_year_to","PageReportPastorSecondedAll","PageReportPastorSecondedForces","PageAssemblySearch","mdlAssembly","lstAssembly","setLstAssembly","assemblyId","prm_assembly_no","prm_assembly_name","prm_physical_adr_1","prm_physical_adr_city","PageAssemblyEdit","setMdlAssembly","PagePropertySearch","pnAssembly","setPnAssembly","lstProperty","setLstProperty","propertyId","FtFmDecimalField","decPlaces","_value$toFixed2","parseDec","parseDecimalSpace","decEq","newValDec","PagePropertyEdit","mdlProperty","setMdlProperty","dtTodayAsDate","req","PageRegionSearch","mdlRegion","lstRegion","setLstRegion","regionId","prm_region_name","prm_region_no","PageRegionEdit","setMdlRegion","PageReportAssemblyAddedLast6Months","PageReportAssemblyNoPastors","PageReportAssemblyNumberList","PageReportAssemblyNumberListSum","PageReportAssemblyPastorsList","PageReportLabelAssemblySecretary","PageReportLabelNoMailAddresses","language","PageReportRegionList","PageReportRegionOfficeBearers","PageJusticeSearch","mdlJustice","lstJustice","setLstJustice","justiceId","prm_case_no","PageJusticeEdit","setMdlJustice","lkpPastor","setLkpPastor","PageJusticeNoteSearch","mdlNote","pnJustice","setPnJustice","lstNote","setLstNote","noteId","prm_justice_id","prm_userz_who","PageJusticeNoteEdit","setMdlNote","PageJusticeFileSearch","PageJusticeFileEdit","merchantId","merchantKey","payUrl","passphrase","payAmnt","PageAttendeeNewOnline","lkpTitle","setLkpTitle","setLkpProvince","lkpContact","setLkpContact","setLkpPayMethod","lkpAttType","setLkpAttType","lkpRegStatus","setLkpRegStatus","mdlAttendee","setMdlAttendee","_useState23","_useState24","setMode","onIdCheck","handlePaySuccess","fldSm","onResend","payAttendee","action","_mdlAttendee$rsaid_no","statusId","_mdlAttendee$rsaid_no2","att","merchant_id","merchant_key","return_url","feBaseUrl","cancel_url","notify_url","name_first","name_last","email_address","m_payment_id","amount","item_name","signature","encoded","generateSignature","elems","document","getElementById","elements","namedItem","PageAttendeeSearch","prm_goody","mdlGoody","lstAttendee","setLstAttendee","lkpGoody","setLkpGoody","attendeeId","prm_rsaid_no","prm_fullnames","prm_cell_no","PageAttendeeEdit","onSave","withLetter","PageConfregisStatistics","counts","setCounts","duration","loadCounts","setTimeout","_counts","attReg","asmRep","asmTot","asmPrc","isQuorum","descrStl","statStl","quorStl","PageConfregisCards","formKey","setFormKey","_createElement","ftPopupOptions","TYPE_VIP","TYPE_VOLUNTEER","PageConfregisCardsExtra","lkpType","setLkpType","names","mdlInfo","PageReportConfregisSummaryTotal","PageReportConfregisAttendees","PageReportConfregisByRegion","PageReportConfregisByType","PageReportConfregisByRegionNoId","PageReportConfregisQuorumDetail","PageReportConfregisQuorumTotal","PageReportConfregisSummary","PageConfrecepStatistics","attIn","asmIn","FtQrScanner","_ref$front","front","_ref$distinct","distinct","distReset","_ref$show","_ref$rat","onScan","onReset","lastScan","camFront","setCamFront","_Camera$useCameraPerm","Camera","useCameraPermissions","_Camera$useCameraPerm2","permission","requestPermission","camKey","setCamKey","camLayout","setCamLayout","granted","msgProps","Device","osName","onTapRequest","CameraType","back","barCodeScannerSettings","barCodeTypes","onBarCodeScanned","handleReset","PageConfrecepScan","_mdlAtt$surname","_mdlAtt$fullnames","_mdlAtt$rsaid_no","_mdlAtt$email","_mdlAtt$cell_no","_lkpAssembly$find$nam","_lkpAssembly$find","_lkpRegion$find$name","_lkpRegion$find","_find$name","_find","mdlAtt","setMdlAtt","mdlAtt2","msgReceive","msgPay","clrReceive","clrPay","stlFrame","stlAttInfo","stlMsg","stlBox","setReception","_lkpUserz$find$name","_lkpUserz$find","tmFmtMin","msgBkg","resetDisplay","PageConfrecepGoodyScan","PageReportConfrecepSummary","mdlReception","PageReportConfrecepDetail","PageVoteProcessManager","lkpPositionStatus","setLkpPositionStatus","lkpRoundStatus","setLkpRoundStatus","lkpCandidateStatus","setLkpCandidateStatus","refPositionStatus","setRefPositionStatus","refRoundStatus","setRefRoundStatus","lstPosition","setLstPosition","lstRound","setLstRound","loadData","txtHeading","txtItem","txtPosition","btnPropsGr","btnPropsOr","posCanOpen","posOpen","posCanClose","posCanReverse","posReverse","rnd","lst","roundStatus","roundCanProcess","roundCanClose","roundCanReverse","roundCanOpen","openRoundBtnText","any","lastRound","last","_lst$findLast","findLast","PageVoteCaptureNomin","mdlPosition","setMdlPosition","mdlRound","setMdlRound","mdlCandidate","setMdlCandidate","lkpCandidate","setLkpCandidate","txtStatus","PageVoteApprovalPrimary","lstCandidate","setLstCandidate","showEdit","setShowEdit","roundName","can","showButtons","can2","candidateEdit","candidateApprove","candidateDelete","PageVoteApprovalSecondary","_lstCandidate$0$total","totalDelegates","setTotalDelegates","totalVotes","_can$vote_perc","candidateApproval","showApproved","showRejected","approved","PageVoteApprovalFinal","showReject","setShowReject","isNomin","isFinalist","finalistUnset","allSecondApproved","all","anyFinalists","enableSubmit","_can$vote_perc2","isNormal","finalistSet","disqualifySet","_can$vote_perc3","isDisqualified","disqualifyUnset","PageVoteDisplayResults","lkpPosRound","setLkpPosRound","infoProps","_can$vote_perc$toFixe","MSG_STATE_NONE","MSG_STATE_POS_OPEN","MSG_STATE_RND_OPEN","MSG_STATE_RND_PROC","MSG_STATE_RND_COMPL","PageVoteDisplayStatus","_mdlRound$round_name","_mdlRound$round_name2","_mdlRound$round_name3","_mdlRound$round_no","lstFinalist","setLstFinalist","round","msgState","fin","PageReportVoteResults","App","urlHook","useURL","setInit","startPage","setStartPage","staticInit","orien","parseUrl","appTheme","addModelsClassMap","webpackContext","webpackContextResolve","__webpack_require__","module","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","amdO","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","splice","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","ns","create","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","g","globalThis","Function","prototype","Symbol","toStringTag","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""}