Commit 048ae270 authored by ReemyHasan's avatar ReemyHasan

Add setting page

parent ad0cca50
...@@ -40,6 +40,16 @@ export default function App({ Component, pageProps }: AppProps) { ...@@ -40,6 +40,16 @@ export default function App({ Component, pageProps }: AppProps) {
if (loader) loader.remove(); if (loader) loader.remove();
} }
}, []); }, []);
useEffect(() => {
if (!websocket) {
return;
}
return () => {
if (websocket) {
websocket.close();
}
};
}, []);
return ( return (
<Fragment> <Fragment>
......
...@@ -4,6 +4,7 @@ import AppLayout from "@/src/components/layout"; ...@@ -4,6 +4,7 @@ import AppLayout from "@/src/components/layout";
import { Fragment } from "react"; import { Fragment } from "react";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { TranslationFiles } from "@/src/data/core"; import { TranslationFiles } from "@/src/data/core";
import Setting from "@/src/features/setting";
export default function Setup() { export default function Setup() {
const { t } = useTranslation(TranslationFiles.COMMON); const { t } = useTranslation(TranslationFiles.COMMON);
return ( return (
...@@ -12,7 +13,11 @@ export default function Setup() { ...@@ -12,7 +13,11 @@ export default function Setup() {
<title>{t("setup")}</title> <title>{t("setup")}</title>
</Head> </Head>
<AppLayout> <AppLayout>
<main className={`app-main-container`}>{t("setup")}</main> <main className={`app-main-container`}>
<div className=" w-full px-4 max-w-full flex-grow flex-1">
<Setting />
</div>
</main>
</AppLayout> </AppLayout>
</Fragment> </Fragment>
); );
......
import * as React from "react";
import Head from "next/head";
import AppLayout from "@/src/components/layout";
import { Fragment } from "react";
import useTranslation from "next-translate/useTranslation";
import { TranslationFiles } from "@/src/data/core";
import SettingAboutContent from "../../../src/features/setting/setting-about-content";
export default function Setup() {
const { t } = useTranslation(TranslationFiles.COMMON);
return (
<Fragment>
<Head>
<title>{t("setup")}</title>
</Head>
<AppLayout>
<main className={`app-main-container`}>
<SettingAboutContent />
</main>
</AppLayout>
</Fragment>
);
}
import * as React from "react";
import Head from "next/head";
import AppLayout from "@/src/components/layout";
import { Fragment } from "react";
import useTranslation from "next-translate/useTranslation";
import { TranslationFiles } from "@/src/data/core";
import SettingProfileContent from "../../../src/features/setting/setting-profile";
export default function Setup() {
const { t } = useTranslation(TranslationFiles.COMMON);
return (
<Fragment>
<Head>
<title>{t("setup")}</title>
</Head>
<AppLayout>
<main className={`app-main-container`}>
<SettingProfileContent />
</main>
</AppLayout>
</Fragment>
);
}
export const AUTH_TOKEN: string = "app-auth-token"; export const AUTH_TOKEN: string = "app-auth-token";
export const Default_Language: string = "app-language"; export const Default_Language: string = "app-language";
export const TrapURL: string = "http://localhost:6647/api/rethink/data";
export const SettingURL: string = "http://localhost:6647/api/about";
...@@ -2,7 +2,7 @@ import { GithubOutlined, MailOutlined } from "@ant-design/icons"; ...@@ -2,7 +2,7 @@ import { GithubOutlined, MailOutlined } from "@ant-design/icons";
import React, { useState } from "react"; import React, { useState } from "react";
export default function Footer() { export default function Footer() {
const [showEmail, setShowEmail] = useState(false); const [showEmail, setShowEmail] = useState(false);
const email = "example@example.com"; const email = <span>{"example@example.com "}</span>;
const handleButtonClick = () => { const handleButtonClick = () => {
setShowEmail(!showEmail); setShowEmail(!showEmail);
...@@ -32,12 +32,12 @@ export default function Footer() { ...@@ -32,12 +32,12 @@ export default function Footer() {
<div className="container mx-auto px-4"> <div className="container mx-auto px-4">
<div className="flex flex-wrap text-center lg:text-left"> <div className="flex flex-wrap text-center lg:text-left">
<div className="w-full lg:w-6/12 px-4"> <div className="w-full lg:w-6/12 px-4">
<h4 className="text-3xl font-semibold">Let's keep in touch!</h4> {/* <h4 className="text-3xl font-semibold">Let's keep in touch!</h4>
<h5 className="text-lg mt-0 mb-2 text-blueGray-600"> <h5 className="text-lg mt-0 mb-2 text-blueGray-600">
Find us on any of these platform. Find us on any of these platform.
</h5> </h5> */}
<div className="mt-6 lg:mb-0 mb-6"> <div className="mt-6 lg:mb-0 mb-6">
<button {/* <button
className="bg-white text-lightBlue-400 shadow-lg font-normal h-10 w-10 items-center justify-center align-center rounded-full outline-none focus:outline-none mr-2" className="bg-white text-lightBlue-400 shadow-lg font-normal h-10 w-10 items-center justify-center align-center rounded-full outline-none focus:outline-none mr-2"
type="button" type="button"
onClick={handleButtonClick} onClick={handleButtonClick}
...@@ -59,13 +59,13 @@ export default function Footer() { ...@@ -59,13 +59,13 @@ export default function Footer() {
style={{ fontSize: "19px", color: "#000f24" }} style={{ fontSize: "19px", color: "#000f24" }}
className={"ExclamationCircleOutlined "} className={"ExclamationCircleOutlined "}
/> />
</button> </button> */}
</div> </div>
</div> </div>
<div className="w-full lg:w-6/12 px-4"> <div className="w-full lg:w-6/12 px-4">
<div className="flex flex-wrap items-top mb-6"> <div className="flex flex-wrap items-top mb-6">
<div className="w-full lg:w-4/12 px-4 ml-auto"> <div className="w-full lg:w-4/12 px-4 ml-auto">
<span className="block uppercase text-blueGray-500 text-sm font-semibold mb-2"> {/* <span className="block uppercase text-blueGray-500 text-sm font-semibold mb-2">
Useful Links Useful Links
</span> </span>
<ul className="list-unstyled"> <ul className="list-unstyled">
...@@ -77,7 +77,7 @@ export default function Footer() { ...@@ -77,7 +77,7 @@ export default function Footer() {
Contact Us Contact Us
</a> </a>
</li> </li>
</ul> </ul> */}
</div> </div>
</div> </div>
</div> </div>
......
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { TranslationFiles } from "@/src/data/core"; import { TranslationFiles } from "@/src/data/core";
import { useRouter } from "next/router";
import React, { useState, useEffect } from "react";
import React from "react"; import Footer from "./footer";
import { Alert } from "antd";
// components import {
fetchAboutSettingData,
import Footer from "./footer"; sendEmailMessage,
} from "@/src/services/setting-service";
export default function AboutContent() {
export default function AboutContent() {
const { t } = useTranslation(TranslationFiles.COMMON); const { t } = useTranslation(TranslationFiles.COMMON);
return ( const router = useRouter();
<> const [formData, setFormData] = useState({
<main> subject: "", //fullName
<div className="relative pt-16 pb-32 flex content-center items-center justify-center min-h-screen-75"> email: "",
<div body: "",
className="absolute top-0 w-full h-full bg-center bg-cover" });
style={{ const [sendingStatus, setSendingStatus] = useState("");
backgroundImage: const [data, setData] = useState([]);
"url('https://images.unsplash.com/photo-1557804506-669a67965ba0?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1267&q=80')", useEffect(() => {
}} getAboutInfo();
> }, []);
<span
id="blackOverlay" async function getAboutInfo() {
className="w-full h-full absolute opacity-75 bg-black" const response = await fetchAboutSettingData();
></span> setData(response);
</div> console.log(data);
<div className="container relative mx-auto"> }
<div className="items-center flex flex-wrap"> async function sendMessage() {
<div className="w-full lg:w-6/12 px-4 ml-auto mr-auto text-center"> const response = await sendEmailMessage(formData);
<div className="pr-12"> console.log(response);
<h1 className="text-white font-semibold text-5xl"> if (response == true) {
Your story starts with us. setSendingStatus("success");
</h1> } else {
<p className="mt-4 text-lg text-blueGray-200"> setSendingStatus("error");
About page }
}
const getTextValueByKey = (key) => {
const item = data.find((item) => item.key === key);
return item ? item.value : "";
};
return (
<>
<main>
<div className="relative pt-16 pb-32 flex content-center items-center justify-center min-h-screen-75">
<div
className="absolute top-0 w-full h-full bg-center bg-cover"
style={{
backgroundImage:
"url('https://images.unsplash.com/photo-1557804506-669a67965ba0?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1267&q=80')",
}}
>
<span
id="blackOverlay"
className="w-full h-full absolute opacity-75 bg-black"
></span>
</div>
<div className="container relative mx-auto">
<div className="items-center flex flex-wrap">
<div className="w-full lg:w-6/12 px-4 ml-auto mr-auto text-center">
<div className="pr-12">
<h1 className="text-white font-semibold text-5xl">
{getTextValueByKey("h1-text")}
</h1>
<p className="mt-4 text-lg text-blueGray-200">
{getTextValueByKey("p1-text")}
</p> </p>
</div>
</div> </div>
</div> </div>
</div> </div>
<div </div>
className="top-auto bottom-0 left-0 right-0 w-full absolute pointer-events-none overflow-hidden h-16" <div
style={{ transform: "translateZ(0)" }} className="top-auto bottom-0 left-0 right-0 w-full absolute pointer-events-none overflow-hidden h-16"
style={{ transform: "translateZ(0)" }}
>
<svg
className="absolute bottom-0 overflow-hidden"
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="none"
version="1.1"
viewBox="0 0 2560 100"
x="0"
y="0"
> >
<svg <polygon
className="absolute bottom-0 overflow-hidden" className="text-blueGray-200 fill-current"
xmlns="http://www.w3.org/2000/svg" points="2560 0 2560 100 0 100"
preserveAspectRatio="none" ></polygon>
version="1.1" </svg>
viewBox="0 0 2560 100"
x="0"
y="0"
>
<polygon
className="text-blueGray-200 fill-current"
points="2560 0 2560 100 0 100"
></polygon>
</svg>
</div>
</div> </div>
</div>
<section className="pb-20 bg-blueGray-200 -mt-24">
<div className="container mx-auto px-4"> <section className="pb-20 bg-blueGray-200 -mt-24">
<div className="flex flex-wrap"> <div className="container mx-auto px-4">
<div className="lg:pt-12 pt-6 w-full md:w-4/12 px-4 text-center"> <div className="flex flex-wrap">
<div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-8 shadow-lg rounded-lg"> <div className="lg:pt-12 pt-6 w-full md:w-4/12 px-4 text-center">
<div className="px-4 py-5 flex-auto"> <div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-8 shadow-lg rounded-lg">
<div className="text-white p-3 text-center inline-flex items-center justify-center w-12 h-12 mb-5 shadow-lg rounded-full bg-red-400"> <div className="px-4 py-5 flex-auto">
<i className="fas fa-award"></i> <div className="text-white p-3 text-center inline-flex items-center justify-center w-12 h-12 mb-5 shadow-lg rounded-full bg-red-400"></div>
</div> <h6 className="text-xl font-semibold">
<h6 className="text-xl font-semibold">Fault management System</h6> {getTextValueByKey("red-h")}
<p className="mt-2 mb-4 text-blueGray-500"> </h6>
Start here. <p className="mt-2 mb-4 text-blueGray-500">
</p> {getTextValueByKey("red-p")}
</div> </p>
</div>
</div>
<div className="w-full md:w-4/12 px-4 text-center">
<div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-8 shadow-lg rounded-lg">
<div className="px-4 py-5 flex-auto">
<div className="text-white p-3 text-center inline-flex items-center justify-center w-12 h-12 mb-5 shadow-lg rounded-full bg-lightBlue-400">
<i className="fas fa-retweet"></i>
</div>
<h6 className="text-xl font-semibold">FMS</h6>
<p className="mt-2 mb-4 text-blueGray-500">
CURIOUSITY
</p>
</div>
</div>
</div>
<div className="pt-6 w-full md:w-4/12 px-4 text-center">
<div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-8 shadow-lg rounded-lg">
<div className="px-4 py-5 flex-auto">
<div className="text-white p-3 text-center inline-flex items-center justify-center w-12 h-12 mb-5 shadow-lg rounded-full bg-emerald-400">
<i className="fas fa-fingerprint"></i>
</div>
<h6 className="text-xl font-semibold">OUR Company</h6>
<p className="mt-2 mb-4 text-blueGray-500">
Stay with us
</p>
</div>
</div> </div>
</div> </div>
</div> </div>
<div className="flex flex-wrap items-center mt-32"> <div className="w-full md:w-4/12 px-4 text-center">
<div className="w-full md:w-5/12 px-4 mr-auto ml-auto"> <div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-8 shadow-lg rounded-lg">
<div className="text-blueGray-500 p-3 text-center inline-flex items-center justify-center w-16 h-16 mb-6 shadow-lg rounded-full bg-white"> <div className="px-4 py-5 flex-auto">
<i className="fas fa-user-friends text-xl"></i> <div className="text-white p-3 text-center inline-flex items-center justify-center w-12 h-12 mb-5 shadow-lg rounded-full bg-lightBlue-400"></div>
<h6 className="text-xl font-semibold">
{getTextValueByKey("blue-h")}
</h6>
<p className="mt-2 mb-4 text-blueGray-500">
{getTextValueByKey("blue-p")}
</p>
</div> </div>
<h3 className="text-3xl mb-2 font-semibold leading-normal">
Working with us is a pleasure
</h3>
<p className="text-lg font-light leading-relaxed mt-4 mb-4 text-blueGray-600">
FMS.
</p>
<p className="text-lg font-light leading-relaxed mt-0 mb-4 text-blueGray-600">
Abnomaly Detection.
</p>
</div> </div>
</div>
<div className="w-full md:w-4/12 px-4 mr-auto ml-auto">
<div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-6 shadow-lg rounded-lg bg-blueGray-700"> <div className="pt-6 w-full md:w-4/12 px-4 text-center">
<img <div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-8 shadow-lg rounded-lg">
alt="..." <div className="px-4 py-5 flex-auto">
src="https://images.unsplash.com/photo-1522202176988-66273c2fd55f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1051&q=80" <div className="text-white p-3 text-center inline-flex items-center justify-center w-12 h-12 mb-5 shadow-lg rounded-full bg-emerald-400"></div>
className="w-full align-middle rounded-t-lg" <h6 className="text-xl font-semibold">
/> {getTextValueByKey("green-h")}
<blockquote className="relative p-8 mb-4"> </h6>
<svg <p className="mt-2 mb-4 text-blueGray-500">
preserveAspectRatio="none" {getTextValueByKey("green-p")}
xmlns="http://www.w3.org/2000/svg" </p>
viewBox="0 0 583 95"
className="absolute left-0 w-full block h-95-px -top-94-px"
>
<polygon
points="-30,95 583,95 583,65"
className="text-blueGray-700 fill-current"
></polygon>
</svg>
<h4 className="text-xl font-bold text-white">
Top Services
</h4>
<p className="text-md font-light mt-2 text-white">
FMS
</p>
</blockquote>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</section>
<div className="flex flex-wrap items-center mt-32">
<section className="relative py-20"> <div className="w-full md:w-5/12 px-4 mr-auto ml-auto">
<div <div className="text-blueGray-500 p-3 text-center inline-flex items-center justify-center w-16 h-16 mb-6 shadow-lg rounded-full bg-white"></div>
className="bottom-auto top-0 left-0 right-0 w-full absolute pointer-events-none overflow-hidden -mt-20 h-20" <h3 className="text-3xl mb-2 font-semibold leading-normal">
style={{ transform: "translateZ(0)" }} {getTextValueByKey("section2-h3")}
> </h3>
<svg <p className="text-lg font-light leading-relaxed mt-4 mb-4 text-blueGray-600">
className="absolute bottom-0 overflow-hidden" {getTextValueByKey("section2-p")}
xmlns="http://www.w3.org/2000/svg" </p>
preserveAspectRatio="none" </div>
version="1.1"
viewBox="0 0 2560 100" <div className="w-full md:w-4/12 px-4 mr-auto ml-auto">
x="0" <div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-6 shadow-lg rounded-lg bg-blueGray-700">
y="0"
>
<polygon
className="text-white fill-current"
points="2560 0 2560 100 0 100"
></polygon>
</svg>
</div>
<div className="container mx-auto px-4">
<div className="items-center flex flex-wrap">
<div className="w-full md:w-4/12 ml-auto mr-auto px-4">
<img <img
alt="..." alt="..."
className="max-w-full rounded-lg shadow-lg" src="https://images.unsplash.com/photo-1522202176988-66273c2fd55f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1051&q=80"
src="https://images.unsplash.com/photo-1555212697-194d092e3b8f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=634&q=80" className="w-full align-middle rounded-t-lg"
/> />
</div> <blockquote className="relative p-8 mb-4">
<div className="w-full md:w-5/12 ml-auto mr-auto px-4"> <svg
<div className="md:pr-12"> preserveAspectRatio="none"
<div className="text-blueGray-500 p-3 text-center inline-flex items-center justify-center w-16 h-16 mb-6 shadow-lg rounded-full bg-blueGray-200"> xmlns="http://www.w3.org/2000/svg"
<i className="fas fa-rocket text-xl"></i> viewBox="0 0 583 95"
</div> className="absolute left-0 w-full block h-95-px -top-94-px"
<h3 className="text-3xl font-semibold">A growing company</h3> >
<p className="mt-4 text-lg leading-relaxed text-blueGray-500"> <polygon
FMS points="-30,95 583,95 583,65"
className="text-blueGray-700 fill-current"
></polygon>
</svg>
<h4 className="text-xl font-bold text-white">
{t("top-services")}
</h4>
<p className="text-md font-light mt-2 text-white">
{getTextValueByKey("topservice-p")}
</p> </p>
<ul className="list-none mt-6"> </blockquote>
<li className="py-2">
<div className="flex items-center">
<div>
<span className="text-xs font-semibold inline-block py-1 px-2 uppercase rounded-full text-blueGray-500 bg-blueGray-100 mr-3">
<i className="fas fa-fingerprint"></i>
</span>
</div>
<div>
<h4 className="text-blueGray-500">
A
</h4>
</div>
</div>
</li>
<li className="py-2">
<div className="flex items-center">
<div>
<span className="text-xs font-semibold inline-block py-1 px-2 uppercase rounded-full text-blueGray-500 bg-blueGray-100 mr-3">
<i className="fab fa-html5"></i>
</span>
</div>
<div>
<h4 className="text-blueGray-500">
B
</h4>
</div>
</div>
</li>
<li className="py-2">
<div className="flex items-center">
<div>
<span className="text-xs font-semibold inline-block py-1 px-2 uppercase rounded-full text-blueGray-500 bg-blueGray-100 mr-3">
<i className="far fa-paper-plane"></i>
</span>
</div>
<div>
<h4 className="text-blueGray-500">
C
</h4>
</div>
</div>
</li>
</ul>
</div>
</div> </div>
</div> </div>
</div> </div>
</section> </div>
</section>
<section className="pt-20 pb-48">
<div className="container mx-auto px-4"> <section className="relative py-20">
<div className="flex flex-wrap justify-center text-center mb-24"> <div
<div className="w-full lg:w-6/12 px-4"> className="bottom-auto top-0 left-0 right-0 w-full absolute pointer-events-none overflow-hidden -mt-20 h-20"
<h2 className="text-4xl font-semibold">Here are our heroes</h2> style={{ transform: "translateZ(0)" }}
<p className="text-lg leading-relaxed m-4 text-blueGray-500"> >
We ara HEROES. <svg
className="absolute bottom-0 overflow-hidden"
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="none"
version="1.1"
viewBox="0 0 2560 100"
x="0"
y="0"
>
<polygon
className="text-white fill-current"
points="2560 0 2560 100 0 100"
></polygon>
</svg>
</div>
<div className="container mx-auto px-4">
<div className="items-center flex flex-wrap">
<div className="w-full md:w-4/12 ml-auto mr-auto px-4">
<img
alt="..."
className="max-w-full rounded-lg shadow-lg"
src="https://images.unsplash.com/photo-1555212697-194d092e3b8f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=634&q=80"
/>
</div>
<div className="w-full md:w-5/12 ml-auto mr-auto px-4">
<div className="md:pr-12">
<div className="text-blueGray-500 p-3 text-center inline-flex items-center justify-center w-16 h-16 mb-6 shadow-lg rounded-full bg-blueGray-200"></div>
<h3 className="text-3xl font-semibold">
{getTextValueByKey("section3-h")}
</h3>
<p className="mt-4 text-lg leading-relaxed text-blueGray-500">
{getTextValueByKey("section3-p")}
</p> </p>
</div> </div>
</div> </div>
<div className="flex flex-wrap"> </div>
<div className="w-full md:w-6/12 lg:w-3/12 lg:mb-0 mb-12 px-4"> </div>
<div className="px-6"> </section>
<img
alt="..." <section className="pt-20 pb-48">
src="/images/Reem.jpg" <div className="container mx-auto px-4">
className="shadow-lg rounded-full mx-auto max-w-120-px" <div className="flex flex-wrap justify-center text-center mb-24">
/> <div className="w-full lg:w-6/12 px-4">
<div className="pt-6 text-center"> <h2 className="text-4xl font-semibold">{getTextValueByKey("Hero-title")}</h2>
<h5 className="text-xl font-bold">REEM HASAN</h5> <p className="text-lg leading-relaxed m-4 text-blueGray-500">
<p className="mt-1 text-sm text-blueGray-400 uppercase font-semibold"> {getTextValueByKey("Hero-p")}
Web Developer </p>
</p> </div>
<div className="mt-6"> </div>
<button <div className="flex flex-wrap">
className="bg-lightBlue-400 text-white w-8 h-8 rounded-full outline-none focus:outline-none mr-1 mb-1" <div className="w-full md:w-6/12 lg:w-3/12 lg:mb-0 mb-12 px-4">
type="button" <div className="px-6">
> <img
<i className="fab fa-twitter"></i> alt="..."
</button> src="/images/Reem.jpg"
<button className="shadow-lg rounded-full mx-auto max-w-120-px"
className="bg-lightBlue-600 text-white w-8 h-8 rounded-full outline-none focus:outline-none mr-1 mb-1" />
type="button" <div className="pt-6 text-center">
> <h5 className="text-xl font-bold">REEM HASAN</h5>
<i className="fab fa-facebook-f"></i> <p className="mt-1 text-sm text-blueGray-400 uppercase font-semibold">
</button> Web Developer
<button </p>
className="bg-pink-500 text-white w-8 h-8 rounded-full outline-none focus:outline-none mr-1 mb-1"
type="button"
>
<i className="fab fa-dribbble"></i>
</button>
</div>
</div>
</div> </div>
</div> </div>
<div className="w-full md:w-6/12 lg:w-3/12 lg:mb-0 mb-12 px-4"> </div>
<div className="px-6"> <div className="w-full md:w-6/12 lg:w-3/12 lg:mb-0 mb-12 px-4">
<img <div className="px-6">
alt="..." <img
src="/images/Ali.jpg" alt="..."
className="shadow-lg rounded-full mx-auto max-w-120-px" src="/images/Ali.jpg"
/> className="shadow-lg rounded-full mx-auto max-w-120-px"
<div className="pt-6 text-center"> />
<h5 className="text-xl font-bold">ALI MOUHAMMAD</h5> <div className="pt-6 text-center">
<p className="mt-1 text-sm text-blueGray-400 uppercase font-semibold"> <h5 className="text-xl font-bold">ALI MOUHAMMAD</h5>
Marketing Specialist <p className="mt-1 text-sm text-blueGray-400 uppercase font-semibold">
</p> Marketing Specialist
<div className="mt-6"> </p>
<button
className="bg-red-600 text-white w-8 h-8 rounded-full outline-none focus:outline-none mr-1 mb-1"
type="button"
>
<i className="fab fa-google"></i>
</button>
<button
className="bg-lightBlue-600 text-white w-8 h-8 rounded-full outline-none focus:outline-none mr-1 mb-1"
type="button"
>
<i className="fab fa-facebook-f"></i>
</button>
</div>
</div>
</div> </div>
</div> </div>
<div className="w-full md:w-6/12 lg:w-3/12 lg:mb-0 mb-12 px-4"> </div>
<div className="px-6"> <div className="w-full md:w-6/12 lg:w-3/12 lg:mb-0 mb-12 px-4">
<img <div className="px-6">
alt="..." <img
src="/images/Bashar.jpg" alt="..."
className="shadow-lg rounded-full mx-auto max-w-120-px" src="/images/Bashar.jpg"
/> className="shadow-lg rounded-full mx-auto max-w-120-px"
<div className="pt-6 text-center"> />
<h5 className="text-xl font-bold">BASHAR HUSSAIN</h5> <div className="pt-6 text-center">
<p className="mt-1 text-sm text-blueGray-400 uppercase font-semibold"> <h5 className="text-xl font-bold">BASHAR HUSSAIN</h5>
UI/UX Designer <p className="mt-1 text-sm text-blueGray-400 uppercase font-semibold">
</p> UI/UX Designer
<div className="mt-6"> </p>
<button
className="bg-red-600 text-white w-8 h-8 rounded-full outline-none focus:outline-none mr-1 mb-1"
type="button"
>
<i className="fab fa-google"></i>
</button>
<button
className="bg-lightBlue-400 text-white w-8 h-8 rounded-full outline-none focus:outline-none mr-1 mb-1"
type="button"
>
<i className="fab fa-twitter"></i>
</button>
<button
className="bg-blueGray-700 text-white w-8 h-8 rounded-full outline-none focus:outline-none mr-1 mb-1"
type="button"
>
<i className="fab fa-instagram"></i>
</button>
</div>
</div>
</div> </div>
</div> </div>
<div className="w-full md:w-6/12 lg:w-3/12 lg:mb-0 mb-12 px-4"> </div>
<div className="px-6"> <div className="w-full md:w-6/12 lg:w-3/12 lg:mb-0 mb-12 px-4">
<img <div className="px-6">
alt="..." <img
src="/images/Nour.jpg" alt="..."
className="shadow-lg rounded-full mx-auto max-w-120-px" src="/images/Nour.jpg"
/> className="shadow-lg rounded-full mx-auto max-w-120-px"
<div className="pt-6 text-center"> />
<h5 className="text-xl font-bold">NOUR</h5> <div className="pt-6 text-center">
<p className="mt-1 text-sm text-blueGray-400 uppercase font-semibold"> <h5 className="text-xl font-bold">NOUR</h5>
Founder and CEO <p className="mt-1 text-sm text-blueGray-400 uppercase font-semibold">
</p> Founder and CEO
<div className="mt-6"> </p>
<button
className="bg-pink-500 text-white w-8 h-8 rounded-full outline-none focus:outline-none mr-1 mb-1"
type="button"
>
<i className="fab fa-dribbble"></i>
</button>
<button
className="bg-red-600 text-white w-8 h-8 rounded-full outline-none focus:outline-none mr-1 mb-1"
type="button"
>
<i className="fab fa-google"></i>
</button>
<button
className="bg-lightBlue-400 text-white w-8 h-8 rounded-full outline-none focus:outline-none mr-1 mb-1"
type="button"
>
<i className="fab fa-twitter"></i>
</button>
<button
className="bg-blueGray-700 text-white w-8 h-8 rounded-full outline-none focus:outline-none mr-1 mb-1"
type="button"
>
<i className="fab fa-instagram"></i>
</button>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</section> </div>
</section>
<section className="pb-20 relative block bg-blueGray-800">
<div <section className="pb-20 relative block bg-blueGray-800">
className="bottom-auto top-0 left-0 right-0 w-full absolute pointer-events-none overflow-hidden -mt-20 h-20" <div
style={{ transform: "translateZ(0)" }} className="bottom-auto top-0 left-0 right-0 w-full absolute pointer-events-none overflow-hidden -mt-20 h-20"
style={{ transform: "translateZ(0)" }}
>
<svg
className="absolute bottom-0 overflow-hidden"
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="none"
version="1.1"
viewBox="0 0 2560 100"
x="0"
y="0"
> >
<svg <polygon
className="absolute bottom-0 overflow-hidden" className="text-blueGray-800 fill-current"
xmlns="http://www.w3.org/2000/svg" points="2560 0 2560 100 0 100"
preserveAspectRatio="none" ></polygon>
version="1.1" </svg>
viewBox="0 0 2560 100" </div>
x="0"
y="0" <div className="container mx-auto px-4 lg:pt-24 lg:pb-64">
> <div className="flex flex-wrap text-center justify-center">
<polygon <div className="w-full lg:w-6/12 px-4">
className="text-blueGray-800 fill-current" <h2 className="text-4xl font-semibold text-white">MORE IFO</h2>
points="2560 0 2560 100 0 100" </div>
></polygon>
</svg>
</div> </div>
<div className="flex flex-wrap mt-12 justify-center">
<div className="container mx-auto px-4 lg:pt-24 lg:pb-64"> <div className="w-full lg:w-3/12 px-4 text-center">
<div className="flex flex-wrap text-center justify-center"> <div className="text-blueGray-800 p-3 w-12 h-12 shadow-lg rounded-full bg-white inline-flex items-center justify-center"></div>
<div className="w-full lg:w-6/12 px-4"> <h6 className="text-xl mt-5 font-semibold text-white">
<h2 className="text-4xl font-semibold text-white"> {getTextValueByKey("moreInfo-h1")}
MORE IFO </h6>
</h2> <p className="mt-2 mb-4 text-blueGray-400">{getTextValueByKey("moreInfo-p1")}</p>
<p className="text-lg leading-relaxed mt-4 mb-4 text-blueGray-400">
HERE
</p>
</div>
</div> </div>
<div className="flex flex-wrap mt-12 justify-center"> <div className="w-full lg:w-3/12 px-4 text-center">
<div className="w-full lg:w-3/12 px-4 text-center"> <div className="text-blueGray-800 p-3 w-12 h-12 shadow-lg rounded-full bg-white inline-flex items-center justify-center"></div>
<div className="text-blueGray-800 p-3 w-12 h-12 shadow-lg rounded-full bg-white inline-flex items-center justify-center"> <h5 className="text-xl mt-5 font-semibold text-white">{getTextValueByKey("moreInfo-h2")}</h5>
<i className="fas fa-medal text-xl"></i> <p className="mt-2 mb-4 text-blueGray-400">{getTextValueByKey("moreInfo-p2")}</p>
</div> </div>
<h6 className="text-xl mt-5 font-semibold text-white"> <div className="w-full lg:w-3/12 px-4 text-center">
Excelent Services <div className="text-blueGray-800 p-3 w-12 h-12 shadow-lg rounded-full bg-white inline-flex items-center justify-center"></div>
</h6> <h5 className="text-xl mt-5 font-semibold text-white">
<p className="mt-2 mb-4 text-blueGray-400"> {getTextValueByKey("moreInfo-h3")}
detection. </h5>
</p> <p className="mt-2 mb-4 text-blueGray-400">{getTextValueByKey("moreInfo-p3")}</p>
</div>
<div className="w-full lg:w-3/12 px-4 text-center">
<div className="text-blueGray-800 p-3 w-12 h-12 shadow-lg rounded-full bg-white inline-flex items-center justify-center">
<i className="fas fa-poll text-xl"></i>
</div>
<h5 className="text-xl mt-5 font-semibold text-white">
MODEL
</h5>
<p className="mt-2 mb-4 text-blueGray-400">
ML
</p>
</div>
<div className="w-full lg:w-3/12 px-4 text-center">
<div className="text-blueGray-800 p-3 w-12 h-12 shadow-lg rounded-full bg-white inline-flex items-center justify-center">
<i className="fas fa-lightbulb text-xl"></i>
</div>
<h5 className="text-xl mt-5 font-semibold text-white">
WEB APP
</h5>
<p className="mt-2 mb-4 text-blueGray-400">
OUR APP.
</p>
</div>
</div> </div>
</div> </div>
</section> </div>
<section className="relative block py-24 lg:pt-0 bg-blueGray-800"> </section>
<div className="container mx-auto px-4"> <section className="relative block py-24 lg:pt-0 bg-blueGray-800">
<div className="flex flex-wrap justify-center lg:-mt-64 -mt-48"> <div className="container mx-auto px-4">
<div className="w-full lg:w-6/12 px-4"> <div className="flex flex-wrap justify-center lg:-mt-64 -mt-48">
<div className="relative flex flex-col min-w-0 break-words w-full mb-6 shadow-lg rounded-lg bg-blueGray-200"> <div className="w-full lg:w-6/12 px-4">
<div className="flex-auto p-5 lg:p-10"> <div className="relative flex flex-col min-w-0 break-words w-full mb-6 shadow-lg rounded-lg bg-blueGray-200">
<h4 className="text-2xl font-semibold"> <div className="flex-auto p-5 lg:p-10">
Want to work with us? <h4 className="text-2xl font-semibold">
</h4> Want to work with us?
<p className="leading-relaxed mt-1 mb-4 text-blueGray-500"> </h4>
Complete this form and we will get back to you in 24 <p className="leading-relaxed mt-1 mb-4 text-blueGray-500">
hours. Complete this form and we will get back to you in 24
</p> hours.
<div className="relative w-full mb-3 mt-8"> </p>
<label <div className="relative w-full mb-3 mt-8">
className="block uppercase text-blueGray-600 text-xs font-bold mb-2" <label
htmlFor="full-name" className="block uppercase text-blueGray-600 text-xs font-bold mb-2"
> htmlFor="full-name"
Full Name >
</label> Full Name
<input </label>
type="text" <input
className="border-0 px-3 py-3 placeholder-blueGray-300 text-blueGray-600 bg-white rounded text-sm shadow focus:outline-none focus:ring w-full ease-linear transition-all duration-150" type="text"
placeholder="Full Name" className="border-0 px-3 py-3 placeholder-blueGray-300 text-blueGray-600 bg-white rounded text-sm shadow focus:outline-none focus:ring w-full ease-linear transition-all duration-150"
/> placeholder="Full Name"
</div> value={formData.subject}
onChange={(e) =>
<div className="relative w-full mb-3"> setFormData({ ...formData, subject: e.target.value })
<label }
className="block uppercase text-blueGray-600 text-xs font-bold mb-2" />
htmlFor="email" </div>
> <div className="relative w-full mb-3">
Email <label
</label> className="block uppercase text-blueGray-600 text-xs font-bold mb-2"
<input htmlFor="email"
type="email" >
className="border-0 px-3 py-3 placeholder-blueGray-300 text-blueGray-600 bg-white rounded text-sm shadow focus:outline-none focus:ring w-full ease-linear transition-all duration-150" Email
placeholder="Email" </label>
/> <input
</div> type="email"
className="border-0 px-3 py-3 placeholder-blueGray-300 text-blueGray-600 bg-white rounded text-sm shadow focus:outline-none focus:ring w-full ease-linear transition-all duration-150"
<div className="relative w-full mb-3"> placeholder="Email"
<label value={formData.email}
className="block uppercase text-blueGray-600 text-xs font-bold mb-2" onChange={(e) =>
htmlFor="message" setFormData({ ...formData, email: e.target.value })
> }
Message />
</label> </div>
<textarea
rows="4" <div className="relative w-full mb-3">
cols="80" <label
className="border-0 px-3 py-3 placeholder-blueGray-300 text-blueGray-600 bg-white rounded text-sm shadow focus:outline-none focus:ring w-full" className="block uppercase text-blueGray-600 text-xs font-bold mb-2"
placeholder="Type a message..." htmlFor="message"
/> >
</div> Message
<div className="text-center mt-6"> </label>
<button <textarea
className="bg-blueGray-800 text-white active:bg-blueGray-600 text-sm font-bold uppercase px-6 py-3 rounded shadow hover:shadow-lg outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150" rows="4"
type="button" cols="80"
> className="border-0 px-3 py-3 placeholder-blueGray-300 text-blueGray-600 bg-white rounded text-sm shadow focus:outline-none focus:ring w-full"
Send Message placeholder="Type a message..."
</button> value={formData.body}
onChange={(e) =>
setFormData({ ...formData, body: e.target.value })
}
/>
</div>
<div className="text-center mt-6">
<button
className="bg-blueGray-800 text-white active:bg-blueGray-600 text-sm font-bold uppercase px-6 py-3 rounded shadow hover:shadow-lg outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150"
type="button"
onClick={sendMessage}
>
Send Message
</button>
<div>
{sendingStatus == "success" && (
<Alert
message="Message was sent successfully"
type="success"
/>
)}
{sendingStatus == "error" && (
<Alert message="Sending errors" type="error" />
)}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</section> </div>
</main> </section>
<Footer /> </main>
</> <Footer />
); </>
} );
}
\ No newline at end of file
import { useEffect, useState } from 'react';
import { DynamicFormTypes } from "@/src/components/dynamic-form/dtos/dynamic-form.dto";
import DynamicForm from "@/src/components/dynamic-form";
import { formItems } from "./add-user-data";
import useTranslation from "next-translate/useTranslation";
import { TranslationFiles } from "@/src/data/core";
const EditForm = ({ id }) => {
const { t } = useTranslation(TranslationFiles.COMMON);
const [initialValues, setInitialValues] = useState({});
useEffect(() => {
// Fetch user data from API or database
// const fetchUser = async () => {
// const response = await fetch(`/api/users/${id}`);
// const data = await response.json();
// setInitialValues(data);
// };
// fetchUser();
}, [id]);
return (
<div data-testid="new-stock-form">
<DynamicForm
type={DynamicFormTypes.Update}
title={t("edit-user")}
initialValues={{}}
onFinish={(values) => console.log({ values })}
formCol={formItems(t)}
/>
</div>
);
};
export default EditForm;
...@@ -13,8 +13,14 @@ const Login = () => { ...@@ -13,8 +13,14 @@ const Login = () => {
const [cookies, setCookies] = useCookies([AUTH_TOKEN]); const [cookies, setCookies] = useCookies([AUTH_TOKEN]);
const onFinishSend = (values: any) => { const onFinishSend = (values: any) => {
if(values.email=="admin@f.com"){
setCookies(AUTH_TOKEN, values.email); setCookies(AUTH_TOKEN, values.email);
router.push("/"); router.push("/");
}
else if(values.email=="user@f.com"){
setCookies(AUTH_TOKEN, values.email);
router.push("/user");
}
}; };
return ( return (
<div data-testid="login-component"> <div data-testid="login-component">
......
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { TranslationFiles } from "@/src/data/core"; import { TranslationFiles } from "@/src/data/core";
import FmsButton from "../../../../shared-library/src/buttons/fms-button"; import FmsButton from "../../../../shared-library/src/buttons/fms-button";
import { useRouter } from "next/router";
const ProfileForm = () => { const ProfileForm = () => {
const { t } = useTranslation(TranslationFiles.COMMON); const { t } = useTranslation(TranslationFiles.COMMON);
const router = useRouter();
return ( return (
<> <>
<main className="profile-page"> <main className="profile-page">
...@@ -60,7 +61,9 @@ const ProfileForm = () => { ...@@ -60,7 +61,9 @@ const ProfileForm = () => {
className="bg-blueGray-700 active:bg-blueGray-600 uppercase text-white font-bold hover:shadow-md shadow text-xs px-4 py-2 rounded outline-none focus:outline-none sm:mr-2 mb-1 ease-linear transition-all duration-150" className="bg-blueGray-700 active:bg-blueGray-600 uppercase text-white font-bold hover:shadow-md shadow text-xs px-4 py-2 rounded outline-none focus:outline-none sm:mr-2 mb-1 ease-linear transition-all duration-150"
type="primary" type="primary"
borderRadius="32" borderRadius="32"
onClick={() => {
router.push("/setup/setting-profile-content");
}}
> >
{t("edit")} {t("edit")}
</FmsButton> </FmsButton>
......
import React from "react";
import useTranslation from "next-translate/useTranslation";
import { TranslationFiles } from "@/src/data/core";
import FmsButton from "../../../../shared-library/src/buttons/fms-button";
import { useRouter } from "next/router";
import { Col, Divider, Row } from "antd";
const Setting = () => {
const { t } = useTranslation(TranslationFiles.COMMON);
const router = useRouter();
return (
<>
<Divider orientation="left">{t("setting-pages")}</Divider>
<Col span={24} className={"pd"}>
<FmsButton
type="move"
size={"large"}
borderRadius="8"
onClick={() => {
router.push("/setup/setting-about-content");
}}
>
{t("About-page-setting").toUpperCase()}
</FmsButton>
</Col>
<Divider orientation="left"></Divider>
<Col span={12}className={"pd"} >
<FmsButton
type="move"
size={"large"}
borderRadius="8"
onClick={() => {
router.push("/setup/setting-profile-content");
}}
>
{t("profile-page-setting").toUpperCase()}
</FmsButton>
</Col>
</>
);
};
export default Setting;
import useTranslation from "next-translate/useTranslation";
import { TranslationFiles } from "@/src/data/core";
import React, { useState } from "react";
import { Alert, Input, message } from "antd";
import FmsButton from "../../../../shared-library/src/buttons/fms-button";
import { ExclamationOutlined } from "@ant-design/icons";
import { useRouter } from "next/router";
import {
UpdateAboutSettingData,
sendEmailMessage,
} from "@/src/services/setting-service";
import MainUtils from "../../utils/main";
export default function SettingAboutContent() {
const { t } = useTranslation(TranslationFiles.COMMON);
const router = useRouter();
const [formData, setFormData] = useState({
subject: "", //fullName
email: "",
body: "",
});
const [sendingStatus, setSendingStatus] = useState("");
const [data, setData] = useState([]);
async function sendMessage() {
const response = await sendEmailMessage(formData);
console.log(response);
if (response == true) {
setSendingStatus("success");
} else {
setSendingStatus("error");
}
}
async function UpdateAboutInfo() {
for (let i = 0; i < data.length; i++) {
console.log("data", data[i]);
if (!MainUtils.isEmptyValue( data[i].value)) {
const response = await UpdateAboutSettingData(data[i]);
console.log(response);
if (!MainUtils.isEmptyObject(response)) {
message.success(data[i].key+" Updated successfully");
} else {
message.error("error");
}
}
}
}
const handleInputChange = (key: string, value: string) => {
setData((prevData: any) => {
let dataArray = Array.isArray(prevData) ? prevData : Object.values(prevData);
const index = dataArray.findIndex((item: any) => item.key === key);
if (index !== -1) {
// If the object already exists, update its value property
return [
...dataArray.slice(0, index),
{ ...dataArray[index], value },
...dataArray.slice(index + 1),
];
} else {
// Otherwise, create a new object and add it to the array
return [
...dataArray,
{ key, value },
];
}
});
};
return (
<>
<main>
<div className=" w-full px-4 max-w-full flex-grow flex-1 m-1 text-right">
<FmsButton
type="move"
size="large"
borderRadius="32"
onClick={() => {
UpdateAboutInfo();
}}
>
{"Save".toUpperCase()}
</FmsButton>
<span> </span>
<FmsButton
type="secondary"
size="large"
borderRadius="32"
onClick={() => {
router.push("/about");
}}
>
{"check-about-page".toUpperCase()}
</FmsButton>
</div>
<div className="relative pt-16 pb-32 flex content-center items-center justify-center min-h-screen-75">
<div
className="absolute top-0 w-full h-full bg-center bg-cover"
style={{
backgroundImage:
"url('https://images.unsplash.com/photo-1557804506-669a67965ba0?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1267&q=80')",
}}
>
<span
id="blackOverlay"
className="w-full h-full absolute opacity-75 bg-black"
></span>
</div>
<div className="container relative mx-auto">
<div className="items-center flex flex-wrap">
<div className="w-full lg:w-6/12 px-4 ml-auto mr-auto text-center">
<div className="pr-12">
<h1 className="text-white font-semibold text-5xl">
<Input
placeholder={"h1-text"}
value={data.find((item) => item.key === "h1-text")?.value}
onChange={(e: any) =>
handleInputChange("h1-text", e.target.value)
}
/>
</h1>
<p className="mt-4 text-lg text-blueGray-200">
<Input
placeholder={"p1-text"}
value={data.find((item) => item.key === "p1-text")?.value}
onChange={(e: any) =>
handleInputChange("p1-text", e.target.value)
}
/>
</p>
</div>
</div>
</div>
</div>
<div
className="top-auto bottom-0 left-0 right-0 w-full absolute pointer-events-none overflow-hidden h-16"
style={{ transform: "translateZ(0)" }}
>
<svg
className="absolute bottom-0 overflow-hidden"
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="none"
version="1.1"
viewBox="0 0 2560 100"
x="0"
y="0"
></svg>
</div>
</div>
<section className="pb-20 bg-blueGray-200 -mt-24">
<div className="container mx-auto px-4">
<div className="flex flex-wrap">
<div className="lg:pt-12 pt-6 w-full md:w-4/12 px-4 text-center">
<div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-8 shadow-lg rounded-lg">
<div className="px-4 py-5 flex-auto">
<div className="text-white p-3 text-center inline-flex items-center justify-center w-12 h-12 mb-5 shadow-lg rounded-full bg-red-400">
<ExclamationOutlined
style={{ fontSize: "30px", color: "#fff" }}
className={"ExclamationCircleOutlined "}
/>
</div>
<h6 className="text-xl font-semibold">
<Input
placeholder={"red-h"}
value={data.find((item) => item.key === "red-h")?.value}
onChange={(e: any) =>
handleInputChange("red-h", e.target.value)
}
/>
</h6>
<p className="mt-2 mb-4 text-blueGray-500">
<Input.TextArea
placeholder={"red-p"}
value={data.find((item) => item.key === "red-p")?.value}
onChange={(e: any) =>
handleInputChange("red-p", e.target.value)
}
/>
</p>
</div>
</div>
</div>
<div className="w-full md:w-4/12 px-4 text-center">
<div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-8 shadow-lg rounded-lg">
<div className="px-4 py-5 flex-auto">
<div className="text-white p-3 text-center inline-flex items-center justify-center w-12 h-12 mb-5 shadow-lg rounded-full bg-lightBlue-400">
<ExclamationOutlined
style={{ fontSize: "30px", color: "#fff" }}
className={"ExclamationCircleOutlined "}
/>
</div>
<h6 className="text-xl font-semibold">
<Input
placeholder={"blue-h"}
value={data.find((item) => item.key === "blue-h")?.value}
onChange={(e: any) =>
handleInputChange("blue-h", e.target.value)
}
/>
</h6>
<p className="mt-2 mb-4 text-blueGray-500">
<Input.TextArea
placeholder={"blue-p"}
value={data.find((item) => item.key === "blue-p")?.value}
onChange={(e: any) =>
handleInputChange("blue-p", e.target.value)
}
/>
</p>
</div>
</div>
</div>
<div className="pt-6 w-full md:w-4/12 px-4 text-center">
<div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-8 shadow-lg rounded-lg">
<div className="px-4 py-5 flex-auto">
<div className="text-white p-3 text-center inline-flex items-center justify-center w-12 h-12 mb-5 shadow-lg rounded-full bg-emerald-400">
<ExclamationOutlined
style={{ fontSize: "30px", color: "#fff" }}
className={"ExclamationCircleOutlined "}
/>
</div>
<h6 className="text-xl font-semibold">
<Input
placeholder={"green-h"}
value={data.find((item) => item.key === "green-h")?.value}
onChange={(e: any) =>
handleInputChange("green-h", e.target.value)
}
/>
</h6>
<p className="mt-2 mb-4 text-blueGray-500">
<Input.TextArea
placeholder={"green-p"}
value={data.find((item) => item.key === "green-p")?.value}
onChange={(e: any) =>
handleInputChange("green-p", e.target.value)
}
/>
</p>
</div>
</div>
</div>
</div>
<div className="flex flex-wrap items-center mt-32">
<div className="w-full md:w-5/12 px-4 mr-auto ml-auto">
<div className="text-blueGray-500 p-3 text-center inline-flex items-center justify-center w-16 h-16 mb-6 shadow-lg rounded-full bg-white">
<ExclamationOutlined
style={{ fontSize: "30px", color: "#000" }}
className={"ExclamationCircleOutlined "}
/>
</div>
<h3 className="text-3xl mb-2 font-semibold leading-normal">
<Input
placeholder={"section2-h3"}
value={data.find((item) => item.key === "section2-h3")?.value}
onChange={(e: any) =>
handleInputChange("section2-h3", e.target.value)
}
/>
</h3>
<p className="text-lg font-light leading-relaxed mt-4 mb-4 text-blueGray-600">
<Input.TextArea
placeholder={"section2-p"}
value={data.find((item) => item.key === "section2-p")?.value}
onChange={(e: any) =>
handleInputChange("section2-p", e.target.value)
}
/>
</p>
</div>
<div className="w-full md:w-4/12 px-4 mr-auto ml-auto">
<div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-6 shadow-lg rounded-lg bg-blueGray-700">
<img
alt="..."
src="https://images.unsplash.com/photo-1522202176988-66273c2fd55f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1051&q=80"
className="w-full align-middle rounded-t-lg"
/>
<blockquote className="relative p-8 mb-4">
<svg
preserveAspectRatio="none"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 583 95"
className="absolute left-0 w-full block h-95-px -top-94-px"
>
<polygon
points="-30,95 583,95 583,65"
className="text-blueGray-700 fill-current"
></polygon>
</svg>
<h4 className="text-xl font-bold text-white">
{"top-services"}
</h4>
<p className="text-md font-light mt-2 text-white">
<Input.TextArea
placeholder={"topservice-p"}
value={data.find((item) => item.key === "topservice-p")?.value}
onChange={(e: any) =>
handleInputChange("topservice-p", e.target.value)
}
/>
</p>
</blockquote>
</div>
</div>
</div>
</div>
</section>
<section className="relative py-20">
<div
className="bottom-auto top-0 left-0 right-0 w-full absolute pointer-events-none overflow-hidden -mt-20 h-20"
style={{ transform: "translateZ(0)" }}
>
<svg
className="absolute bottom-0 overflow-hidden"
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="none"
version="1.1"
viewBox="0 0 2560 100"
x="0"
y="0"
>
<polygon
className="text-white fill-current"
points="2560 0 2560 100 0 100"
></polygon>
</svg>
</div>
<div className="container mx-auto px-4">
<div className="items-center flex flex-wrap">
<div className="w-full md:w-4/12 ml-auto mr-auto px-4">
<img
alt="..."
className="max-w-full rounded-lg shadow-lg"
src="https://images.unsplash.com/photo-1555212697-194d092e3b8f?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=634&q=80"
/>
</div>
<div className="w-full md:w-5/12 ml-auto mr-auto px-4">
<div className="md:pr-12">
<div className="text-blueGray-500 p-3 text-center inline-flex items-center justify-center w-16 h-16 mb-6 shadow-lg rounded-full bg-blueGray-200">
<ExclamationOutlined
style={{ fontSize: "30px", color: "#000" }}
className={"ExclamationCircleOutlined "}
/>
</div>
<h3 className="text-3xl font-semibold">
<Input
placeholder={"section3-h"}
value={data.find((item) => item.key === "section3-h")?.value}
onChange={(e: any) =>
handleInputChange("section3-h", e.target.value)
}
/>
</h3>
<p className="mt-4 text-lg leading-relaxed text-blueGray-500">
<Input.TextArea
placeholder={"section3-p"}
value={data.find((item) => item.key === "section3-p")?.value}
onChange={(e: any) =>
handleInputChange("section3-p", e.target.value)
}
/>
</p>
</div>
</div>
</div>
</div>
</section>
<section className="pt-20 pb-48">
<div className="container mx-auto px-4">
<div className="flex flex-wrap justify-center text-center mb-24">
<div className="w-full lg:w-6/12 px-4">
<h2 className="text-4xl font-semibold">
<Input
placeholder={"Hero-title"}
value={data.find((item) => item.key === "Hero-title")?.value}
onChange={(e: any) =>
handleInputChange("Hero-title", e.target.value)
}
/>
</h2>
<p className="text-lg leading-relaxed m-4 text-blueGray-500">
<Input.TextArea
placeholder={"Hero-p"}
value={data.find((item) => item.key === "Hero-p")?.value}
onChange={(e: any) =>
handleInputChange("Hero-p", e.target.value)
}
/>
</p>
</div>
</div>
<div className="flex flex-wrap">
<div className="w-full md:w-6/12 lg:w-3/12 lg:mb-0 mb-12 px-4">
<div className="px-6">
<img
alt="..."
src="/images/Reem.jpg"
className="shadow-lg rounded-full mx-auto max-w-120-px"
/>
<div className="pt-6 text-center">
<h5 className="text-xl font-bold">REEM HASAN</h5>
<p className="mt-1 text-sm text-blueGray-400 uppercase font-semibold">
Web Developer
</p>
</div>
</div>
</div>
<div className="w-full md:w-6/12 lg:w-3/12 lg:mb-0 mb-12 px-4">
<div className="px-6">
<img
alt="..."
src="/images/Ali.jpg"
className="shadow-lg rounded-full mx-auto max-w-120-px"
/>
<div className="pt-6 text-center">
<h5 className="text-xl font-bold">ALI MOUHAMMAD</h5>
<p className="mt-1 text-sm text-blueGray-400 uppercase font-semibold">
Marketing Specialist
</p>
</div>
</div>
</div>
<div className="w-full md:w-6/12 lg:w-3/12 lg:mb-0 mb-12 px-4">
<div className="px-6">
<img
alt="..."
src="/images/Bashar.jpg"
className="shadow-lg rounded-full mx-auto max-w-120-px"
/>
<div className="pt-6 text-center">
<h5 className="text-xl font-bold">BASHAR HUSSAIN</h5>
<p className="mt-1 text-sm text-blueGray-400 uppercase font-semibold">
UI/UX Designer
</p>
</div>
</div>
</div>
<div className="w-full md:w-6/12 lg:w-3/12 lg:mb-0 mb-12 px-4">
<div className="px-6">
<img
alt="..."
src="/images/Nour.jpg"
className="shadow-lg rounded-full mx-auto max-w-120-px"
/>
<div className="pt-6 text-center">
<h5 className="text-xl font-bold">NOUR</h5>
<p className="mt-1 text-sm text-blueGray-400 uppercase font-semibold">
Founder and CEO
</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section className="pb-20 relative block bg-blueGray-800">
<div
className="bottom-auto top-0 left-0 right-0 w-full absolute pointer-events-none overflow-hidden -mt-20 h-20"
style={{ transform: "translateZ(0)" }}
>
<svg
className="absolute bottom-0 overflow-hidden"
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="none"
version="1.1"
viewBox="0 0 2560 100"
x="0"
y="0"
>
<polygon
className="text-blueGray-800 fill-current"
points="2560 0 2560 100 0 100"
></polygon>
</svg>
</div>
<div className="container mx-auto px-4 lg:pt-24 lg:pb-64">
<div className="flex flex-wrap text-center justify-center">
<div className="w-full lg:w-6/12 px-4">
<h2 className="text-4xl font-semibold text-white">{t("more-info").toUpperCase}</h2>
</div>
</div>
<div className="flex flex-wrap mt-12 justify-center">
<div className="w-full lg:w-3/12 px-4 text-center">
<div className="text-blueGray-800 p-3 w-12 h-12 shadow-lg rounded-full bg-white inline-flex items-center justify-center">
<ExclamationOutlined
style={{ fontSize: "30px", color: "#000" }}
className={"ExclamationCircleOutlined "}
/>
</div>
<h6 className="text-xl mt-5 font-semibold text-white">
<Input
placeholder={"moreInfo-h1"}
value={data.find((item) => item.key === "moreInfo-h1")?.value}
onChange={(e: any) =>
handleInputChange("moreInfo-h1", e.target.value)
}
/>
</h6>
<p className="mt-2 mb-4 text-blueGray-400">
<Input.TextArea
placeholder={"moreInfo-p1"}
value={data.find((item) => item.key === "moreInfo-p1")?.value}
onChange={(e: any) =>
handleInputChange("moreInfo-p1", e.target.value)
}
/>
</p>
</div>
<div className="w-full lg:w-3/12 px-4 text-center">
<div className="text-blueGray-800 p-3 w-12 h-12 shadow-lg rounded-full bg-white inline-flex items-center justify-center">
<ExclamationOutlined
style={{ fontSize: "30px", color: "#000" }}
className={"ExclamationCircleOutlined "}
/>
</div>
<h5 className="text-xl mt-5 font-semibold text-white">
<Input
placeholder={"moreInfo-h2"}
value={data.find((item) => item.key === "moreInfo-h2")?.value}
onChange={(e: any) =>
handleInputChange("moreInfo-h2", e.target.value)
}
/>
</h5>
<p className="mt-2 mb-4 text-blueGray-400">
<Input.TextArea
placeholder={"moreInfo-p2"}
value={data.find((item) => item.key === "moreInfo-p2")?.value}
onChange={(e: any) =>
handleInputChange("moreInfo-p2", e.target.value)
}
/>
</p>
</div>
<div className="w-full lg:w-3/12 px-4 text-center">
<div className="text-blueGray-800 p-3 w-12 h-12 shadow-lg rounded-full bg-white inline-flex items-center justify-center">
<ExclamationOutlined
style={{ fontSize: "30px", color: "#000" }}
className={"ExclamationCircleOutlined "}
/>
</div>
<h5 className="text-xl mt-5 font-semibold text-white">
<Input
placeholder={"moreInfo-h3"}
value={data.find((item) => item.key === "moreInfo-h3")?.value}
onChange={(e: any) =>
handleInputChange("moreInfo-h3", e.target.value)
}
/>
</h5>
<p className="mt-2 mb-4 text-blueGray-400">
<Input.TextArea
placeholder={"moreInfo-p3"}
value={data.find((item) => item.key === "moreInfo-p3")?.value}
onChange={(e: any) =>
handleInputChange("moreInfo-p3", e.target.value)
}
/>
</p>
</div>
</div>
</div>
</section>
<section className="relative block py-24 lg:pt-0 bg-blueGray-800">
<div className="container mx-auto px-4">
<div className="flex flex-wrap justify-center lg:-mt-64 -mt-48">
<div className="w-full lg:w-6/12 px-4">
<div className="relative flex flex-col min-w-0 break-words w-full mb-6 shadow-lg rounded-lg bg-blueGray-200">
<div className="flex-auto p-5 lg:p-10">
<h4 className="text-2xl font-semibold">
Want to work with us?
</h4>
<p className="leading-relaxed mt-1 mb-4 text-blueGray-500">
Complete this form and we will get back to you in 24
hours.
</p>
<div className="relative w-full mb-3 mt-8">
<label
className="block uppercase text-blueGray-600 text-xs font-bold mb-2"
htmlFor="full-name"
>
{t("full-name").toUpperCase()}
</label>
<input
type="text"
className="border-0 px-3 py-3 placeholder-blueGray-300 text-blueGray-600 bg-white rounded text-sm shadow focus:outline-none focus:ring w-full ease-linear transition-all duration-150"
placeholder="Full Name"
value={formData.subject}
onChange={(e) =>
setFormData({ ...formData, subject: e.target.value })
}
/>
</div>
<div className="relative w-full mb-3">
<label
className="block uppercase text-blueGray-600 text-xs font-bold mb-2"
htmlFor="email"
>
{t("email")}
</label>
<input
type="email"
className="border-0 px-3 py-3 placeholder-blueGray-300 text-blueGray-600 bg-white rounded text-sm shadow focus:outline-none focus:ring w-full ease-linear transition-all duration-150"
placeholder="Email"
value={formData.email}
onChange={(e) =>
setFormData({ ...formData, email: e.target.value })
}
/>
</div>
<div className="relative w-full mb-3">
<label
className="block uppercase text-blueGray-600 text-xs font-bold mb-2"
htmlFor="message"
>
{t("message")}
</label>
<textarea
rows="4"
cols="80"
className="border-0 px-3 py-3 placeholder-blueGray-300 text-blueGray-600 bg-white rounded text-sm shadow focus:outline-none focus:ring w-full"
placeholder="Type a message..."
value={formData.body}
onChange={(e) =>
setFormData({ ...formData, body: e.target.value })
}
/>
</div>
<div className="text-center mt-6">
<button
className="bg-blueGray-800 text-white active:bg-blueGray-600 text-sm font-bold uppercase px-6 py-3 rounded shadow hover:shadow-lg outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150"
type="button"
onClick={sendMessage}
>
{t("send")}
</button>
<div>
{sendingStatus == "success" && (
<Alert
message="Message was sent successfully"
type="success"
/>
)}
{sendingStatus == "error" && (
<Alert message="Sending errors" type="error" />
)}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
</>
);
}
import { useState } from "react";
import useTranslation from "next-translate/useTranslation";
import { TranslationFiles } from "@/src/data/core";
import FmsButton from "../../../../shared-library/src/buttons/fms-button";
import { DatePicker, Input, Select } from "antd";
import { FileAddOutlined, UploadOutlined } from "@ant-design/icons";
const SettingProfileContent = () => {
const { t } = useTranslation(TranslationFiles.COMMON);
const [imageSrc, setImageSrc] = useState("/images/Reem.jpg");
const handleImageUpload = (e) => {
const file = e.target.files[0];
const reader = new FileReader();
reader.onloadend = () => {
setImageSrc(reader.result);
};
reader.readAsDataURL(file);
};
return (
<>
<main className="profile-page">
<section className="relative block h-500-px">
<div
className="absolute top-0 w-full h-full bg-center bg-cover"
style={{
backgroundImage:
"url('https://images.unsplash.com/photo-1499336315816-097655dcfbda?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2710&q=80')",
}}
>
<span
id="blackOverlay"
className="w-full h-full absolute opacity-50 bg-black"
></span>
</div>
<div
className="top-auto bottom-0 left-0 right-0 w-full absolute pointer-events-none overflow-hidden h-16"
style={{ transform: "translateZ(0)" }}
>
<svg
className="absolute bottom-0 overflow-hidden"
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="none"
version="1.1"
viewBox="0 0 2560 100"
x="0"
y="0"
>
<polygon
className="text-blueGray-200 fill-current"
points="2560 0 2560 100 0 100"
></polygon>
</svg>
</div>
</section>
<section className="relative py-16 bg-blueGray-200">
<div className="container mx-auto px-4">
<div className="relative flex flex-col min-w-0 break-words bg-white w-full mb-6 shadow-xl rounded-lg -mt-64">
<div className="px-6">
<div className="flex flex-wrap justify-center">
<div className="w-full lg:w-3/12 px-4 lg:order-2 flex justify-center">
<div className="relative">
<label htmlFor="image-upload" className="file-input-label">
<img
alt="..."
src={imageSrc}
className="shadow-xl rounded-full h-auto align-middle border-none absolute -m-16 -ml-20 lg:-ml-16 max-w-150-px"
/>
<div className="add-image-button pd-top">
<FmsButton
type={"secondary"}
className={"pd-top"}
size={"large"}
borderRadius={8}
onclick={
handleImageUpload
}
>
<input
type="file"
id="image-upload"
accept=".jpg,.jpeg,.png"
onChange={handleImageUpload}
// className="hidden"
/>
</FmsButton>
</div>
</label>
</div>
</div>
<div className="w-full lg:w-4/12 px-4 lg:order-3 lg:text-right lg:self-center">
<div className="py-6 px-3 mt-32 sm:mt-0">
<FmsButton
className="bg-blueGray-700 active:bg-blueGray-600 uppercase text-white font-bold hover:shadow-md shadow text-xs px-4 py-2 rounded outline-none focus:outline-none sm:mr-2 mb-1 ease-linear transition-all duration-150"
type="primary"
borderRadius="32"
>
{t("save")}
</FmsButton>
</div>
</div>
<div className="w-full lg:w-4/12 px-4 lg:order-1">
<div className="flex justify-center py-4 lg:pt-4 pt-8">
<div className="mr-4 p-3 text-center">
<span className="text-xl font-bold block uppercase tracking-wide text-blueGray-600">
</span>
<span className="text-sm text-blueGray-400">
</span>
</div>
<div className="pd-top mr-4 p-3 text-center">
<span className=" text-xl font-bold block uppercase tracking-wide text-blueGray-600">
<Select
placeholder={t("gender")}
// value={""}
onChange={(e: any) =>
{}
}
/>
</span>
</div>
<div className="pd-top lg:mr-4 p-3 text-center">
<span className="text-xl font-bold block uppercase tracking-wide text-blueGray-600">
<DatePicker
placeholder={t("start-working-date")}
// value={""}
onChange={(e: any) =>
{}}/>
</span>
</div>
</div>
</div>
</div>
<div className="text-center mt-12">
<h3 className="text-4xl font-semibold leading-normal mb-2 text-blueGray-700 mb-2">
<Input
className={"med-size"}
placeholder={"name"}
// value={""}
onChange={(e: any) =>
{}
}/>
</h3>
<div className="text-sm leading-normal mt-0 mb-2 text-blueGray-400 font-bold uppercase">
<i className="fas fa-map-marker-alt text-lg text-blueGray-400"></i>
<Input
className={"med-size"}
placeholder={"country"}
// value={""}
onChange={(e: any) =>
{}
}/>
</div>
</div>
<div className="mt-10 py-10 border-t border-blueGray-200 text-center">
<div className="flex flex-wrap justify-center">
<div className="w-full lg:w-9/12 px-4">
<p className="mb-4 text-lg leading-relaxed text-blueGray-700">
<Input
placeholder={"role"}
// value={""}
onChange={(e: any) =>
{}
}/>
</p>
<div className="mb-2 text-lightBlue-500 mt-10">
<i className="fas fa-briefcase mr-2 text-lg text-blueGray-400"></i>
{t("description")}
</div>
<div className="mb-2 text-lightBlue-500">
<i className="fas fa-university mr-2 text-lg "></i>
<Input.TextArea
placeholder={"description"}
// value={""}
onChange={(e: any) =>
{}
}/>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
</>
);
};
export default SettingProfileContent;
...@@ -9,6 +9,7 @@ import { DataSource } from "./data-source"; ...@@ -9,6 +9,7 @@ import { DataSource } from "./data-source";
import ShowDetailsPopup from "./show-details-popup"; import ShowDetailsPopup from "./show-details-popup";
import axios from "axios"; import axios from "axios";
import { Spin } from "antd"; import { Spin } from "antd";
import { fetchData } from "@/src/services/traps-service";
export default function ShowTraps() { export default function ShowTraps() {
const { t } = useTranslation(TranslationFiles.COMMON); const { t } = useTranslation(TranslationFiles.COMMON);
...@@ -21,80 +22,64 @@ export default function ShowTraps() { ...@@ -21,80 +22,64 @@ export default function ShowTraps() {
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
useEffect(() => { useEffect(() => {
setLoading(true); setLoading(true);
const fetchData = async () => { fetchData().then((transformedData) => {
axios if(transformedData)
.get("http://192.168.93.198:6647/api/rethink/data") setData1(transformedData);
.then((res: any) => { if(new_val!=null){
if (res.data) { if (new_val.flag == '0') {
// console.log(res.data);
const transformedData = res.data.map((item: any) => ({ console.log(new_val);
id: item.id, setData1((prevData:any) => [...prevData, new_val]);
timestamp: item.timestamp, setNewVal(null);
agentAddress: item.agentAddress,
severity: item.severity, }
specificTrap: item.specificTrap, else if (new_val.flag==-1){
genericTrap: item.genericTrap, setData1((prevData:any) => prevData.filter((item:any) => item.id !== new_val.id));
variableBindings: item.variableBindings, }
})); }
setData1(transformedData); });
// console.log(data1);
if(new_val!=null){
if (new_val.flag == '0') {
// const transformedData2 =data.map((newData:any)=>({
// id: newData.id,
// timestamp: newData.timestamp,
// agentAddress: newData.agentAddress,
// severity: newData.severity,
// specificTrap: newData.specificTrap,
// genericTrap: newData.genericTrap,
// variableBindings: newData.variableBindings,
// }))
console.log(new_val);
setData1((prevData:any) => [...prevData, new_val]);
setNewVal(null);
// transformedData2.forEach((item:any) => {
// setData1((prevData:any) => [...prevData, item]);
// });
}
else if (new_val.flag==-1){
setData1((prevData:any) => prevData.filter((item:any) => item.id !== new_val.id));
}
}
}
else {
alert("Error");
}
})
.catch((err: any) => console.log(err));
};
fetchData();
setLoading(false); setLoading(false);
}, [new_val]); }, [new_val]);
// useEffect(() => { // useEffect(() => {
// if (!websocket) { // setLoading(true);
// return; // const fetchData = async () => {
// } // axios
// .get("http://192.168.93.198:6647/api/rethink/data")
// websocket.onmessage = function (event) { // .then((res: any) => {
// const message = JSON.parse(event.data); // if (res.data) {
// const transformedData = res.data.map((item: any) => ({
// const newData = message.new_val; // id: item.id,
// const transformedData = { // timestamp: item.timestamp,
// id: newData.id, // agentAddress: item.agentAddress,
// agentAddress: newData.agentAddress, // severity: item.severity,
// timestamp: newData.timestamp, // specificTrap: item.specificTrap,
// severity: newData.severity, // genericTrap: item.genericTrap,
// specificTrap: newData.specificTrap, // variableBindings: item.variableBindings,
// genericTrap: newData.genericTrap, // }));
// variableBindings: newData.variableBindings, // setData1(transformedData);
// }; // if(new_val!=null){
// setData((prevData: any) => [...prevData, transformedData]); // if (new_val.flag == '0') {
// console.log(new_val);
// setData1((prevData:any) => [...prevData, new_val]);
// setNewVal(null);
// }
// else if (new_val.flag==-1){
// setData1((prevData:any) => prevData.filter((item:any) => item.id !== new_val.id));
// }
// }
// }
// else {
// alert("Error");
// }
// })
// .catch((err: any) => console.log(err));
// }; // };
// fetchData();
// setLoading(false);
// }, [new_val]);
// }, [websocket]);
return ( return (
<div> <div>
<Spin spinning={loading}> <Spin spinning={loading}>
......
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import FmsButton from "../../../../shared-library/src/buttons/fms-button"; import FmsButton from "../../../../shared-library/src/buttons/fms-button";
export const Columns = [ export function getColumns(setModalProps:any) {
return [
{ {
title: "Name", title: "Name",
dataIndex: "name", dataIndex: "name",
...@@ -19,20 +20,14 @@ export const Columns = [ ...@@ -19,20 +20,14 @@ export const Columns = [
{ {
title: "Actions", title: "Actions",
key: "actions", key: "actions",
render: (text:any, record:any) => ( render: (text: any, record: any) => (
<span> <FmsButton
<EditButton id={record.id} /> type="primary"
</span> onClick={() => setModalProps({ isOpen: true, data: null})}
>
{"edit"}
</FmsButton>
), ),
}, },
]; ];
const EditButton = ({ id }) => {
const router = useRouter(); // Get the router object from useRouter
const handleEditClick = () => {
router.push(`/edit-user`); // Navigate to the edit page URL
};
return <FmsButton type = "link" onClick={handleEditClick}>Edit</FmsButton>;
}; };
\ No newline at end of file
import React, {useState, useEffect} from "react";
import { Col, DatePicker, Input, Modal, Row, Select } from "antd";
import useTranslation from "next-translate/useTranslation";
import { TranslationFiles } from "@/src/data/core";
interface Props {
modalProps: any;
setModalProps: any;
}
export default function EditUserPopup({ modalProps, setModalProps }: Props) {
const { t } = useTranslation(TranslationFiles.COMMON);
const [isModalOpen,setIsModalOpen] = useState(false);
const handleCancel = () => {
setModalProps(false,null);
};
useEffect(() => {
setIsModalOpen(modalProps.isOpen);
}, [modalProps])
return (
<Modal title="edit-user" visible={isModalOpen} onOk={handleCancel} onCancel={handleCancel}>
<Row gutter={[12, 12]}>
<Col span={24}>
<Input />
</Col>
<Col span={24}>
<Input />
</Col>
<Col span={24}>
<Select />
</Col>
<Col span={24}>
<Select />
</Col>
<Col span={24}>
<Select />
</Col>
<Col span={24}>
<DatePicker />
</Col>
<Col span={24}>
<Input.TextArea />
</Col>
</Row>
</Modal>
);
}
\ No newline at end of file
...@@ -3,29 +3,34 @@ import { useState } from "react"; ...@@ -3,29 +3,34 @@ import { useState } from "react";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { TranslationFiles } from "@/src/data/core"; import { TranslationFiles } from "@/src/data/core";
import FmsTable from "../../../../shared-library/src/tables/fms-table"; import FmsTable from "../../../../shared-library/src/tables/fms-table";
import { Columns } from "./columns"; import { getColumns } from "./columns";
import { DataSource } from "./data-source"; import { DataSource } from "./data-source";
import EditUserPopup from "./edit-user-popup"
export default function ShowUsers() { export default function ShowUsers() {
const { t } = useTranslation(TranslationFiles.COMMON); const { t } = useTranslation(TranslationFiles.COMMON);
const [columns, setColumns] = useState({ const [modalProps, setModalProps] = useState({
columns: Columns isOpen: false,
data: null,
}); });
const [data, setData] = useState(DataSource); const [data, setData] = useState(DataSource);
return ( return (
<div> <div>
<FmsTable <FmsTable
title={t("users")} title={t("users")}
columns={columns.columns} columns={getColumns(setModalProps)}
data={data} data={data}
rowSelection={{ rowSelection={{
type: "checkbox", type: "checkbox",
}} }}
t={t} t={t}
setData= {setData} setData= {setData}
setColumns={setColumns}
pageSizeOptions={["10", "20", "50"]} pageSizeOptions={["10", "20", "50"]}
defaultPageSize={10} defaultPageSize={10}
/> />
<EditUserPopup
modalProps={modalProps}
setModalProps={setModalProps}
/>
</div> </div>
); );
} }
import axios from "axios";
import {SettingURL} from "../data/constant/app-constant";
export const fetchAboutSettingData = async () => {
try {
const response = await axios.get(SettingURL+"/data");
if (response.data) {
const data = response.data.map((item:any) => ({
id: item.id,
key: item.key,
value: item.value,
}));
return data;
} else {
alert("Error");
}
} catch (error) {
console.log(error);
}
};
export const putAboutSettingData = async (data:any) => {
try {
const response = await axios.post(SettingURL+"/post",data);
console.log(response.data);
} catch (error) {
console.error(error);
}
};
export const deleteByKeyAboutSettingData = async (key:any) => {
try {
const response = await axios.delete(SettingURL+`/delete/${key}`);
console.log(response.data);
} catch (error) {
console.error(error);
}
};
export const UpdateAboutSettingData = async (data:any) => {
try {
const response = await axios.put(SettingURL+`/update`, data);
console.log(response);
return response;
} catch (error) {
console.error(error);
return error;
}
};
export const sendEmailMessage = async (data:any) => {
try {
const response = await axios.post(SettingURL+`/send-message`, data);
return response.data;
} catch (error) {
return error;
}
};
\ No newline at end of file
import axios from "axios";
import {TrapURL} from "../data/constant/app-constant";
export const fetchData = async () => {
try {
const response = await axios.get(TrapURL);
if (response.data) {
const transformedData = response.data.map((item:any) => ({
id: item.id,
timestamp: item.timestamp,
agentAddress: item.agentAddress,
severity: item.severity,
specificTrap: item.specificTrap,
genericTrap: item.genericTrap,
variableBindings: item.variableBindings,
}));
return transformedData;
} else {
alert("Error");
}
} catch (error) {
console.log(error);
}
};
\ No newline at end of file
...@@ -149,21 +149,47 @@ a { ...@@ -149,21 +149,47 @@ a {
color: #e2d303; color: #e2d303;
font-weight: 1000; font-weight: 1000;
// font-size: larger; // font-size: larger;
font-family: 'Times New Roman', Times, serif; font-family: "Times New Roman", Times, serif;
} }
.severity-ERROR { .severity-ERROR {
color: #ff2306; color: #ff2306;
font-weight: 1000; font-weight: 1000;
// font-size: larger; // font-size: larger;
font-family: 'Times New Roman', Times, serif; font-family: "Times New Roman", Times, serif;
} }
.severity-INFO { .severity-INFO {
color: #06ff83; color: #06ff83;
font-weight: 1000; font-weight: 1000;
// font-size: larger; // font-size: larger;
font-family: 'Times New Roman', Times, serif; font-family: "Times New Roman", Times, serif;
} }
.ExclamationCircleOutlined { .ExclamationCircleOutlined {
margin-bottom: 2px; margin-bottom: 2px;
}
.pd {
margin-bottom: 20px;
}
.pd-top {
margin-top: 20px;
}
.med-size {
width: 20vw;
}
.add-image-button {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
margin: 15px;
margin-top: 40px;
}
.file-input-label input[type="file"] {
// margin: 20px;
cursor: pointer;
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment