@plusscommunities/pluss-maintenance-app-a 8.0.26 → 8.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -153,10 +153,9 @@ class MaintenanceList extends Component {
153
153
  } = this.props;
154
154
  let filteredList = jobs;
155
155
  let jobIdMatch = null;
156
- if (jobfilters.status) {
157
- const expandedStatuses = this.expandStatus(jobfilters.status).split(",");
158
- filteredList = filteredList.filter(j => !j.status || expandedStatuses.includes(j.status));
159
- }
156
+
157
+ // Note: status, priority, type, and assignee filters are applied server-side
158
+ // via getJobs2, so no client-side filtering needed for those
160
159
 
161
160
  // Client-side search filtering (search is not supported server-side)
162
161
  if (searchText) {
@@ -169,10 +168,6 @@ class MaintenanceList extends Component {
169
168
  });
170
169
  if (!jobIdMatch) this.fetchJob(searchText);
171
170
  }
172
-
173
- // Note: status, priority, type, and assignee filters are applied server-side
174
- // via getJobs2, so no client-side filtering needed for those
175
-
176
171
  if (jobIdMatch) {
177
172
  const jobIndex = filteredList.indexOf(jobIdMatch);
178
173
  if (jobIndex > -1) {
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","Text","View","StyleSheet","FlatList","TouchableOpacity","Animated","_","connect","maintenanceActions","jobsLoaded","jobAdded","jobsAdded","jobStatusesUpdate","jobHideSeenUpdate","jobsFilterLoaded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Helper","values","MaintenanceList","constructor","props","_defineProperty","Value","status","statusTypes","length","incompleteStatuses","filter","s","category","map","text","join","overrideFilters","currentCounter","_refreshCounter","onLoadingChanged","jobfilters","res","getJobs2","site","expandStatus","priority","type","assignee","jobs","data","Items","lastKey","LastKey","_filterDataReady","_filterApplying","_showOverlay","setState","hasMore","error","console","log","loading","loadingMore","searchText","state","newJobs","newLastKey","getJobTypes","getSite","types","t","label","typeName","value","splice","jobId","job","getJobByJobId","source","filteredList","jobIdMatch","expandedStatuses","split","j","includes","find","room","toLowerCase","indexOf","fetchJob","jobIndex","unshift","callback","isEmpty","resetDataSource","showFilterPopup","selected","onToggleFilter","refresh","filterTexts","push","statusText","priorityText","assigneeName","emptyFilters","onSelectFilter","createElement","style","styles","LoadingIndicator","visible","timing","_overlayOpacity","toValue","duration","useNativeDriver","start","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","emptyRequestsStaff","emptyRequestsUser","hasFiltersActive","renderEmptyList","hasFilters","marginHorizontal","EmptyStateMain","title","onPress","clearFilters","clearFiltersButton","alignSelf","clearFiltersText","color","colourBrandingMain","renderFilterButton","filterButton","filterButtonText","getFilterButtonText","renderSearch","hasPermission","searchContainer","GenericInput","placeholder","textEntityName","onChangeText","onSearchText","onSubmitEditing","onSearchSubmit","squaredCorners","hasClear","returnKeyType","renderListHeader","ListHeaderComponent","height","renderList","keyboardShouldPersistTaps","flex","contentContainerStyle","paddingBottom","keyExtractor","item","id","renderItem","itemStyle","ListEmptyComponent","ListFooterComponent","renderListFooter","onEndReached","loadMore","onEndReachedThreshold","onRefresh","refreshing","renderFilterOverlay","filterOverlay","opacity","pointerEvents","filterOverlayInner","LoadingCircles","renderFilterPopup","onClose","render","container","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","marginTop","borderRadius","borderWidth","borderColor","absoluteFillObject","padding","mapStateToProps","user","notifications","reducerKey","jobsOrdered","orderBy","permissions","getMainBrandingColourFromState","updateKey","jobstatuses","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport {\n\tView,\n\tStyleSheet,\n\tFlatList,\n\tTouchableOpacity,\n\tAnimated,\n} from \"react-native\";\nimport _ from \"lodash\";\nimport { connect } from \"react-redux\";\nimport { maintenanceActions } from \"../apis\";\nimport {\n\tjobsLoaded,\n\tjobAdded,\n\tjobsAdded,\n\tjobStatusesUpdate,\n\tjobHideSeenUpdate,\n\tjobsFilterLoaded,\n} from \"../actions\";\nimport MaintenanceListItem from \"../components/MaintenanceListItem\";\nimport FilterPopupMenu from \"./FilterPopupMenu\";\nimport { Components, Colours, Helper } from \"../core.config\";\nimport { values } from \"../values.config\";\n\nclass MaintenanceList extends Component {\n\t_refreshCounter = 0;\n\t_filterApplying = false;\n\t_filterDataReady = false;\n\t_overlayOpacity = new Animated.Value(0);\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\ttypes: [],\n\t\t\tfilteredList: props.jobs,\n\t\t\tloading: false,\n\t\t\tloadingMore: false,\n\t\t\thasMore: true,\n\t\t\tlastKey: null,\n\t\t\tsearchText: \"\",\n\t\t\tshowFilterPopup: false,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.jobStatusesUpdate(this.props.site);\n\t\tthis.props.jobHideSeenUpdate(this.props.site);\n\t\tthis.refresh();\n\t\tthis.refreshTypes();\n\t\tthis.resetDataSource();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n\t\tif (\n\t\t\t!_.isEqual(prevProps.jobs, this.props.jobs) ||\n\t\t\t!_.isEqual(prevProps.jobfilters, this.props.jobfilters)\n\t\t)\n\t\t\tthis.resetDataSource();\n\t}\n\n\texpandStatus = (status) => {\n\t\tif (status !== \"Incomplete\") return status;\n\t\tconst { statusTypes } = this.props;\n\t\tif (!statusTypes || !statusTypes.length) return status;\n\t\tconst incompleteStatuses = statusTypes\n\t\t\t.filter((s) => s.category !== \"Completed\")\n\t\t\t.map((s) => s.text);\n\t\treturn incompleteStatuses.length > 0\n\t\t\t? incompleteStatuses.join(\",\")\n\t\t\t: status;\n\t};\n\n\trefresh = (overrideFilters) => {\n\t\tconst currentCounter = ++this._refreshCounter;\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst jobfilters = overrideFilters || this.props.jobfilters;\n\t\t\t\tconst res = await maintenanceActions.getJobs2(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tthis.expandStatus(jobfilters.status),\n\t\t\t\t\tjobfilters.priority,\n\t\t\t\t\tjobfilters.type,\n\t\t\t\t\tnull, // No lastKey = first page\n\t\t\t\t\tjobfilters.assignee,\n\t\t\t\t);\n\n\t\t\t\t// Discard stale responses from earlier filter changes\n\t\t\t\tif (currentCounter !== this._refreshCounter) return;\n\n\t\t\t\tconst jobs = res.data.Items;\n\t\t\t\tconst lastKey = res.data.LastKey;\n\n\t\t\t\t// Signal that the API response is ready before dispatching to Redux\n\t\t\t\tthis._filterDataReady = true;\n\n\t\t\t\t// Always replace jobs on refresh (filters are server-side)\n\t\t\t\tthis.props.jobsLoaded(jobs);\n\n\t\t\t\t// Reset filter flags directly in case resetDataSource never fires\n\t\t\t\t// (e.g. when the list was already empty and jobsLoaded([]) doesn't\n\t\t\t\t// trigger componentDidUpdate because _.isEqual([], []) is true)\n\t\t\t\tif (this._filterApplying) {\n\t\t\t\t\tthis._filterApplying = false;\n\t\t\t\t\tthis._filterDataReady = false;\n\t\t\t\t\tthis._showOverlay(false);\n\t\t\t\t}\n\n\t\t\t\tthis.setState({\n\t\t\t\t\tlastKey,\n\t\t\t\t\thasMore: !!lastKey,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (currentCounter !== this._refreshCounter) return;\n\t\t\t\tconsole.log(\"refresh error\", error);\n\t\t\t\tthis._filterApplying = false;\n\t\t\t\tthis._filterDataReady = false;\n\t\t\t\tthis._showOverlay(false);\n\t\t\t} finally {\n\t\t\t\tif (currentCounter === this._refreshCounter) {\n\t\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\tloadMore = () => {\n\t\tconst { loading, loadingMore, hasMore, lastKey, searchText } = this.state;\n\n\t\t// Don't load if already loading, no more pages, or during search\n\t\tif (loading || loadingMore || !hasMore || !lastKey || searchText) return;\n\n\t\tthis.setState({ loadingMore: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst { jobfilters } = this.props;\n\t\t\t\tconst res = await maintenanceActions.getJobs2(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tthis.expandStatus(jobfilters.status),\n\t\t\t\t\tjobfilters.priority,\n\t\t\t\t\tjobfilters.type,\n\t\t\t\t\tlastKey,\n\t\t\t\t\tjobfilters.assignee,\n\t\t\t\t);\n\n\t\t\t\tconst newJobs = res.data.Items;\n\t\t\t\tconst newLastKey = res.data.LastKey;\n\n\t\t\t\t// Append to existing jobs\n\t\t\t\tthis.props.jobsAdded(newJobs);\n\n\t\t\t\tthis.setState({\n\t\t\t\t\tlastKey: newLastKey,\n\t\t\t\t\thasMore: !!newLastKey,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"loadMore error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loadingMore: false });\n\t\t\t}\n\t\t});\n\t};\n\n\trefreshTypes = async () => {\n\t\tconst { data } = await maintenanceActions.getJobTypes(\n\t\t\tHelper.getSite(this.props.site),\n\t\t);\n\t\tconst types = data.map((t) => {\n\t\t\treturn { label: t.typeName, value: t.typeName };\n\t\t});\n\t\ttypes.splice(0, 0, { label: \"All\", value: \"\" });\n\t\t// console.log('refreshTypes', types);\n\t\tthis.setState({ types });\n\t};\n\n\tfetchJob = (jobId) => {\n\t\tif (this.state.loading) return;\n\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst job = await maintenanceActions.getJobByJobId(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tjobId,\n\t\t\t\t);\n\t\t\t\t// console.log('fetchJob', job?.data);\n\t\t\t\tthis.props.jobAdded(job.data);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"fetchJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tgetEmptyStateText() {\n\t\tif (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n\t\t\treturn this.props.options.EmptyText;\n\t\t}\n\t\treturn this.props.userCategory === \"staff\"\n\t\t\t? values.emptyRequestsStaff\n\t\t\t: values.emptyRequestsUser;\n\t}\n\n\tresetDataSource = (source = \"\") => {\n\t\tconst { searchText } = this.state;\n\t\tconst { jobs, jobfilters } = this.props;\n\n\t\tlet filteredList = jobs;\n\t\tlet jobIdMatch = null;\n\n\t\tif (jobfilters.status) {\n\t\t\tconst expandedStatuses = this.expandStatus(jobfilters.status).split(\",\");\n\t\t\tfilteredList = filteredList.filter(\n\t\t\t\t(j) => !j.status || expandedStatuses.includes(j.status),\n\t\t\t);\n\t\t}\n\n\t\t// Client-side search filtering (search is not supported server-side)\n\t\tif (searchText) {\n\t\t\tjobIdMatch = _.find(jobs, (j) => j.jobId === searchText);\n\t\t\tfilteredList = jobs.filter((j) => {\n\t\t\t\tif (\n\t\t\t\t\tj.room &&\n\t\t\t\t\tj.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\tif (!jobIdMatch) this.fetchJob(searchText);\n\t\t}\n\n\t\t// Note: status, priority, type, and assignee filters are applied server-side\n\t\t// via getJobs2, so no client-side filtering needed for those\n\n\t\tif (jobIdMatch) {\n\t\t\tconst jobIndex = filteredList.indexOf(jobIdMatch);\n\t\t\tif (jobIndex > -1) {\n\t\t\t\tfilteredList.splice(jobIndex, 1);\n\t\t\t}\n\t\t\tfilteredList.unshift(jobIdMatch);\n\t\t}\n\n\t\t// During a filter transition, don't clear the list until the API\n\t\t// response has arrived and been processed. This prevents the empty\n\t\t// state from flashing when jobs transiently drop to [].\n\t\tif (\n\t\t\tthis._filterApplying &&\n\t\t\t!this._filterDataReady &&\n\t\t\tfilteredList.length === 0\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState({ filteredList }, () => {\n\t\t\tif (this._filterDataReady) {\n\t\t\t\tthis._filterApplying = false;\n\t\t\t\tthis._filterDataReady = false;\n\t\t\t\tthis._showOverlay(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged)\n\t\t\t\tthis.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tonSearchText = (value) => {\n\t\tthis.setState({ searchText: value }, () => {\n\t\t\tif (_.isEmpty(this.state.searchText)) this.resetDataSource(\"search\");\n\t\t});\n\t};\n\n\tonSearchSubmit = () => {\n\t\tthis.resetDataSource(\"search\");\n\t};\n\n\tonToggleFilter = () => {\n\t\tthis.setState({ showFilterPopup: !this.state.showFilterPopup });\n\t};\n\n\tonSelectFilter = (selected) => {\n\t\tthis._filterApplying = true;\n\t\tthis._filterDataReady = false;\n\t\tthis._showOverlay(true);\n\t\tthis.props.jobsFilterLoaded(selected);\n\t\tthis.onToggleFilter();\n\t\t// Reset pagination but keep old list visible while loading\n\t\t// Pass filters directly to avoid stale props from async Redux update\n\t\tthis.setState({ lastKey: null, hasMore: true }, () => {\n\t\t\tthis.refresh(selected);\n\t\t});\n\t};\n\n\tgetFilterButtonText = () => {\n\t\tconst { jobfilters } = this.props;\n\t\tconst filterTexts = [];\n\t\tif (!_.isEmpty(jobfilters.status)) {\n\t\t\tfilterTexts.push(jobfilters.statusText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.priority)) {\n\t\t\tfilterTexts.push(jobfilters.priorityText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.type)) {\n\t\t\tfilterTexts.push(jobfilters.type);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.assignee)) {\n\t\t\tfilterTexts.push(jobfilters.assigneeName);\n\t\t}\n\t\tif (_.isEmpty(filterTexts)) {\n\t\t\treturn \"Filter\";\n\t\t}\n\t\treturn `Filtering by ${filterTexts.join(\", \")}`;\n\t};\n\n\thasFiltersActive() {\n\t\tconst { jobfilters } = this.props;\n\t\treturn (\n\t\t\t!_.isEmpty(jobfilters.status) ||\n\t\t\t!_.isEmpty(jobfilters.priority) ||\n\t\t\t!_.isEmpty(jobfilters.type) ||\n\t\t\t!_.isEmpty(jobfilters.assignee)\n\t\t);\n\t}\n\n\tclearFilters = () => {\n\t\tconst emptyFilters = {\n\t\t\tstatus: \"\",\n\t\t\tstatusText: \"\",\n\t\t\tpriority: \"\",\n\t\t\tpriorityText: \"\",\n\t\t\ttype: \"\",\n\t\t\tassignee: \"\",\n\t\t\tassigneeName: \"\",\n\t\t};\n\t\tthis.onSelectFilter(emptyFilters);\n\t};\n\n\trenderEmptyList() {\n\t\tif (this.state.loading || this._filterApplying) return null;\n\n\t\tconst hasFilters = this.hasFiltersActive();\n\n\t\treturn (\n\t\t\t<View style={{ marginHorizontal: 16 }}>\n\t\t\t\t<Components.EmptyStateMain\n\t\t\t\t\ttitle={\n\t\t\t\t\t\thasFilters\n\t\t\t\t\t\t\t? \"No requests match your filters\"\n\t\t\t\t\t\t\t: this.getEmptyStateText()\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t{hasFilters && (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tonPress={this.clearFilters}\n\t\t\t\t\t\tstyle={[styles.clearFiltersButton, { alignSelf: \"center\" }]}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles.clearFiltersText,\n\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tClear filters\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderFilterButton() {\n\t\treturn (\n\t\t\t<TouchableOpacity onPress={this.onToggleFilter}>\n\t\t\t\t<View style={styles.filterButton}>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\tstyles.filterButtonText,\n\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t]}\n\t\t\t\t\t>\n\t\t\t\t\t\t{this.getFilterButtonText()}\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderSearch() {\n\t\tif (!this.props.hasPermission) return null;\n\n\t\treturn (\n\t\t\t<View style={styles.searchContainer}>\n\t\t\t\t<Components.GenericInput\n\t\t\t\t\tplaceholder={`Search by ${values.textEntityName} ID or Address`}\n\t\t\t\t\tvalue={this.state.searchText}\n\t\t\t\t\tonChangeText={this.onSearchText}\n\t\t\t\t\tonSubmitEditing={this.onSearchSubmit}\n\t\t\t\t\tsquaredCorners\n\t\t\t\t\thasClear\n\t\t\t\t\t// keyboardType={'numeric'}\n\t\t\t\t\treturnKeyType={\"done\"}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderListHeader() {\n\t\tconst { ListHeaderComponent } = this.props;\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t{ListHeaderComponent ? (\n\t\t\t\t\tListHeaderComponent\n\t\t\t\t) : (\n\t\t\t\t\t<View style={{ height: 8 }} />\n\t\t\t\t)}\n\t\t\t\t{this.renderFilterButton()}\n\t\t\t\t{this.renderSearch()}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderList() {\n\t\tconst { filteredList, loading } = this.state;\n\n\t\treturn (\n\t\t\t<FlatList\n\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\tstyle={{ flex: 1 }}\n\t\t\t\tcontentContainerStyle={{ paddingBottom: 16 }}\n\t\t\t\tdata={filteredList}\n\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\trenderItem={({ item }) => (\n\t\t\t\t\t<MaintenanceListItem style={this.props.itemStyle} job={item} />\n\t\t\t\t)}\n\t\t\t\tListEmptyComponent={this.renderEmptyList()}\n\t\t\t\tListHeaderComponent={this.renderListHeader()}\n\t\t\t\tListFooterComponent={this.renderListFooter()}\n\t\t\t\tonEndReached={this.loadMore}\n\t\t\t\tonEndReachedThreshold={0.5}\n\t\t\t\tonRefresh={this.refresh}\n\t\t\t\trefreshing={loading}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderListFooter = () => {\n\t\tif (!this.state.loadingMore) return null;\n\n\t\treturn (\n\t\t\t<View style={styles.loadingMore}>\n\t\t\t\t<Components.LoadingIndicator visible={true} />\n\t\t\t</View>\n\t\t);\n\t};\n\n\t_showOverlay = (visible) => {\n\t\tAnimated.timing(this._overlayOpacity, {\n\t\t\ttoValue: visible ? 1 : 0,\n\t\t\tduration: 200,\n\t\t\tuseNativeDriver: true,\n\t\t}).start();\n\t};\n\n\trenderFilterOverlay() {\n\t\tif (!this._filterApplying) return null;\n\n\t\treturn (\n\t\t\t<Animated.View\n\t\t\t\tstyle={[styles.filterOverlay, { opacity: this._overlayOpacity }]}\n\t\t\t\tpointerEvents=\"none\"\n\t\t\t>\n\t\t\t\t<View style={styles.filterOverlayInner}>\n\t\t\t\t\t<Components.LoadingCircles />\n\t\t\t\t</View>\n\t\t\t</Animated.View>\n\t\t);\n\t}\n\n\trenderFilterPopup() {\n\t\tconst { jobfilters } = this.props;\n\t\tconst { showFilterPopup, types } = this.state;\n\t\tif (!showFilterPopup) return null;\n\n\t\treturn (\n\t\t\t<FilterPopupMenu\n\t\t\t\tsite={this.props.site}\n\t\t\t\ttypes={types}\n\t\t\t\tstatus={jobfilters.status}\n\t\t\t\tpriority={jobfilters.priority}\n\t\t\t\tassignee={jobfilters.assignee}\n\t\t\t\ttype={jobfilters.type}\n\t\t\t\tonClose={this.onSelectFilter}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={[styles.container, this.props.style]}>\n\t\t\t\t{this.renderList()}\n\t\t\t\t{this.renderFilterOverlay()}\n\t\t\t\t{this.renderFilterPopup()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tfilterContainerOuter: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 16,\n\t},\n\tfilterTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 11,\n\t\tletterSpacing: 0.8,\n\t\tcolor: \"#4d4d4d\",\n\t},\n\tfilterContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tfilterText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tmarginRight: 6,\n\t},\n\tfilterIcon: {\n\t\tfontSize: 20,\n\t},\n\tsearchContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t},\n\tfilterButton: {\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t\tflexDirection: \"row-reverse\",\n\t},\n\tfilterButtonText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t},\n\tloadingMore: {\n\t\tpaddingVertical: 20,\n\t\talignItems: \"center\",\n\t},\n\tclearFiltersButton: {\n\t\tmarginTop: 12,\n\t\tpaddingVertical: 10,\n\t\tpaddingHorizontal: 24,\n\t\tborderRadius: 8,\n\t\tborderWidth: 1,\n\t\tborderColor: \"#ccc\",\n\t\tbackgroundColor: \"#f9f9f9\",\n\t},\n\tclearFiltersText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 15,\n\t},\n\tfilterOverlay: {\n\t\t...StyleSheet.absoluteFillObject,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tbackgroundColor: \"rgba(255, 255, 255, 0.7)\",\n\t},\n\tfilterOverlayInner: {\n\t\tpadding: 20,\n\t\tborderRadius: 12,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\tconst { user, notifications } = state;\n\tconst jobs = state[values.reducerKey];\n\tconst jobsOrdered = _.orderBy(jobs.jobs, [\"createdUnix\"], [\"desc\"]);\n\tconst hasPermission = _.includes(user.permissions, \"maintenanceTracking\");\n\n\treturn {\n\t\thasPermission,\n\t\tjobs: jobsOrdered,\n\t\tsite: user.site,\n\t\tuserCategory: user.category,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tdataUpdated: notifications.dataUpdated[values.updateKey],\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\tjobfilters: state[values.reducerKey].jobfilters || {},\n\t};\n};\n\nexport default connect(\n\tmapStateToProps,\n\t{\n\t\tjobsLoaded,\n\t\tjobAdded,\n\t\tjobsAdded,\n\t\tjobStatusesUpdate,\n\t\tjobHideSeenUpdate,\n\t\tjobsFilterLoaded,\n\t},\n\tnull,\n\t{\n\t\tforwardRef: true,\n\t},\n)(MaintenanceList);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Component","Text","View","StyleSheet","FlatList","TouchableOpacity","Animated","_","connect","maintenanceActions","jobsLoaded","jobAdded","jobsAdded","jobStatusesUpdate","jobHideSeenUpdate","jobsFilterLoaded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Helper","values","MaintenanceList","constructor","props","_defineProperty","Value","status","statusTypes","length","incompleteStatuses","filter","s","category","map","text","join","overrideFilters","currentCounter","_refreshCounter","onLoadingChanged","jobfilters","res","getJobs2","site","expandStatus","priority","type","assignee","jobs","data","Items","lastKey","LastKey","_filterDataReady","_filterApplying","_showOverlay","setState","hasMore","error","console","log","loading","loadingMore","searchText","state","newJobs","newLastKey","getJobTypes","getSite","types","t","label","typeName","value","splice","jobId","job","getJobByJobId","source","filteredList","jobIdMatch","find","j","room","toLowerCase","indexOf","fetchJob","jobIndex","unshift","callback","isEmpty","resetDataSource","showFilterPopup","selected","onToggleFilter","refresh","filterTexts","push","statusText","priorityText","assigneeName","emptyFilters","onSelectFilter","createElement","style","styles","LoadingIndicator","visible","timing","_overlayOpacity","toValue","duration","useNativeDriver","start","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","emptyRequestsStaff","emptyRequestsUser","hasFiltersActive","renderEmptyList","hasFilters","marginHorizontal","EmptyStateMain","title","onPress","clearFilters","clearFiltersButton","alignSelf","clearFiltersText","color","colourBrandingMain","renderFilterButton","filterButton","filterButtonText","getFilterButtonText","renderSearch","hasPermission","searchContainer","GenericInput","placeholder","textEntityName","onChangeText","onSearchText","onSubmitEditing","onSearchSubmit","squaredCorners","hasClear","returnKeyType","renderListHeader","ListHeaderComponent","height","renderList","keyboardShouldPersistTaps","flex","contentContainerStyle","paddingBottom","keyExtractor","item","id","renderItem","itemStyle","ListEmptyComponent","ListFooterComponent","renderListFooter","onEndReached","loadMore","onEndReachedThreshold","onRefresh","refreshing","renderFilterOverlay","filterOverlay","opacity","pointerEvents","filterOverlayInner","LoadingCircles","renderFilterPopup","onClose","render","container","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","marginTop","borderRadius","borderWidth","borderColor","absoluteFillObject","padding","mapStateToProps","user","notifications","reducerKey","jobsOrdered","orderBy","includes","permissions","getMainBrandingColourFromState","updateKey","jobstatuses","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport {\n View,\n StyleSheet,\n FlatList,\n TouchableOpacity,\n Animated,\n} from \"react-native\";\nimport _ from \"lodash\";\nimport { connect } from \"react-redux\";\nimport { maintenanceActions } from \"../apis\";\nimport {\n jobsLoaded,\n jobAdded,\n jobsAdded,\n jobStatusesUpdate,\n jobHideSeenUpdate,\n jobsFilterLoaded,\n} from \"../actions\";\nimport MaintenanceListItem from \"../components/MaintenanceListItem\";\nimport FilterPopupMenu from \"./FilterPopupMenu\";\nimport { Components, Colours, Helper } from \"../core.config\";\nimport { values } from \"../values.config\";\n\nclass MaintenanceList extends Component {\n _refreshCounter = 0;\n _filterApplying = false;\n _filterDataReady = false;\n _overlayOpacity = new Animated.Value(0);\n\n constructor(props) {\n super(props);\n\n this.state = {\n types: [],\n filteredList: props.jobs,\n loading: false,\n loadingMore: false,\n hasMore: true,\n lastKey: null,\n searchText: \"\",\n showFilterPopup: false,\n };\n }\n\n componentDidMount() {\n this.props.jobStatusesUpdate(this.props.site);\n this.props.jobHideSeenUpdate(this.props.site);\n this.refresh();\n this.refreshTypes();\n this.resetDataSource();\n }\n\n componentDidUpdate(prevProps) {\n if (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n if (\n !_.isEqual(prevProps.jobs, this.props.jobs) ||\n !_.isEqual(prevProps.jobfilters, this.props.jobfilters)\n )\n this.resetDataSource();\n }\n\n expandStatus = (status) => {\n if (status !== \"Incomplete\") return status;\n const { statusTypes } = this.props;\n if (!statusTypes || !statusTypes.length) return status;\n const incompleteStatuses = statusTypes\n .filter((s) => s.category !== \"Completed\")\n .map((s) => s.text);\n return incompleteStatuses.length > 0\n ? incompleteStatuses.join(\",\")\n : status;\n };\n\n refresh = (overrideFilters) => {\n const currentCounter = ++this._refreshCounter;\n this.onLoadingChanged(true, async () => {\n try {\n const jobfilters = overrideFilters || this.props.jobfilters;\n const res = await maintenanceActions.getJobs2(\n this.props.site,\n this.expandStatus(jobfilters.status),\n jobfilters.priority,\n jobfilters.type,\n null, // No lastKey = first page\n jobfilters.assignee,\n );\n\n // Discard stale responses from earlier filter changes\n if (currentCounter !== this._refreshCounter) return;\n\n const jobs = res.data.Items;\n const lastKey = res.data.LastKey;\n\n // Signal that the API response is ready before dispatching to Redux\n this._filterDataReady = true;\n\n // Always replace jobs on refresh (filters are server-side)\n this.props.jobsLoaded(jobs);\n\n // Reset filter flags directly in case resetDataSource never fires\n // (e.g. when the list was already empty and jobsLoaded([]) doesn't\n // trigger componentDidUpdate because _.isEqual([], []) is true)\n if (this._filterApplying) {\n this._filterApplying = false;\n this._filterDataReady = false;\n this._showOverlay(false);\n }\n\n this.setState({\n lastKey,\n hasMore: !!lastKey,\n });\n } catch (error) {\n if (currentCounter !== this._refreshCounter) return;\n console.log(\"refresh error\", error);\n this._filterApplying = false;\n this._filterDataReady = false;\n this._showOverlay(false);\n } finally {\n if (currentCounter === this._refreshCounter) {\n this.onLoadingChanged(false);\n }\n }\n });\n };\n\n loadMore = () => {\n const { loading, loadingMore, hasMore, lastKey, searchText } = this.state;\n\n // Don't load if already loading, no more pages, or during search\n if (loading || loadingMore || !hasMore || !lastKey || searchText) return;\n\n this.setState({ loadingMore: true }, async () => {\n try {\n const { jobfilters } = this.props;\n const res = await maintenanceActions.getJobs2(\n this.props.site,\n this.expandStatus(jobfilters.status),\n jobfilters.priority,\n jobfilters.type,\n lastKey,\n jobfilters.assignee,\n );\n\n const newJobs = res.data.Items;\n const newLastKey = res.data.LastKey;\n\n // Append to existing jobs\n this.props.jobsAdded(newJobs);\n\n this.setState({\n lastKey: newLastKey,\n hasMore: !!newLastKey,\n });\n } catch (error) {\n console.log(\"loadMore error\", error);\n } finally {\n this.setState({ loadingMore: false });\n }\n });\n };\n\n refreshTypes = async () => {\n const { data } = await maintenanceActions.getJobTypes(\n Helper.getSite(this.props.site),\n );\n const types = data.map((t) => {\n return { label: t.typeName, value: t.typeName };\n });\n types.splice(0, 0, { label: \"All\", value: \"\" });\n // console.log('refreshTypes', types);\n this.setState({ types });\n };\n\n fetchJob = (jobId) => {\n if (this.state.loading) return;\n\n this.onLoadingChanged(true, async () => {\n try {\n const job = await maintenanceActions.getJobByJobId(\n this.props.site,\n jobId,\n );\n // console.log('fetchJob', job?.data);\n this.props.jobAdded(job.data);\n } catch (error) {\n console.log(\"fetchJob error\", error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n getEmptyStateText() {\n if (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n return this.props.options.EmptyText;\n }\n return this.props.userCategory === \"staff\"\n ? values.emptyRequestsStaff\n : values.emptyRequestsUser;\n }\n\n resetDataSource = (source = \"\") => {\n const { searchText } = this.state;\n const { jobs, jobfilters } = this.props;\n\n let filteredList = jobs;\n let jobIdMatch = null;\n\n // Note: status, priority, type, and assignee filters are applied server-side\n // via getJobs2, so no client-side filtering needed for those\n\n // Client-side search filtering (search is not supported server-side)\n if (searchText) {\n jobIdMatch = _.find(jobs, (j) => j.jobId === searchText);\n filteredList = jobs.filter((j) => {\n if (\n j.room &&\n j.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1\n ) {\n return true;\n }\n return false;\n });\n if (!jobIdMatch) this.fetchJob(searchText);\n }\n\n if (jobIdMatch) {\n const jobIndex = filteredList.indexOf(jobIdMatch);\n if (jobIndex > -1) {\n filteredList.splice(jobIndex, 1);\n }\n filteredList.unshift(jobIdMatch);\n }\n\n // During a filter transition, don't clear the list until the API\n // response has arrived and been processed. This prevents the empty\n // state from flashing when jobs transiently drop to [].\n if (\n this._filterApplying &&\n !this._filterDataReady &&\n filteredList.length === 0\n ) {\n return;\n }\n\n this.setState({ filteredList }, () => {\n if (this._filterDataReady) {\n this._filterApplying = false;\n this._filterDataReady = false;\n this._showOverlay(false);\n }\n });\n };\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged)\n this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n onSearchText = (value) => {\n this.setState({ searchText: value }, () => {\n if (_.isEmpty(this.state.searchText)) this.resetDataSource(\"search\");\n });\n };\n\n onSearchSubmit = () => {\n this.resetDataSource(\"search\");\n };\n\n onToggleFilter = () => {\n this.setState({ showFilterPopup: !this.state.showFilterPopup });\n };\n\n onSelectFilter = (selected) => {\n this._filterApplying = true;\n this._filterDataReady = false;\n this._showOverlay(true);\n this.props.jobsFilterLoaded(selected);\n this.onToggleFilter();\n // Reset pagination but keep old list visible while loading\n // Pass filters directly to avoid stale props from async Redux update\n this.setState({ lastKey: null, hasMore: true }, () => {\n this.refresh(selected);\n });\n };\n\n getFilterButtonText = () => {\n const { jobfilters } = this.props;\n const filterTexts = [];\n if (!_.isEmpty(jobfilters.status)) {\n filterTexts.push(jobfilters.statusText);\n }\n if (!_.isEmpty(jobfilters.priority)) {\n filterTexts.push(jobfilters.priorityText);\n }\n if (!_.isEmpty(jobfilters.type)) {\n filterTexts.push(jobfilters.type);\n }\n if (!_.isEmpty(jobfilters.assignee)) {\n filterTexts.push(jobfilters.assigneeName);\n }\n if (_.isEmpty(filterTexts)) {\n return \"Filter\";\n }\n return `Filtering by ${filterTexts.join(\", \")}`;\n };\n\n hasFiltersActive() {\n const { jobfilters } = this.props;\n return (\n !_.isEmpty(jobfilters.status) ||\n !_.isEmpty(jobfilters.priority) ||\n !_.isEmpty(jobfilters.type) ||\n !_.isEmpty(jobfilters.assignee)\n );\n }\n\n clearFilters = () => {\n const emptyFilters = {\n status: \"\",\n statusText: \"\",\n priority: \"\",\n priorityText: \"\",\n type: \"\",\n assignee: \"\",\n assigneeName: \"\",\n };\n this.onSelectFilter(emptyFilters);\n };\n\n renderEmptyList() {\n if (this.state.loading || this._filterApplying) return null;\n\n const hasFilters = this.hasFiltersActive();\n\n return (\n <View style={{ marginHorizontal: 16 }}>\n <Components.EmptyStateMain\n title={\n hasFilters\n ? \"No requests match your filters\"\n : this.getEmptyStateText()\n }\n />\n {hasFilters && (\n <TouchableOpacity\n onPress={this.clearFilters}\n style={[styles.clearFiltersButton, { alignSelf: \"center\" }]}\n >\n <Text\n style={[\n styles.clearFiltersText,\n { color: this.props.colourBrandingMain },\n ]}\n >\n Clear filters\n </Text>\n </TouchableOpacity>\n )}\n </View>\n );\n }\n\n renderFilterButton() {\n return (\n <TouchableOpacity onPress={this.onToggleFilter}>\n <View style={styles.filterButton}>\n <Text\n style={[\n styles.filterButtonText,\n { color: this.props.colourBrandingMain },\n ]}\n >\n {this.getFilterButtonText()}\n </Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSearch() {\n if (!this.props.hasPermission) return null;\n\n return (\n <View style={styles.searchContainer}>\n <Components.GenericInput\n placeholder={`Search by ${values.textEntityName} ID or Address`}\n value={this.state.searchText}\n onChangeText={this.onSearchText}\n onSubmitEditing={this.onSearchSubmit}\n squaredCorners\n hasClear\n // keyboardType={'numeric'}\n returnKeyType={\"done\"}\n />\n </View>\n );\n }\n\n renderListHeader() {\n const { ListHeaderComponent } = this.props;\n return (\n <View>\n {ListHeaderComponent ? (\n ListHeaderComponent\n ) : (\n <View style={{ height: 8 }} />\n )}\n {this.renderFilterButton()}\n {this.renderSearch()}\n </View>\n );\n }\n\n renderList() {\n const { filteredList, loading } = this.state;\n\n return (\n <FlatList\n keyboardShouldPersistTaps=\"always\"\n style={{ flex: 1 }}\n contentContainerStyle={{ paddingBottom: 16 }}\n data={filteredList}\n keyExtractor={(item) => item.id}\n renderItem={({ item }) => (\n <MaintenanceListItem style={this.props.itemStyle} job={item} />\n )}\n ListEmptyComponent={this.renderEmptyList()}\n ListHeaderComponent={this.renderListHeader()}\n ListFooterComponent={this.renderListFooter()}\n onEndReached={this.loadMore}\n onEndReachedThreshold={0.5}\n onRefresh={this.refresh}\n refreshing={loading}\n />\n );\n }\n\n renderListFooter = () => {\n if (!this.state.loadingMore) return null;\n\n return (\n <View style={styles.loadingMore}>\n <Components.LoadingIndicator visible={true} />\n </View>\n );\n };\n\n _showOverlay = (visible) => {\n Animated.timing(this._overlayOpacity, {\n toValue: visible ? 1 : 0,\n duration: 200,\n useNativeDriver: true,\n }).start();\n };\n\n renderFilterOverlay() {\n if (!this._filterApplying) return null;\n\n return (\n <Animated.View\n style={[styles.filterOverlay, { opacity: this._overlayOpacity }]}\n pointerEvents=\"none\"\n >\n <View style={styles.filterOverlayInner}>\n <Components.LoadingCircles />\n </View>\n </Animated.View>\n );\n }\n\n renderFilterPopup() {\n const { jobfilters } = this.props;\n const { showFilterPopup, types } = this.state;\n if (!showFilterPopup) return null;\n\n return (\n <FilterPopupMenu\n site={this.props.site}\n types={types}\n status={jobfilters.status}\n priority={jobfilters.priority}\n assignee={jobfilters.assignee}\n type={jobfilters.type}\n onClose={this.onSelectFilter}\n />\n );\n }\n\n render() {\n return (\n <View style={[styles.container, this.props.style]}>\n {this.renderList()}\n {this.renderFilterOverlay()}\n {this.renderFilterPopup()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: \"#fff\",\n },\n filterContainerOuter: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 16,\n },\n filterTitle: {\n fontFamily: \"sf-bold\",\n fontSize: 11,\n letterSpacing: 0.8,\n color: \"#4d4d4d\",\n },\n filterContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n filterText: {\n fontFamily: \"sf-semibold\",\n fontSize: 16,\n marginRight: 6,\n },\n filterIcon: {\n fontSize: 20,\n },\n searchContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingBottom: 8,\n paddingHorizontal: 16,\n },\n filterButton: {\n paddingBottom: 8,\n paddingHorizontal: 16,\n flexDirection: \"row-reverse\",\n },\n filterButtonText: {\n fontFamily: \"sf-semibold\",\n fontSize: 16,\n },\n loadingMore: {\n paddingVertical: 20,\n alignItems: \"center\",\n },\n clearFiltersButton: {\n marginTop: 12,\n paddingVertical: 10,\n paddingHorizontal: 24,\n borderRadius: 8,\n borderWidth: 1,\n borderColor: \"#ccc\",\n backgroundColor: \"#f9f9f9\",\n },\n clearFiltersText: {\n fontFamily: \"sf-semibold\",\n fontSize: 15,\n },\n filterOverlay: {\n ...StyleSheet.absoluteFillObject,\n justifyContent: \"center\",\n alignItems: \"center\",\n backgroundColor: \"rgba(255, 255, 255, 0.7)\",\n },\n filterOverlayInner: {\n padding: 20,\n borderRadius: 12,\n },\n});\n\nconst mapStateToProps = (state) => {\n const { user, notifications } = state;\n const jobs = state[values.reducerKey];\n const jobsOrdered = _.orderBy(jobs.jobs, [\"createdUnix\"], [\"desc\"]);\n const hasPermission = _.includes(user.permissions, \"maintenanceTracking\");\n\n return {\n hasPermission,\n jobs: jobsOrdered,\n site: user.site,\n userCategory: user.category,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n dataUpdated: notifications.dataUpdated[values.updateKey],\n statusTypes: state[values.reducerKey].jobstatuses,\n jobfilters: state[values.reducerKey].jobfilters || {},\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n jobsLoaded,\n jobAdded,\n jobsAdded,\n jobStatusesUpdate,\n jobHideSeenUpdate,\n jobsFilterLoaded,\n },\n null,\n {\n forwardRef: true,\n },\n)(MaintenanceList);\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-maintenance-app-a",
3
- "version": "8.0.26",
3
+ "version": "8.0.27",
4
4
  "description": "Extension package to enable maintenance on Pluss Communities Platform",
5
5
  "main": "dist/module/index.js",
6
6
  "module": "dist/module/index.js",