IO-1140 Added release notes integration.
This commit is contained in:
@@ -12448,6 +12448,27 @@
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>viewreleasenotes</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>
|
||||
@@ -31034,7 +31055,7 @@
|
||||
<name>templates</name>
|
||||
<children>
|
||||
<concept_node>
|
||||
<name>attendance</name>
|
||||
<name>attendance_detail</name>
|
||||
<definition_loaded>false</definition_loaded>
|
||||
<description></description>
|
||||
<comment></comment>
|
||||
|
||||
@@ -9,12 +9,50 @@
|
||||
<!-- <link rel="apple-touch-icon" href="logo192.png" /> -->
|
||||
<link rel="apple-touch-icon" href="logo192.png" />
|
||||
|
||||
<!-- <script
|
||||
data-jsd-embedded
|
||||
data-key="51adb36e-ee16-46b1-a4c6-4b6d5fcd8530"
|
||||
data-base-url="https://jsd-widget.atlassian.com"
|
||||
src="https://jsd-widget.atlassian.com/assets/embed.js"
|
||||
></script> -->
|
||||
<script>
|
||||
!(function () {
|
||||
"use strict";
|
||||
var e = [
|
||||
"debug",
|
||||
"destroy",
|
||||
"do",
|
||||
"help",
|
||||
"identify",
|
||||
"is",
|
||||
"off",
|
||||
"on",
|
||||
"ready",
|
||||
"render",
|
||||
"reset",
|
||||
"safe",
|
||||
"set",
|
||||
];
|
||||
if (window.noticeable)
|
||||
console.warn("Noticeable SDK code snippet loaded more than once");
|
||||
else {
|
||||
var n = (window.noticeable = window.noticeable || []);
|
||||
function t(e) {
|
||||
return function () {
|
||||
var t = Array.prototype.slice.call(arguments);
|
||||
return t.unshift(e), n.push(t), n;
|
||||
};
|
||||
}
|
||||
!(function () {
|
||||
for (var o = 0; o < e.length; o++) {
|
||||
var r = e[o];
|
||||
n[r] = t(r);
|
||||
}
|
||||
})(),
|
||||
(function () {
|
||||
var e = document.createElement("script");
|
||||
(e.async = !0), (e.src = "https://sdk.noticeable.io/l.js");
|
||||
var n = document.head;
|
||||
n.insertBefore(e, n.firstChild);
|
||||
})();
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
|
||||
<!--
|
||||
manifest.json provides metadata used when your web app is installed on a
|
||||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
||||
|
||||
@@ -20,14 +20,20 @@ export default function AppContainer() {
|
||||
// Include the Crisp code here, without the <script></script> tags
|
||||
window.$crisp = [];
|
||||
window.CRISP_WEBSITE_ID = "36724f62-2eb0-4b29-9cdd-9905fb99913e";
|
||||
|
||||
var d = document;
|
||||
var s = d.createElement("script");
|
||||
|
||||
s.src = "https://client.crisp.chat/l.js";
|
||||
s.async = 1;
|
||||
d.getElementsByTagName("head")[0].appendChild(s);
|
||||
|
||||
//Release Notes
|
||||
|
||||
// var rs = d.createElement("script");
|
||||
// rs.src = "https://sdk.noticeable.io/s.js";
|
||||
// //rs.async = 1;
|
||||
// d.getElementsByTagName("head")[0].appendChild(rs);
|
||||
// // window.noticeable.render("widget", "IABVNO4scRKY11XBQkNr");
|
||||
|
||||
return () => {
|
||||
d.getElementsByTagName("head")[0].removeChild(s);
|
||||
};
|
||||
|
||||
@@ -14,13 +14,13 @@ import Icon, {
|
||||
LineChartOutlined,
|
||||
PaperClipOutlined,
|
||||
PhoneOutlined,
|
||||
QuestionCircleFilled,
|
||||
ScheduleOutlined,
|
||||
SettingOutlined,
|
||||
TeamOutlined,
|
||||
ToolFilled,
|
||||
UnorderedListOutlined,
|
||||
UserOutlined,
|
||||
QuestionCircleFilled,
|
||||
} from "@ant-design/icons";
|
||||
import { Layout, Menu } from "antd";
|
||||
import React from "react";
|
||||
@@ -256,6 +256,13 @@ function Header({
|
||||
{t("menus.header.temporarydocs")}
|
||||
</Link>
|
||||
</Menu.Item>
|
||||
<Menu.Item
|
||||
key="help"
|
||||
onClick={() => {
|
||||
window.open("https://help.imex.online/", "_blank");
|
||||
}}
|
||||
icon={<Icon component={QuestionCircleFilled} />}
|
||||
/>
|
||||
<Menu.SubMenu title={t("menus.header.shop")} icon={<SettingOutlined />}>
|
||||
<Menu.Item key="shop" icon={<Icon component={GiSettingsKnobs} />}>
|
||||
<Link to="/manage/shop">{t("menus.header.shop_config")}</Link>
|
||||
@@ -285,15 +292,6 @@ function Header({
|
||||
<Link to="/manage/shop/csi">{t("menus.header.shop_csi")}</Link>
|
||||
</Menu.Item>
|
||||
</Menu.SubMenu>
|
||||
<Menu.Item
|
||||
key="shop"
|
||||
onClick={() => {
|
||||
window.open("https://help.imex.online/", "_blank");
|
||||
}}
|
||||
icon={<Icon component={QuestionCircleFilled} />}
|
||||
>
|
||||
{t("menus.header.help")}
|
||||
</Menu.Item>
|
||||
<Menu.SubMenu
|
||||
style={{ float: "right" }}
|
||||
title={
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { AlertOutlined } from "@ant-design/icons";
|
||||
import * as Sentry from "@sentry/react";
|
||||
import { Button, notification } from "antd";
|
||||
import { Button, notification, Space } from "antd";
|
||||
//import "antd/dist/antd.css";
|
||||
import "antd/dist/antd.less";
|
||||
import Dinero from "dinero.js";
|
||||
@@ -26,8 +26,7 @@ Dinero.globalRoundingMode = "HALF_EVEN";
|
||||
|
||||
if (process.env.NODE_ENV !== "development") {
|
||||
Sentry.init({
|
||||
dsn:
|
||||
"https://fd7e89369b6b4bdc9c6c4c9f22fa4ee4@o492140.ingest.sentry.io/5651027",
|
||||
dsn: "https://fd7e89369b6b4bdc9c6c4c9f22fa4ee4@o492140.ingest.sentry.io/5651027",
|
||||
integrations: [
|
||||
// new Integrations.BrowserTracing(),
|
||||
// new Sentry.Integrations.Breadcrumbs({ console: true }),
|
||||
@@ -57,21 +56,30 @@ const onServiceWorkerUpdate = (registration) => {
|
||||
console.log("onServiceWorkerUpdate", registration);
|
||||
|
||||
const btn = (
|
||||
<Button
|
||||
type="primary"
|
||||
onClick={async () => {
|
||||
if (registration && registration.waiting) {
|
||||
await registration.unregister();
|
||||
// Makes Workbox call skipWaiting()
|
||||
registration.waiting.postMessage({ type: "SKIP_WAITING" });
|
||||
// Once the service worker is unregistered, we can reload the page to let
|
||||
// the browser download a fresh copy of our app (invalidating the cache)
|
||||
window.location.reload();
|
||||
}
|
||||
}}
|
||||
>
|
||||
{i18n.t("general.actions.refresh")}
|
||||
</Button>
|
||||
<Space flex>
|
||||
<Button
|
||||
onClick={async () => {
|
||||
window.open("https://imex-online.noticeable.news/", "_blank");
|
||||
}}
|
||||
>
|
||||
{i18n.t("general.actions.viewreleasenotes")}
|
||||
</Button>
|
||||
<Button
|
||||
type="primary"
|
||||
onClick={async () => {
|
||||
if (registration && registration.waiting) {
|
||||
await registration.unregister();
|
||||
// Makes Workbox call skipWaiting()
|
||||
registration.waiting.postMessage({ type: "SKIP_WAITING" });
|
||||
// Once the service worker is unregistered, we can reload the page to let
|
||||
// the browser download a fresh copy of our app (invalidating the cache)
|
||||
window.location.reload();
|
||||
}
|
||||
}}
|
||||
>
|
||||
{i18n.t("general.actions.refresh")}
|
||||
</Button>
|
||||
</Space>
|
||||
);
|
||||
notification.open({
|
||||
icon: <AlertOutlined />,
|
||||
|
||||
@@ -181,7 +181,10 @@ const mapStateToProps = createStructuredSelector({
|
||||
|
||||
export function Manage({ match, conflict, bodyshop }) {
|
||||
const { t } = useTranslation();
|
||||
|
||||
useEffect(() => {
|
||||
const widgetId = "IABVNO4scRKY11XBQkNr";
|
||||
window.noticeable.render("widget", widgetId);
|
||||
}, []);
|
||||
useEffect(() => {
|
||||
document.title = t("titles.app");
|
||||
}, [t]);
|
||||
@@ -383,11 +386,22 @@ export function Manage({ match, conflict, bodyshop }) {
|
||||
<ChatAffixContainer />
|
||||
<BackTop />
|
||||
<Footer>
|
||||
<div style={{ textAlign: "center", margin: "1rem 0rem" }}>
|
||||
<div>
|
||||
{`ImEX Online ${
|
||||
process.env.REACT_APP_GIT_SHA
|
||||
} - ${preval`module.exports = new Date().toLocaleString("en-US", {timeZone: "America/Los_Angeles"});`}`}
|
||||
<div
|
||||
style={{
|
||||
display: "flex",
|
||||
flexDirection: "column",
|
||||
justifyContent: "center",
|
||||
alignItems: "center",
|
||||
margin: "1rem 0rem",
|
||||
}}
|
||||
>
|
||||
<div style={{ display: "flex" }}>
|
||||
<div>
|
||||
{`ImEX Online ${
|
||||
process.env.REACT_APP_GIT_SHA
|
||||
} - ${preval`module.exports = new Date().toLocaleString("en-US", {timeZone: "America/Los_Angeles"});`}`}
|
||||
</div>
|
||||
<div id="noticeable-widget" style={{ marginLeft: "1rem" }} />
|
||||
</div>
|
||||
<Link to="/about" target="_blank" style={{ color: "#ccc" }}>
|
||||
Disclaimer
|
||||
|
||||
@@ -797,7 +797,8 @@
|
||||
"selectall": "Select All",
|
||||
"submit": "Submit",
|
||||
"submitticket": "Submit a Support Ticket",
|
||||
"view": "View"
|
||||
"view": "View",
|
||||
"viewreleasenotes": "See What's Changed"
|
||||
},
|
||||
"errors": {
|
||||
"notfound": "No record was found."
|
||||
@@ -1868,7 +1869,7 @@
|
||||
"vendor": "Vendor"
|
||||
},
|
||||
"templates": {
|
||||
"attendance": "Attendance (All Employees)",
|
||||
"attendance_detail": "Attendance (All Employees)",
|
||||
"attendance_employee": "Employee Attendance",
|
||||
"attendance_summary": "Attendance Summary (All Employees)",
|
||||
"credits_not_received_date": "Credits not Received by Date",
|
||||
@@ -1902,7 +1903,7 @@
|
||||
"open_orders_ins_co": "Open Orders by Insurance Company",
|
||||
"parts_backorder": "Backordered Parts",
|
||||
"payments_by_date": "Payments by Date",
|
||||
"payments_by_date_type": "Payments by Date Range",
|
||||
"payments_by_date_type": "Payments by Date and Type",
|
||||
"purchases_by_cost_center_detail": "Purchases by Cost Center (Detail)",
|
||||
"purchases_by_cost_center_summary": "Purchases by Cost Center (Summary)",
|
||||
"purchases_by_date_range_detail": "Purchases by Date - Detail",
|
||||
|
||||
@@ -797,7 +797,8 @@
|
||||
"selectall": "",
|
||||
"submit": "",
|
||||
"submitticket": "",
|
||||
"view": ""
|
||||
"view": "",
|
||||
"viewreleasenotes": ""
|
||||
},
|
||||
"errors": {
|
||||
"notfound": ""
|
||||
@@ -1868,7 +1869,7 @@
|
||||
"vendor": ""
|
||||
},
|
||||
"templates": {
|
||||
"attendance": "",
|
||||
"attendance_detail": "",
|
||||
"attendance_employee": "",
|
||||
"attendance_summary": "",
|
||||
"credits_not_received_date": "",
|
||||
|
||||
@@ -797,7 +797,8 @@
|
||||
"selectall": "",
|
||||
"submit": "",
|
||||
"submitticket": "",
|
||||
"view": ""
|
||||
"view": "",
|
||||
"viewreleasenotes": ""
|
||||
},
|
||||
"errors": {
|
||||
"notfound": ""
|
||||
@@ -1868,7 +1869,7 @@
|
||||
"vendor": ""
|
||||
},
|
||||
"templates": {
|
||||
"attendance": "",
|
||||
"attendance_detail": "",
|
||||
"attendance_employee": "",
|
||||
"attendance_summary": "",
|
||||
"credits_not_received_date": "",
|
||||
|
||||
@@ -555,10 +555,10 @@ export const TemplateList = (type, context) => {
|
||||
idtype: "employee",
|
||||
disabled: false,
|
||||
},
|
||||
attendance: {
|
||||
title: i18n.t("reportcenter.templates.attendance"),
|
||||
subject: i18n.t("reportcenter.templates.attendance"),
|
||||
key: "attendance",
|
||||
attendance_detail: {
|
||||
title: i18n.t("reportcenter.templates.attendance_detail"),
|
||||
subject: i18n.t("reportcenter.templates.attendance_detail"),
|
||||
key: "attendance_detail",
|
||||
|
||||
disabled: false,
|
||||
rangeFilter: {
|
||||
|
||||
Reference in New Issue
Block a user