Added find owner modal and basic searching logic.
This commit is contained in:
@@ -3361,6 +3361,168 @@
|
|||||||
</folder_node>
|
</folder_node>
|
||||||
</children>
|
</children>
|
||||||
</folder_node>
|
</folder_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>owners</name>
|
||||||
|
<children>
|
||||||
|
<folder_node>
|
||||||
|
<name>fields</name>
|
||||||
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>ownr_addr1</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>ownr_city</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>ownr_ea</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>ownr_fn</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>ownr_ln</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>ownr_ph1</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
</children>
|
||||||
|
</folder_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>labels</name>
|
||||||
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>existing_owners</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
</children>
|
||||||
|
</folder_node>
|
||||||
|
</children>
|
||||||
|
</folder_node>
|
||||||
<folder_node>
|
<folder_node>
|
||||||
<name>profile</name>
|
<name>profile</name>
|
||||||
<children>
|
<children>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { Input, Table, Button, Icon, notification, Modal } from "antd";
|
import { Button, Icon, Input, notification, Table } from "antd";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { alphaSort } from "../../utils/sorters";
|
|
||||||
import { DateTimeFormatter } from "../../utils/DateFormatter";
|
import { DateTimeFormatter } from "../../utils/DateFormatter";
|
||||||
|
import { alphaSort } from "../../utils/sorters";
|
||||||
import OwnerFindModalContainer from "../owner-find-modal/owner-find-modal.container";
|
import OwnerFindModalContainer from "../owner-find-modal/owner-find-modal.container";
|
||||||
export default function JobsAvailableComponent({
|
export default function JobsAvailableComponent({
|
||||||
loading,
|
loading,
|
||||||
@@ -10,9 +10,12 @@ export default function JobsAvailableComponent({
|
|||||||
refetch,
|
refetch,
|
||||||
deleteJob,
|
deleteJob,
|
||||||
deleteAllNewJobs,
|
deleteAllNewJobs,
|
||||||
insertNewJob,
|
estDataLazyLoad,
|
||||||
setJobId,
|
onModalOk,
|
||||||
estDataLazyLoad
|
onModalCancel,
|
||||||
|
modalVisible,
|
||||||
|
setModalVisible,
|
||||||
|
selectedOwner, setSelectedOwner
|
||||||
}) {
|
}) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const [loadEstData, estData] = estDataLazyLoad;
|
const [loadEstData, estData] = estDataLazyLoad;
|
||||||
@@ -22,7 +25,7 @@ export default function JobsAvailableComponent({
|
|||||||
filteredInfo: { text: "" }
|
filteredInfo: { text: "" }
|
||||||
});
|
});
|
||||||
|
|
||||||
const [modalVisible, setModalVisible] = useState(false);
|
|
||||||
|
|
||||||
const handleTableChange = (pagination, filters, sorter) => {
|
const handleTableChange = (pagination, filters, sorter) => {
|
||||||
setState({ ...state, filteredInfo: filters, sortedInfo: sorter });
|
setState({ ...state, filteredInfo: filters, sortedInfo: sorter });
|
||||||
@@ -121,8 +124,6 @@ export default function JobsAvailableComponent({
|
|||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
console.log("record.id", record.id);
|
|
||||||
|
|
||||||
loadEstData({ variables: { id: record.id } });
|
loadEstData({ variables: { id: record.id } });
|
||||||
setModalVisible(true);
|
setModalVisible(true);
|
||||||
}}
|
}}
|
||||||
@@ -136,8 +137,6 @@ export default function JobsAvailableComponent({
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
console.log("estData", estData);
|
|
||||||
|
|
||||||
const owner =
|
const owner =
|
||||||
estData.data &&
|
estData.data &&
|
||||||
estData.data.available_jobs_by_pk &&
|
estData.data.available_jobs_by_pk &&
|
||||||
@@ -146,27 +145,18 @@ export default function JobsAvailableComponent({
|
|||||||
estData.data.available_jobs_by_pk.est_data.owner.data
|
estData.data.available_jobs_by_pk.est_data.owner.data
|
||||||
? estData.data.available_jobs_by_pk.est_data.owner.data
|
? estData.data.available_jobs_by_pk.est_data.owner.data
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<OwnerFindModalContainer
|
<OwnerFindModalContainer
|
||||||
loading={estData.loading}
|
loading={estData.loading}
|
||||||
error={estData.error}
|
error={estData.error}
|
||||||
owner={owner}
|
owner={owner}
|
||||||
|
selectedOwner={selectedOwner}
|
||||||
|
setSelectedOwner={setSelectedOwner}
|
||||||
visible={modalVisible}
|
visible={modalVisible}
|
||||||
onOk={() => {
|
onOk={onModalOk}
|
||||||
setModalVisible(false);
|
onCancel={onModalCancel}
|
||||||
// insertNewJob({
|
|
||||||
// variables: {
|
|
||||||
// job: record.est_data
|
|
||||||
// }
|
|
||||||
// }).then(r => {
|
|
||||||
// notification["success"]({
|
|
||||||
// message: t("jobs.successes.created")
|
|
||||||
// });
|
|
||||||
// refetch();
|
|
||||||
// });
|
|
||||||
}}
|
|
||||||
onCancel={() => setModalVisible(false)}
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Table
|
<Table
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import React from "react";
|
import React, { useState } from "react";
|
||||||
import { useMutation, useQuery } from "react-apollo";
|
import { useMutation, useQuery } from "react-apollo";
|
||||||
import {
|
import {
|
||||||
DELETE_ALL_AVAILABLE_NEW_JOBS,
|
DELETE_ALL_AVAILABLE_NEW_JOBS,
|
||||||
@@ -13,9 +13,28 @@ export default function JobsAvailableContainer({ deleteJob, estDataLazyLoad }) {
|
|||||||
fetchPolicy: "network-only"
|
fetchPolicy: "network-only"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const [modalVisible, setModalVisible] = useState(false);
|
||||||
|
const [selectedOwner, setSelectedOwner] = useState(null);
|
||||||
const [deleteAllNewJobs] = useMutation(DELETE_ALL_AVAILABLE_NEW_JOBS);
|
const [deleteAllNewJobs] = useMutation(DELETE_ALL_AVAILABLE_NEW_JOBS);
|
||||||
const [insertNewJob] = useMutation(INSERT_NEW_JOB);
|
const [insertNewJob] = useMutation(INSERT_NEW_JOB);
|
||||||
|
|
||||||
|
const onModalOk = () => {
|
||||||
|
setModalVisible(false);
|
||||||
|
console.log("selectedOwner", selectedOwner);
|
||||||
|
// insertNewJob({
|
||||||
|
// variables: {
|
||||||
|
// job: record.est_data
|
||||||
|
// }
|
||||||
|
// }).then(r => {
|
||||||
|
// notification["success"]({
|
||||||
|
// message: t("jobs.successes.created")
|
||||||
|
// });
|
||||||
|
// refetch();
|
||||||
|
// });
|
||||||
|
};
|
||||||
|
|
||||||
|
const onModalCancel = () => setModalVisible(false);
|
||||||
|
|
||||||
if (error) return <AlertComponent type="error" message={error.message} />;
|
if (error) return <AlertComponent type="error" message={error.message} />;
|
||||||
return (
|
return (
|
||||||
<JobsAvailableComponent
|
<JobsAvailableComponent
|
||||||
@@ -26,6 +45,12 @@ export default function JobsAvailableContainer({ deleteJob, estDataLazyLoad }) {
|
|||||||
deleteAllNewJobs={deleteAllNewJobs}
|
deleteAllNewJobs={deleteAllNewJobs}
|
||||||
insertNewJob={insertNewJob}
|
insertNewJob={insertNewJob}
|
||||||
estDataLazyLoad={estDataLazyLoad}
|
estDataLazyLoad={estDataLazyLoad}
|
||||||
|
onModalCancel={onModalCancel}
|
||||||
|
onModalOk={onModalOk}
|
||||||
|
modalVisible={modalVisible}
|
||||||
|
setModalVisible={setModalVisible}
|
||||||
|
selectedOwner={selectedOwner}
|
||||||
|
setSelectedOwner={setSelectedOwner}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,124 @@
|
|||||||
|
import { Table, Checkbox, Divider } from "antd";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
export default function OwnerFindModalComponent() {
|
import { useTranslation } from "react-i18next";
|
||||||
return <div>Modal Componnentasdasd</div>;
|
import PhoneFormatter from "../../utils/PhoneFormatter";
|
||||||
|
|
||||||
|
export default function OwnerFindModalComponent({
|
||||||
|
selectedOwner,
|
||||||
|
setSelectedOwner,
|
||||||
|
ownersListLoading,
|
||||||
|
ownersList
|
||||||
|
}) {
|
||||||
|
//setSelectedOwner is used to set the record id of the owner to use for adding the job.
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
{
|
||||||
|
title: t("owners.fields.ownr_ln"),
|
||||||
|
dataIndex: "ownr_ln",
|
||||||
|
key: "ownr_ln"
|
||||||
|
//width: "8%",
|
||||||
|
// onFilter: (value, record) => record.ro_number.includes(value),
|
||||||
|
// // filteredValue: state.filteredInfo.text || null,
|
||||||
|
// sorter: (a, b) => alphaSort(a, b),
|
||||||
|
// sortOrder:
|
||||||
|
// state.sortedInfo.columnKey === "cieca_id" && state.sortedInfo.order
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("owners.fields.ownr_fn"),
|
||||||
|
dataIndex: "ownr_fn",
|
||||||
|
key: "ownr_fn"
|
||||||
|
// ellipsis: true,
|
||||||
|
// sorter: (a, b) => alphaSort(a.ownr_ln, b.ownr_ln),
|
||||||
|
// //width: "25%",
|
||||||
|
// sortOrder:
|
||||||
|
// state.sortedInfo.columnKey === "ownr_name" && state.sortedInfo.order
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("owners.fields.ownr_addr1"),
|
||||||
|
dataIndex: "ownr_addr1",
|
||||||
|
key: "ownr_addr1"
|
||||||
|
// sorter: (a, b) => alphaSort(a.vehicle_info, b.vehicle_info),
|
||||||
|
// sortOrder:
|
||||||
|
// state.sortedInfo.columnKey === "vehicle_info" && state.sortedInfo.order
|
||||||
|
//ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("owners.fields.ownr_city"),
|
||||||
|
dataIndex: "ownr_city",
|
||||||
|
key: "ownr_city"
|
||||||
|
// sorter: (a, b) => alphaSort(a.clm_no, b.clm_no),
|
||||||
|
// sortOrder:
|
||||||
|
// state.sortedInfo.columnKey === "clm_no" && state.sortedInfo.order
|
||||||
|
//width: "12%",
|
||||||
|
//ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("owners.fields.ownr_ea"),
|
||||||
|
dataIndex: "ownr_ea",
|
||||||
|
key: "ownr_ea"
|
||||||
|
// sorter: (a, b) => a.clm_amt - b.clm_amt,
|
||||||
|
// sortOrder:
|
||||||
|
// state.sortedInfo.columnKey === "clm_amt" && state.sortedInfo.order
|
||||||
|
//width: "12%",
|
||||||
|
//ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("owners.fields.ownr_ph1"),
|
||||||
|
dataIndex: "ownr_ph1",
|
||||||
|
key: "ownr_ph1",
|
||||||
|
render: (text, record) => (
|
||||||
|
<PhoneFormatter>{record.ownr_ph1}</PhoneFormatter>
|
||||||
|
)
|
||||||
|
// sorter: (a, b) => alphaSort(a.uploaded_by, b.uploaded_by),
|
||||||
|
// sortOrder:
|
||||||
|
// state.sortedInfo.columnKey === "uploaded_by" && state.sortedInfo.order
|
||||||
|
//width: "12%",
|
||||||
|
//ellipsis: true
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
const handleOnRowClick = record => {
|
||||||
|
if (record) {
|
||||||
|
if (record.id) {
|
||||||
|
setSelectedOwner(record.id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setSelectedOwner(null);
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Table
|
||||||
|
title={() => t("owners.labels.existing_owners")}
|
||||||
|
size="small"
|
||||||
|
pagination={{ position: "bottom" }}
|
||||||
|
columns={columns.map(item => ({ ...item }))}
|
||||||
|
rowKey="id"
|
||||||
|
loading={ownersListLoading}
|
||||||
|
dataSource={ownersList}
|
||||||
|
//onChange={handleTableChange}
|
||||||
|
rowSelection={{ selectedRowKeys: [selectedOwner] }}
|
||||||
|
onRow={(record, rowIndex) => {
|
||||||
|
return {
|
||||||
|
onClick: event => {
|
||||||
|
handleOnRowClick(record);
|
||||||
|
}, // click row
|
||||||
|
onDoubleClick: event => {}, // double click row
|
||||||
|
onContextMenu: event => {}, // right button click row
|
||||||
|
onMouseEnter: event => {}, // mouse enter row
|
||||||
|
onMouseLeave: event => {} // mouse leave row
|
||||||
|
};
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Divider />
|
||||||
|
<Checkbox
|
||||||
|
checked={selectedOwner ? false : true}
|
||||||
|
onClick={() => setSelectedOwner(null)}
|
||||||
|
>
|
||||||
|
Create a new Owner record for this job.
|
||||||
|
</Checkbox>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,53 @@
|
|||||||
import React from "react";
|
|
||||||
import { Modal } from "antd";
|
import { Modal } from "antd";
|
||||||
import OwnerFindModalComponent from "./owner-find-modal.component";
|
import React from "react";
|
||||||
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
|
||||||
import AlertComponent from "../alert/alert.component";
|
import AlertComponent from "../alert/alert.component";
|
||||||
import { json } from "body-parser";
|
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
||||||
|
import OwnerFindModalComponent from "./owner-find-modal.component";
|
||||||
|
import { useQuery } from "react-apollo";
|
||||||
|
import { QUERY_SEARCH_OWNER_BY_IDX } from "../../graphql/owners.queries";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
export default function OwnerFindModalContainer({
|
export default function OwnerFindModalContainer({
|
||||||
loading,
|
loading,
|
||||||
error,
|
error,
|
||||||
owner,
|
owner,
|
||||||
|
selectedOwner,
|
||||||
|
setSelectedOwner,
|
||||||
...modalProps
|
...modalProps
|
||||||
}) {
|
}) {
|
||||||
//use owner object to run query and find what possible owners there are.
|
//use owner object to run query and find what possible owners there are.
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
const ownersList = useQuery(QUERY_SEARCH_OWNER_BY_IDX, {
|
||||||
|
variables: {
|
||||||
|
search: owner
|
||||||
|
? `${owner.ownr_fn} ${owner.ownr_ln} ${owner.ownr_addr1} ${owner.ownr_city} ${owner.ownr_zip} ${owner.ownr_ea} ${owner.ownr_ph1} ${owner.ownr_ph2}`
|
||||||
|
: null
|
||||||
|
},
|
||||||
|
skip: !owner,
|
||||||
|
fetchPolicy: "network-only"
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal {...modalProps}>
|
<Modal
|
||||||
|
title={t("owners.labels.existing_owners")}
|
||||||
|
width={"80%"}
|
||||||
|
{...modalProps}
|
||||||
|
>
|
||||||
{loading ? <LoadingSpinner /> : null}
|
{loading ? <LoadingSpinner /> : null}
|
||||||
{error ? <AlertComponent message={error.message} type="error" /> : null}
|
{error ? <AlertComponent message={error.message} type="error" /> : null}
|
||||||
{owner ? <OwnerFindModalComponent /> : null}
|
{owner ? (
|
||||||
{owner ? JSON.stringify(owner) : null}
|
<OwnerFindModalComponent
|
||||||
|
selectedOwner={selectedOwner}
|
||||||
|
setSelectedOwner={setSelectedOwner}
|
||||||
|
ownersListLoading={ownersList.loading}
|
||||||
|
ownersList={
|
||||||
|
ownersList.data && ownersList.data.search_owners
|
||||||
|
? ownersList.data.search_owners
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
</Modal>
|
</Modal>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
20
client/src/graphql/owners.queries.js
Normal file
20
client/src/graphql/owners.queries.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import { gql } from "apollo-boost";
|
||||||
|
|
||||||
|
export const QUERY_SEARCH_OWNER_BY_IDX = gql`
|
||||||
|
query QUERY_SEARCH_OWNER_BY_IDX($search: String!) {
|
||||||
|
search_owners(args: { search: $search }) {
|
||||||
|
ownr_fn
|
||||||
|
ownr_ln
|
||||||
|
ownr_ph1
|
||||||
|
ownr_ph2
|
||||||
|
ownr_addr1
|
||||||
|
ownr_addr2
|
||||||
|
ownr_city
|
||||||
|
ownr_ctry
|
||||||
|
ownr_ea
|
||||||
|
ownr_st
|
||||||
|
ownr_zip
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
@@ -205,6 +205,19 @@
|
|||||||
"updated": "Note updated successfully."
|
"updated": "Note updated successfully."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"owners": {
|
||||||
|
"fields": {
|
||||||
|
"ownr_addr1": "Address",
|
||||||
|
"ownr_city": "City",
|
||||||
|
"ownr_ea": "Email",
|
||||||
|
"ownr_fn": "First Name",
|
||||||
|
"ownr_ln": "Last Name",
|
||||||
|
"ownr_ph1": "Phone 1"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"existing_owners": "Existing Owners"
|
||||||
|
}
|
||||||
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"errors": {
|
"errors": {
|
||||||
"state": "Error reading page state. Please refresh."
|
"state": "Error reading page state. Please refresh."
|
||||||
|
|||||||
@@ -205,6 +205,19 @@
|
|||||||
"updated": "Nota actualizada con éxito."
|
"updated": "Nota actualizada con éxito."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"owners": {
|
||||||
|
"fields": {
|
||||||
|
"ownr_addr1": "Dirección",
|
||||||
|
"ownr_city": "ciudad",
|
||||||
|
"ownr_ea": "Email",
|
||||||
|
"ownr_fn": "Nombre de pila",
|
||||||
|
"ownr_ln": "Apellido",
|
||||||
|
"ownr_ph1": ""
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"existing_owners": "Propietarios existentes"
|
||||||
|
}
|
||||||
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"errors": {
|
"errors": {
|
||||||
"state": "Error al leer el estado de la página. Porfavor refresca."
|
"state": "Error al leer el estado de la página. Porfavor refresca."
|
||||||
|
|||||||
@@ -205,6 +205,19 @@
|
|||||||
"updated": "Remarque mise à jour avec succès."
|
"updated": "Remarque mise à jour avec succès."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"owners": {
|
||||||
|
"fields": {
|
||||||
|
"ownr_addr1": "Adresse",
|
||||||
|
"ownr_city": "Ville",
|
||||||
|
"ownr_ea": "Email",
|
||||||
|
"ownr_fn": "Prénom",
|
||||||
|
"ownr_ln": "Nom de famille",
|
||||||
|
"ownr_ph1": ""
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"existing_owners": "Propriétaires existants"
|
||||||
|
}
|
||||||
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"errors": {
|
"errors": {
|
||||||
"state": "Erreur lors de la lecture de l'état de la page. Rafraichissez, s'il vous plait."
|
"state": "Erreur lors de la lecture de l'état de la page. Rafraichissez, s'il vous plait."
|
||||||
|
|||||||
1
hasura/migrations/1580321100336_owner_gin_idx/down.yaml
Normal file
1
hasura/migrations/1580321100336_owner_gin_idx/down.yaml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
6
hasura/migrations/1580321100336_owner_gin_idx/up.yaml
Normal file
6
hasura/migrations/1580321100336_owner_gin_idx/up.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
- args:
|
||||||
|
cascade: true
|
||||||
|
sql: "\r\nCREATE INDEX owner_gin_idx ON owners\r\nUSING GIN ((ownr_fn || ' '
|
||||||
|
|| ownr_ln || ' ' || ownr_addr1 || ' ' || ownr_city || ' ' || ownr_zip ||
|
||||||
|
' ' || ownr_ea || ' ' || ownr_ph1 || ' ' || ownr_ph2 ) gin_trgm_ops);\r\n"
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
- args:
|
||||||
|
cascade: true
|
||||||
|
sql: "CREATE FUNCTION search_owners(search text)\r\nRETURNS SETOF owners AS $$\r\n
|
||||||
|
\ SELECT *\r\n FROM owners\r\n WHERE\r\n search <% (ownr_fn ||
|
||||||
|
' ' || ownr_ln || ' ' || ownr_addr1 || ' ' || ownr_city || ' ' || ownr_zip
|
||||||
|
\ || ' ' || ownr_ea || ' ' || ownr_ph1 || ' ' || ownr_ph2)\r\n ORDER BY\r\n
|
||||||
|
\ similarity(search, (ownr_fn || ' ' || ownr_ln || ' ' || ownr_addr1 ||
|
||||||
|
' ' || ownr_city || ' ' || ownr_zip || ' ' || ownr_ea || ' ' || ownr_ph1 ||
|
||||||
|
' ' || ownr_ph2)) DESC\r\n LIMIT 20;\r\n$$ LANGUAGE sql STABLE;"
|
||||||
|
type: run_sql
|
||||||
|
- args:
|
||||||
|
name: search_owners
|
||||||
|
schema: public
|
||||||
|
type: track_function
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
- args:
|
||||||
|
sql: ALTER TABLE "public"."owners" DROP COLUMN "ownr_co_nm";
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
- args:
|
||||||
|
sql: ALTER TABLE "public"."owners" ADD COLUMN "ownr_co_nm" text NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: owners
|
||||||
|
schema: public
|
||||||
|
type: drop_insert_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
check:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
columns:
|
||||||
|
- id
|
||||||
|
- created_at
|
||||||
|
- updated_at
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
|
- ownr_addr1
|
||||||
|
- ownr_addr2
|
||||||
|
- ownr_city
|
||||||
|
- ownr_st
|
||||||
|
- ownr_zip
|
||||||
|
- ownr_ctry
|
||||||
|
- ownr_ea
|
||||||
|
- ownr_ph1
|
||||||
|
- preferred_contact
|
||||||
|
- allow_text_message
|
||||||
|
- shopid
|
||||||
|
- ownr_ph2
|
||||||
|
localPresets:
|
||||||
|
- key: ""
|
||||||
|
value: ""
|
||||||
|
set: {}
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: owners
|
||||||
|
schema: public
|
||||||
|
type: create_insert_permission
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: owners
|
||||||
|
schema: public
|
||||||
|
type: drop_insert_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
check:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
columns:
|
||||||
|
- id
|
||||||
|
- created_at
|
||||||
|
- updated_at
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
|
- ownr_addr1
|
||||||
|
- ownr_addr2
|
||||||
|
- ownr_city
|
||||||
|
- ownr_st
|
||||||
|
- ownr_zip
|
||||||
|
- ownr_ctry
|
||||||
|
- ownr_ea
|
||||||
|
- ownr_ph1
|
||||||
|
- preferred_contact
|
||||||
|
- allow_text_message
|
||||||
|
- shopid
|
||||||
|
- ownr_ph2
|
||||||
|
- ownr_co_nm
|
||||||
|
localPresets:
|
||||||
|
- key: ""
|
||||||
|
value: ""
|
||||||
|
set: {}
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: owners
|
||||||
|
schema: public
|
||||||
|
type: create_insert_permission
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: owners
|
||||||
|
schema: public
|
||||||
|
type: drop_select_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
allow_aggregations: false
|
||||||
|
columns:
|
||||||
|
- allow_text_message
|
||||||
|
- ownr_addr1
|
||||||
|
- ownr_addr2
|
||||||
|
- ownr_city
|
||||||
|
- ownr_ctry
|
||||||
|
- ownr_ea
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
|
- ownr_ph1
|
||||||
|
- ownr_ph2
|
||||||
|
- ownr_st
|
||||||
|
- ownr_zip
|
||||||
|
- preferred_contact
|
||||||
|
- created_at
|
||||||
|
- updated_at
|
||||||
|
- id
|
||||||
|
- shopid
|
||||||
|
computed_fields: []
|
||||||
|
filter:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: owners
|
||||||
|
schema: public
|
||||||
|
type: create_select_permission
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: owners
|
||||||
|
schema: public
|
||||||
|
type: drop_select_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
allow_aggregations: false
|
||||||
|
columns:
|
||||||
|
- allow_text_message
|
||||||
|
- ownr_addr1
|
||||||
|
- ownr_addr2
|
||||||
|
- ownr_city
|
||||||
|
- ownr_co_nm
|
||||||
|
- ownr_ctry
|
||||||
|
- ownr_ea
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
|
- ownr_ph1
|
||||||
|
- ownr_ph2
|
||||||
|
- ownr_st
|
||||||
|
- ownr_zip
|
||||||
|
- preferred_contact
|
||||||
|
- created_at
|
||||||
|
- updated_at
|
||||||
|
- id
|
||||||
|
- shopid
|
||||||
|
computed_fields: []
|
||||||
|
filter:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: owners
|
||||||
|
schema: public
|
||||||
|
type: create_select_permission
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: owners
|
||||||
|
schema: public
|
||||||
|
type: drop_update_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
columns:
|
||||||
|
- allow_text_message
|
||||||
|
- ownr_addr1
|
||||||
|
- ownr_addr2
|
||||||
|
- ownr_city
|
||||||
|
- ownr_ctry
|
||||||
|
- ownr_ea
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
|
- ownr_ph1
|
||||||
|
- ownr_ph2
|
||||||
|
- ownr_st
|
||||||
|
- ownr_zip
|
||||||
|
- preferred_contact
|
||||||
|
- created_at
|
||||||
|
- updated_at
|
||||||
|
- id
|
||||||
|
- shopid
|
||||||
|
filter:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
localPresets:
|
||||||
|
- key: ""
|
||||||
|
value: ""
|
||||||
|
set: {}
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: owners
|
||||||
|
schema: public
|
||||||
|
type: create_update_permission
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: owners
|
||||||
|
schema: public
|
||||||
|
type: drop_update_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
columns:
|
||||||
|
- allow_text_message
|
||||||
|
- ownr_addr1
|
||||||
|
- ownr_addr2
|
||||||
|
- ownr_city
|
||||||
|
- ownr_co_nm
|
||||||
|
- ownr_ctry
|
||||||
|
- ownr_ea
|
||||||
|
- ownr_fn
|
||||||
|
- ownr_ln
|
||||||
|
- ownr_ph1
|
||||||
|
- ownr_ph2
|
||||||
|
- ownr_st
|
||||||
|
- ownr_zip
|
||||||
|
- preferred_contact
|
||||||
|
- created_at
|
||||||
|
- updated_at
|
||||||
|
- id
|
||||||
|
- shopid
|
||||||
|
filter:
|
||||||
|
bodyshop:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
localPresets:
|
||||||
|
- key: ""
|
||||||
|
value: ""
|
||||||
|
set: {}
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: owners
|
||||||
|
schema: public
|
||||||
|
type: create_update_permission
|
||||||
Reference in New Issue
Block a user