diff --git a/components/Empty.js b/components/Empty.js new file mode 100644 index 00000000..8ab0418a --- /dev/null +++ b/components/Empty.js @@ -0,0 +1,21 @@ +import React from 'react' +import Link from 'next/link'; + +const Empty = () => { + + return ( +
+
+ empty +
+

ความผิดพลาด 401 ข้อมูลไม่พร้อมใช้งาน

+

โปรดกลับสู่หน้าแรก

+
+
+ +
หน้าแรก
+ +
+ ) +} +export default Empty; \ No newline at end of file diff --git a/components/about.js b/components/about.js new file mode 100644 index 00000000..0f9cc5ab --- /dev/null +++ b/components/about.js @@ -0,0 +1,92 @@ +import React, { useState } from 'react'; +import { useMediaQuery } from 'react-responsive'; + +const About = () => { + + const isSmallScreen = useMediaQuery({ maxDeviceWidth: 575.98 }) + + const [data, setData] = useState([ + { + title: "ระดับเริ่มต้น (Aging society)", + text: "สังคมที่มีประชากรอายุ 60 ปีขึ้นไปมากกว่าร้อยละ 10 ของประชากรทั้งประเทศ", + subtext: "หรือมีประชากรอายุตั้งแต่ 65 ปีมากกว่าร้อยละ 7 ของประชากรทั้งประเทศ" + }, + { + title: "ระดับสมบูรณ์ (Aged society)", + text: "สังคมที่มีประชากรอายุ 60 ปีขึ้นไป มากกว่าร้อยละ 20 ของประชากรทั้งประเทศ", + subtext: "หรือมีประชากรอายุตั้งแต่ 65 ปี มากกว่าร้อยละ 14 ของประชากรทั้งประเทศ" + }, + { + title: "ระดับสูง (Super-aged society)", + text: "สังคมที่มีประชากรอายุ 65 ปีขึ้นไปมากกว่า ร้อยละ 20 ของประชากรทั้งประเทศ", + subtext: "" + }, + ]) + + return ( +
+
+ { + isSmallScreen ? +
+
+

สังคมผู้สูงอายุ
และระดับของการเข้าสู่สังคมผู้สูงอายุ

+
ถูกแบ่งออกเป็น 3 ระดับ
+
+ +
+ +
+ { + data.map((item, index) => ( +
+
{item.title}
+
{item.text}
+
{item.subtext}
+
+ )) + } +
+
อ่านต่อ
+ + arrow-icon + +
+
+
+
+ : +
+
+

สังคมผู้สูงอายุ และระดับของการเข้าสู่สังคมผู้สูงอายุ

+

ถูกแบ่งออกเป็น 3 ระดับ

+
+ +
+ +
+ { + data.map((item, index) => ( +
+
{item.title}
+
{item.text}
+
{item.subtext}
+
+ )) + } +
+
อ่านต่อ
+ + arrow-icon + +
+ +
+
+
+ } +
+
+ ) +} +export default About; \ No newline at end of file diff --git a/components/agency.js b/components/agency.js new file mode 100644 index 00000000..760c222f --- /dev/null +++ b/components/agency.js @@ -0,0 +1,117 @@ +import React, { useState } from 'react'; +import { useMediaQuery } from 'react-responsive'; +import { Steps } from 'antd'; +const { Step } = Steps; + +const Agency = () => { + + const isTablet = useMediaQuery({ maxDeviceWidth: 1025 }) + const isMobile = useMediaQuery({ maxDeviceWidth: 768 }) + const isSmallScreen = useMediaQuery({ maxDeviceWidth: 575.98 }) + + const [card, setCard] = useState([ + { + img: "/static/box1.jpg", + box: "1", + content: "ตรวจเช็คคุณสมบัติ", + description: "สัญชาติไทย อายุ 59 ปีบริบูรณ์ เเละไม่เป็นผู้ได้รับสิทธิประโยชน์จากหน่วยงานรัฐ หรือวิสาหกิจ", + }, + { + img: "/static/box2.jpg", + box: "2", + content: "เตรียมเอกสาร", + description: "บัตรประชาชน ทะเบียนบ้าน สมุดบัญชีเงินฝาก", + }, + { + img: "/static/box3.jpg", + box: "3", + content: "ยื่นคำขอลงทะเบียน", + description: "ที่สำนักงานเขต หรือเทศบาล ที่มีชื่ออยู่ในทะเบียนบ้าน", + }, + { + img: "/static/box4.jpg", + box: "4", + content: "รออนุมัติ เพื่อรับเงิน", + description: `รับเป็นเงินสดหรือโอนเข้าบัญชีธนาคารด้วยตนเองหรือโดยผู้เเเทน` + }, + ]) + + return ( +
+ { + isSmallScreen ? + +
+

วิธีการลงทะเบียนรับเบี้ยยังชีพผู้สูงอายุ

+
+
โดยการลงทะเบียนรับเบี้ยยังชีพผู้สูงอายุ
+
ไม่จำเป็นต้องไปลงทะเบียนใหม่ทุกปี ลงเพียงครั้งเดียวก็ได้รับสิทธิไปตลอด
+
*เว้นแต่กรณีที่ผู้สูงอายุย้ายที่อยู่อาศัย
+
+
+
+ + { + card.map((items, index) => ( + + )) + } + +
+
+ : + isMobile || isTablet ? + +
+

วิธีการลงทะเบียนรับเบี้ยยังชีพผู้สูงอายุ

+
+
โดยการลงทะเบียนรับเบี้ยยังชีพผู้สูงอายุ
+
ไม่จำเป็นต้องไปลงทะเบียนใหม่ทุกปี ลงเพียงครั้งเดียวก็ได้รับสิทธิไปตลอด
+
*เว้นแต่กรณีที่ผู้สูงอายุย้ายที่อยู่อาศัย
+
+
+
+ + { + card.map((items, index) => ( + + )) + } + + img-agency +
+
+ : + +
+

วิธีการลงทะเบียนรับเบี้ยยังชีพผู้สูงอายุ

+ + + +
+
โดยการลงทะเบียนรับเบี้ยยังชีพผู้สูงอายุ
+
ไม่จำเป็นต้องไปลงทะเบียนใหม่ทุกปี ลงเพียงครั้งเดียวก็ได้รับสิทธิไปตลอด
+
*เว้นแต่กรณีที่ผู้สูงอายุย้ายที่อยู่อาศัย
+
+
+
+ { + card.map((items, index) => ( +
+ {`box${index}`} +
+
{items.box}
+
+

{items.content}

+
+ )) + } +
+
+ + } + +
+ ) +} +export default Agency; \ No newline at end of file diff --git a/components/chart/barChart.js b/components/chart/barChart.js index f355f4cb..d9f19b1b 100644 --- a/components/chart/barChart.js +++ b/components/chart/barChart.js @@ -1,15 +1,26 @@ import React, { useState, useEffect } from 'react' import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' - +import { useMediaQuery } from 'react-responsive'; const Barchart = () => { + const isSmallScreen = useMediaQuery({ maxWidth: 768 }) + const [options, setOptions] = useState({ title: { text: 'สถานภาพของผู้สูงอายุ', align: 'left' }, + responsive: [{ + breakpoint: 575.98, + options: { + legend: { + position: "bottom", + offsetY: 5 + }, + }, + }], chart: { stacked: true, toolbar: { @@ -19,16 +30,6 @@ const Barchart = () => { enabled: true } }, - responsive: [{ - breakpoint: 1000, - options: { - legend: { - position: 'bottom', - offsetX: -10, - offsetY: 0 - } - } - }], plotOptions: { bar: { horizontal: false, @@ -47,11 +48,27 @@ const Barchart = () => { return val + " คน" } } + }, + xaxis: { + categories: ["โสด", + "สมรส", + "หม้าย", + "หย่าร้าง", + "เเยกกันอยู่", + "อื่นๆ"] } }) - const [series, setSeries] = useState([]) - const [dataName, setDataName] = useState([]) + const [series, setSeries] = useState([ + { + name: 'เพศชาย', + data: [50, 50, 50, 50, 50] + }, + { + name: 'เพศหญิง', + data: [50, 50, 50, 50, 50] + } + ]) useEffect(() => { fetchData() @@ -67,7 +84,6 @@ const Barchart = () => { const namelist = async (token, value) => { try { var list = await Sheetapi.getSheet(token, value) - setDataName(_.flatten(list)) setOptions({ xaxis: { @@ -93,52 +109,25 @@ const Barchart = () => { return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
-
- + { + isSmallScreen ? + + : + + } + ) } - export default Barchart; \ No newline at end of file +export default Barchart; \ No newline at end of file diff --git a/components/chart/barEconomy.js b/components/chart/barEconomy.js index a309f9de..772fb8be 100644 --- a/components/chart/barEconomy.js +++ b/components/chart/barEconomy.js @@ -1,24 +1,26 @@ import React, { useState, useEffect } from 'react' import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; const BarEconomy = () => { + const isSmallScreen = useMediaQuery({ maxWidth: 768 }) + const [options, setOptions] = useState({ title: { text: 'รายได้เฉลี่ยต่อเดือนของประชากรผู้สูงอายุ', align: 'left' }, + chart: { + type: 'bar', + stacked: true, + }, plotOptions: { bar: { - horizontal: false, - columnWidth: '60%', + horizontal: true, }, }, - responsive: [{ - breakpoint: 150, - - }], dataLabels: { enabled: false }, @@ -36,11 +38,22 @@ const BarEconomy = () => { return val + " คน" } } + }, + xaxis: { + categories: ["ไม่มีรายได้", "น้อยกว่า 1,000 บาท", "1,001-3,000 บาท", "3,100-5,000 บาท", "5,001-10,000 บาท", "10,001-15,000 บาท", "15,001-20,000 บาท", "20,001-25,000 บาท", "25,000 บาท ขึ้นไป"] } }) - const [series, setSeries] = useState([]) - const [dataName, setDataName] = useState([]) + const [series, setSeries] = useState([ + { + name: 'เพศชาย', + data: [50, 50, 50, 50, 50] + }, + { + name: 'เพศหญิง', + data: [50, 50, 50, 50, 50] + } + ]) useEffect(() => { fetchData() @@ -56,7 +69,6 @@ const BarEconomy = () => { const namelist = async (token, value) => { try { var list = await Sheetapi.getSheet(token, value) - setDataName(_.flatten(list)) setOptions({ xaxis: { @@ -82,212 +94,25 @@ const BarEconomy = () => { return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isSmallScreen ? + + : + + }
) } - - - -// class BarEconomy extends React.Component { -// constructor(props) { -// super(props); - -// this.state = { -// options: {}, -// datalist: [], -// series: [], -// dataMan: [], -// dataWoman: [], - -// } -// } - -// async componentDidMount() { -// let userOauth = JSON.parse(localStorage.getItem("myOauth")) -// this.access_token = userOauth.data.access_token -// await this.listName('ข้อมูลการวิเคราะห์ทางสถิติ!H47:H55') -// await this.listData() -// } - -// listName = async (value) => { -// try { -// this.list = await Sheetapi.getSheet(this.access_token, value) -// for (let i = 0; i < this.list.length; i++) { - -// this.setState(prevState => ({ -// datalist: [...prevState.datalist, this.list[i][0]], -// })) -// } - -// this.setState({ -// options: { -// title: { -// text: 'รายได้เฉลี่ยต่อเดือน', -// align: 'left' -// }, -// plotOptions: { -// bar: { -// horizontal: false, -// columnWidth: '60%', -// // endingShape: 'rounded' -// }, -// }, -// responsive: [{ -// breakpoint: 150, - -// }], -// dataLabels: { -// enabled: false -// }, -// stroke: { -// show: true, -// width: 2, -// colors: ['transparent'] -// }, -// xaxis: { -// categories: this.state.datalist, -// }, -// fill: { -// opacity: 1 -// }, -// tooltip: { -// y: { -// formatter: function (val) { -// return val + " คน" -// } -// } -// } -// } -// }) - -// } catch (err) { -// console.log(err); -// } -// } - -// listData = async () => { -// try { - -// this.man = await Sheetapi.getSheet(this.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!J47:J55') -// this.woman = await Sheetapi.getSheet(this.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!K47:K55') - -// for (let i = 0; i < this.man.length; i++) { - -// this.setState(prevState => ({ -// dataMan: [...prevState.dataMan, this.man[i][0]], -// })) -// } - -// for (let i = 0; i < this.woman.length; i++) { - -// this.setState(prevState => ({ -// dataWoman: [...prevState.dataWoman, this.woman[i][0]], -// })) -// } - -// this.setState({ -// series: [{ name: "เพศชาย", data: this.state.dataMan }, { name: "เพศหญิง", data: this.state.dataWoman }], -// }) - -// } catch (err) { -// console.log(err); -// } -// } - -// render() { -// return ( -// -//
-// -//
- -//
-// -//
- -//
-// -//
- -//
-// -//
- -//
-// -//
-//
- -// ) -// } -// } export default BarEconomy; \ No newline at end of file diff --git a/components/chart/barEconomy2.js b/components/chart/barEconomy2.js index fe0fe1ad..a6d145de 100644 --- a/components/chart/barEconomy2.js +++ b/components/chart/barEconomy2.js @@ -1,9 +1,12 @@ import React, { useState, useEffect } from 'react' import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; const BarEconomy2 = () => { + const isSmallScreen = useMediaQuery({ maxWidth: 768 }) + const [options, setOptions] = useState({ title: { text: 'ที่มาของรายได้ของประชากรผู้สูงอายุ', @@ -12,19 +15,6 @@ const BarEconomy2 = () => { plotOptions: { bar: { horizontal: true } }, - responsive: [{ - breakpoint: 1000, - options: { - plotOptions: { - bar: { - horizontal: false - } - }, - legend: { - position: "bottom" - } - } - }], dataLabels: { enabled: false }, stroke: { show: true, @@ -37,10 +27,21 @@ const BarEconomy2 = () => { return val + " คน" } } + }, + xaxis: { + categories: ["เบี้ยยังชีพผู้สูงอายุ/ผู้พิการ/ผู้ป่วย", "ประกอบอาชีพด้วยตนเอง", "ลูกหลาน/ผู้อื่นให้"] } }) - const [series, setSeries] = useState([]) - const [dataName, setDataName] = useState([]) + const [series, setSeries] = useState([ + { + name: 'เพศชาย', + data: [50, 50, 50, 50, 50] + }, + { + name: 'เพศหญิง', + data: [50, 50, 50, 50, 50] + } + ]) useEffect(() => { fetchData() @@ -56,7 +57,6 @@ const BarEconomy2 = () => { const namelist = async (token, value) => { try { var list = await Sheetapi.getSheet(token, value) - setDataName(_.flatten(list)) setOptions({ xaxis: { @@ -81,212 +81,25 @@ const BarEconomy2 = () => { return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isSmallScreen ? + + : + + }
) } - - -// class BarEconomy2 extends React.Component { -// constructor(props) { -// super(props); - -// this.state = { -// options: {}, -// datalist: [], -// series: [], -// dataMan: [], -// dataWoman: [], - -// } -// } - -// async componentDidMount() { -// let userOauth = JSON.parse(localStorage.getItem("myOauth")) -// this.access_token = userOauth.data.access_token -// await this.listName('ข้อมูลการวิเคราะห์ทางสถิติ!N47:N49') -// await this.listData() -// } - -// listName = async (value) => { -// try { -// this.list = await Sheetapi.getSheet(this.access_token, value) -// for (let i = 0; i < this.list.length; i++) { - -// this.setState(prevState => ({ -// datalist: [...prevState.datalist, this.list[i][0]], -// })) -// } - -// this.setState({ -// options: { -// title: { -// text: 'ที่มาของรายได้', -// align: 'left' -// }, -// plotOptions: { -// bar: { horizontal: true } -// }, -// responsive: [{ -// breakpoint: 1000, -// options: { -// plotOptions: { -// bar: { -// horizontal: false -// } -// }, -// legend: { -// position: "bottom" -// } -// } -// }], -// dataLabels: { enabled: false }, -// stroke: { -// show: true, -// width: 1, -// colors: ['#fff'] -// }, - -// xaxis: { -// categories: this.state.datalist, -// }, -// tooltip: { -// y: { -// formatter: function (val) { -// return val + " คน" -// } -// } -// } -// } -// }) - -// } catch (err) { -// console.log(err); -// } -// } - -// listData = async () => { -// try { - -// this.man = await Sheetapi.getSheet(this.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!P47:P49') -// this.woman = await Sheetapi.getSheet(this.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!Q47:Q49') - -// for (let i = 0; i < this.man.length; i++) { - -// this.setState(prevState => ({ -// dataMan: [...prevState.dataMan, this.man[i][0]], -// })) -// } - -// for (let i = 0; i < this.woman.length; i++) { - -// this.setState(prevState => ({ -// dataWoman: [...prevState.dataWoman, this.woman[i][0]], -// })) -// } - -// this.setState({ -// series: [{ name: "เพศชาย", data: this.state.dataMan }, { name: "เพศหญิง", data: this.state.dataWoman }], -// }) - -// } catch (err) { -// console.log(err); -// } -// } - -// render() { -// return ( -// -//
-// -//
- -//
-// -//
- -//
-// -//
- -//
-// -//
- -//
-// -//
-//
- -// ) -// } -// } export default BarEconomy2; \ No newline at end of file diff --git a/components/chart/barEconomy3.js b/components/chart/barEconomy3.js index 28ae1c0b..80f52b46 100644 --- a/components/chart/barEconomy3.js +++ b/components/chart/barEconomy3.js @@ -1,30 +1,19 @@ -import React, { useState, useEffect } from 'react'; +import React, { useState, useEffect } from 'react' import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; const BarEconomy = () => { - const [options, setOptions] = useState({ + const isSmallScreen = useMediaQuery({ maxWidth: 768 }) + const [options, setOptions] = useState({ title: { text: 'รายจ่ายของประชากรผู้สูงอายุ', align: 'left' }, plotOptions: { - bar: { horizontal: true } + bar: { horizontal: false } }, - responsive: [{ - breakpoint: 1000, - options: { - plotOptions: { - bar: { - horizontal: false - } - }, - legend: { - position: "bottom" - } - } - }], dataLabels: { enabled: false }, tooltip: { y: { @@ -33,9 +22,20 @@ const BarEconomy = () => { } } }, + xaxis: { + categories: ["เพียงพอต่อการใช้จ่าย", "พออยู่ได้", "ไม่เพียงพอต่อการใช้จ่าย"] + } }) - const [series, setSeries] = useState([]) - const [dataName, setDataName] = useState([]) + const [series, setSeries] = useState([ + { + name: 'เพศชาย', + data: [50, 50, 50, 50, 50] + }, + { + name: 'เพศหญิง', + data: [50, 50, 50, 50, 50] + } + ]) useEffect(() => { fetchData() @@ -51,7 +51,6 @@ const BarEconomy = () => { const namelist = async (token, value) => { try { var list = await Sheetapi.getSheet(token, value) - setDataName(_.flatten(list)) setOptions({ xaxis: { @@ -75,51 +74,24 @@ const BarEconomy = () => { } return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isSmallScreen ? + + : + + }
) } diff --git a/components/chart/barHospital.js b/components/chart/barHospital.js index 55636139..b5c3ee32 100644 --- a/components/chart/barHospital.js +++ b/components/chart/barHospital.js @@ -1,31 +1,16 @@ import React, { useState, useEffect } from 'react'; -import Chart from 'react-apexcharts' -import Sheetapi from '../../config/api' - +import Chart from 'react-apexcharts'; +import Sheetapi from '../../config/api'; +import { useMediaQuery } from 'react-responsive'; const BarHospital = () => { + const isSmallScreen = useMediaQuery({ maxWidth: 768 }) const [options, setOptions] = useState({ title: { text: 'สถานพยาบาลที่ใช้ประจำของผู้สูงอายุ', align: 'left' }, - plotOptions: { - bar: { horizontal: true } - }, - responsive: [{ - breakpoint: 1000, - options: { - plotOptions: { - bar: { - horizontal: false - } - }, - legend: { - position: "bottom" - } - } - }], dataLabels: { enabled: false }, tooltip: { y: { @@ -33,10 +18,17 @@ const BarHospital = () => { return val + " คน" } } - } + }, + legend: { + position: 'bottom' + }, + colors: ['#2196f3', '#00d084', '#ffc107', + '#eb144c', '#673ab7', '#ff6900', '#455a64', '#f44336'], + + labels: ["โรงพยาบาลส่งเสริมสุขภาพกะทู้", "โรงพยาบาลป่าตอง", "โรงพยาบาลวชิระภูเก็ต", "โรงพยาบาลเอกชน", "คลินิกเอกชน", "ซื้อยาทานเอง", "อื่นๆ", "มากกว่า 1 เเหล่ง"] }) - const [series, setSeries] = useState([]) - const [dataName, setDataName] = useState([]) + + const [series, setSeries] = useState([20, 20, 20, 20]) useEffect(() => { fetchData() @@ -46,30 +38,27 @@ const BarHospital = () => { let userOauth = await JSON.parse(localStorage.getItem("myOauth")) await namelist(userOauth.data.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!V74:V81') - await listData(userOauth.data.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!X74:X81', 'ข้อมูลการวิเคราะห์ทางสถิติ!Y74:Y81') + await listData(userOauth.data.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!W74:W81') } const namelist = async (token, value) => { try { var list = await Sheetapi.getSheet(token, value) - setDataName(_.flatten(list)) setOptions({ - xaxis: { - categories: _.flatten(list), - } + labels: _.flatten(list) }) } catch (err) { console.log(err); } } - const listData = async (token, value1, value2) => { + const listData = async (token, value) => { try { - var man = await Sheetapi.getSheet(token, value1) - var woman = await Sheetapi.getSheet(token, value2) - setSeries([{ name: "เพศชาย", data: _.flatten(man) }, { name: "เพศหญิง", data: _.flatten(woman) }]) + var result = await Sheetapi.getSheet(token, value) + var data = _.flatten(result).map(Number) + setSeries(data) } catch (err) { console.log(err); } @@ -77,51 +66,24 @@ const BarHospital = () => { return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isSmallScreen ? + + : + + }
) } diff --git a/components/chart/barHospital2.js b/components/chart/barHospital2.js index b77106dd..fb85d94c 100644 --- a/components/chart/barHospital2.js +++ b/components/chart/barHospital2.js @@ -1,14 +1,22 @@ import React, { useState, useEffect } from 'react'; -import Chart from 'react-apexcharts' -import Sheetapi from '../../config/api' +import Chart from 'react-apexcharts'; +import Sheetapi from '../../config/api'; +import { useMediaQuery } from 'react-responsive'; const BarHospital2 = () => { + + const isTablet = useMediaQuery({ minWidth: 768 }) + const isSmallScreen = useMediaQuery({ maxWidth: 768 }) + const [options, setOptions] = useState({ title: { text: 'โรคประจำตัวของผู้สูงอายุ', align: 'left' }, + plotOptions: { + bar: { horizontal: true } + }, chart: { stacked: true, toolbar: { @@ -19,39 +27,28 @@ const BarHospital2 = () => { } }, dataLabels: { enabled: false }, - responsive: [{ - breakpoint: 1000, - options: { - legend: { - position: 'bottom', - offsetX: -10, - offsetY: 0 - } - } - }], - plotOptions: { - bar: { - horizontal: false, - }, - }, - legend: { - position: 'top', - offsetY: 40 - }, - fill: { - opacity: 1 - }, tooltip: { y: { formatter: function (val) { return val + " คน" } } + }, + xaxis: { + categories: ["ไม่มีโรคประจำตัว", "ความดันโลหิตสูง", "โรคหัวใจ", "โรคเบาหวาน", "อัมพฤกษ์/อัมพาต", "โรคไต", "โรคมะเร็ง", "โรคสมองเสื่อม", "ปัญหาด้านสายตา", "ปัญหาด้านหู", "โรคอื่นๆ", "มากกว่า 1 โรค"] } }) - const [series, setSeries] = useState([]) - const [dataName, setDataName] = useState([]) + const [series, setSeries] = useState([ + { + name: 'เพศชาย', + data: [50, 50, 50, 50, 50] + }, + { + name: 'เพศหญิง', + data: [50, 50, 50, 50, 50] + } + ]) useEffect(() => { fetchData() @@ -67,7 +64,6 @@ const BarHospital2 = () => { const namelist = async (token, value) => { try { var list = await Sheetapi.getSheet(token, value) - setDataName(_.flatten(list)) setOptions({ xaxis: { @@ -92,51 +88,33 @@ const BarHospital2 = () => { return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isSmallScreen ? + + : + isTablet ? + + : + + }
) } diff --git a/components/chart/barHospital3.js b/components/chart/barHospital3.js index 9a13c39a..c157fc86 100644 --- a/components/chart/barHospital3.js +++ b/components/chart/barHospital3.js @@ -1,11 +1,15 @@ import React, { useState, useEffect } from 'react'; -import Chart from 'react-apexcharts' -import Sheetapi from '../../config/api' +import Chart from 'react-apexcharts'; +import Sheetapi from '../../config/api'; +import { useMediaQuery } from 'react-responsive'; const BarHospital3 = () => { + const isTablet = useMediaQuery({ minWidth: 768 }) + const isSmallScreen = useMediaQuery({ maxWidth: 768 }) + const [options, setOptions] = useState({ title: { - text: 'การตรวจสุภาพประจำปีของผู้สูงอายุ', + text: 'การตรวจสุขภาพประจำปีของผู้สูงอายุ', align: 'left' }, plotOptions: { @@ -45,11 +49,22 @@ const BarHospital3 = () => { return val + " คน" } } + }, + xaxis: { + categories: ["ตรวจเป็นประจำทุกปี", "นาน ๆ ครั้ง", "ไม่เคยตรวจ", "อื่นๆ"] } }) - const [series, setSeries] = useState([]) - const [dataName, setDataName] = useState([]) + const [series, setSeries] = useState([ + { + name: 'เพศชาย', + data: [50, 50, 50, 50, 50] + }, + { + name: 'เพศหญิง', + data: [50, 50, 50, 50, 50] + } + ]) useEffect(() => { fetchData() @@ -65,7 +80,6 @@ const BarHospital3 = () => { const namelist = async (token, value) => { try { var list = await Sheetapi.getSheet(token, value) - setDataName(_.flatten(list)) setOptions({ xaxis: { @@ -90,51 +104,33 @@ const BarHospital3 = () => { return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isSmallScreen ? + + : + isTablet ? + + : + + }
) } diff --git a/components/chart/barHospital4.js b/components/chart/barHospital4.js index ec21fa76..127778b0 100644 --- a/components/chart/barHospital4.js +++ b/components/chart/barHospital4.js @@ -1,23 +1,18 @@ import React, { useState, useEffect } from 'react'; -import Chart from 'react-apexcharts' -import Sheetapi from '../../config/api' - +import Chart from 'react-apexcharts'; +import Sheetapi from '../../config/api'; +import { useMediaQuery } from 'react-responsive'; const BarHospital4 = () => { + + const isTablet = useMediaQuery({ minWidth: 768 }) + const isSmallScreen = useMediaQuery({ maxWidth: 768 }) + const [options, setOptions] = useState({ title: { text: 'การออกกำลังกายของผู้สูงอายุ', align: 'left' }, - plotOptions: { - bar: { - horizontal: false, - columnWidth: '55%', - }, - }, - responsive: [{ - breakpoint: 150, - }], dataLabels: { enabled: false }, @@ -35,11 +30,22 @@ const BarHospital4 = () => { return val + " คน" } } + }, + xaxis: { + categories: ["ออกกำลังกายสม่ำเสมอ", "ออกกำลังกายมากกว่า 3 ครั้ง / สัปดาห์", "ออกกำลังกายน้อยกว่า 3 ครั้ง / สัปดาห์", "ไม่ได้ออกกำลังกาย", "อื่นๆ"] } }) - const [series, setSeries] = useState([]) - const [dataName, setDataName] = useState([]) + const [series, setSeries] = useState([ + { + name: 'เพศชาย', + data: [50, 50, 50, 50, 50] + }, + { + name: 'เพศหญิง', + data: [50, 50, 50, 50, 50] + } + ]) useEffect(() => { fetchData() @@ -55,7 +61,6 @@ const BarHospital4 = () => { const namelist = async (token, value) => { try { var list = await Sheetapi.getSheet(token, value) - setDataName(_.flatten(list)) setOptions({ xaxis: { @@ -80,51 +85,36 @@ const BarHospital4 = () => { return ( -
- -
+ { + isSmallScreen ? + + : + isTablet ? + + : + -
- -
-
- -
-
- -
- -
- -
+ }
) } diff --git a/components/chart/barMap.js b/components/chart/barMap.js index d1f5933e..561818ee 100644 --- a/components/chart/barMap.js +++ b/components/chart/barMap.js @@ -2,13 +2,19 @@ import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' import _ from 'lodash' +import { useMediaQuery } from 'react-responsive'; -const BarMap = () => { +const BarMap = props => { + + const isMobile = useMediaQuery({ maxWidth: 575.98 }) + const isSmallScreen = useMediaQuery({ maxWidth: 768 }) const [options, setOptions] = useState({ + title: { + text: 'สถานภาพของผู้สูงอายุ', + align: 'left' + }, chart: { - height: 350, - type: 'bar', stacked: true, toolbar: { show: true @@ -17,17 +23,6 @@ const BarMap = () => { enabled: true } }, - dataLabels: { enabled: false }, - responsive: [{ - breakpoint: 480, - options: { - legend: { - position: 'bottom', - offsetX: -10, - offsetY: 0 - } - } - }], plotOptions: { bar: { horizontal: false, @@ -41,22 +36,25 @@ const BarMap = () => { opacity: 1, colors: ['#00d084'] }, - xaxis: {}, tooltip: { y: { formatter: function (val) { return val + " คน" } - }, + } + }, + dataLabels: { + enabled: false + }, + xaxis: { + categories: ["กมลา", "กะทู้", "ป่าตอง", "ฉลอง", "กะรน", "เกาะแก้ว", "รัษฎา", "ราไวย์", "ตลาดเหนือ", "ตลาดใหญ่", "วิชิต", "เชิงทะเล", "ไม้ขาว", "ป่าคลอก", "สาคู", "ศรีสุนทร", "เทพกระษัตรี"], }, }) - const [series, setSeries] = useState([]) - const [dataName, setDataName] = useState([]) - + const [series, setSeries] = useState([{ name: "จำนวน", data: [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100] }]) useEffect(() => { fetchData() - }, []) + }, [listData]) const fetchData = async () => { @@ -68,80 +66,67 @@ const BarMap = () => { const namelist = async (token, value) => { try { var list = await Sheetapi.getSheet(token, value) - setDataName(_.flatten(list)) setOptions({ xaxis: { categories: _.flatten(list), + }, + fill: { + opacity: 1, + colors: ['#00d084'] + }, + tooltip: { + y: { + formatter: function (val) { + return val + " คน" + } + } } }) } catch (err) { console.log(err); + } } const listData = async (token, value) => { try { - var data = await Sheetapi.getSheet(token, value) setSeries([{ name: "จำนวน", data: _.flatten(data) }]) } catch (err) { - console.log(err); + props.onToken(true) } } return ( - -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isMobile ? + + : + isSmallScreen ? + + : + + }
) } diff --git a/components/chart/barSocial.js b/components/chart/barSocial.js index c0ae09ad..d7aa9460 100644 --- a/components/chart/barSocial.js +++ b/components/chart/barSocial.js @@ -1,32 +1,38 @@ import React, { useState, useEffect } from 'react' import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; +const BarSocial = props => { + const isTablet = useMediaQuery({ minWidth: 768 }) + const isSmallScreen = useMediaQuery({ maxWidth: 768 }) -const BarSocial = () => { const [options, setOptions] = useState({ title: { text: 'ที่่ดิน', align: 'left' }, + responsive: [{ + breakpoint: 1000, + options: { + plotOptions: { + bar: { + horizontal: false + } + }, + legend: { + position: "bottom" + } + } + }], plotOptions: { bar: { - horizontal: false, - columnWidth: '60%', + horizontal: true, }, }, - responsive: [{ - breakpoint: 10, - }], dataLabels: { enabled: false }, - stroke: { - show: true, - width: 2, - colors: ['transparent'] - }, - fill: { opacity: 1 }, @@ -36,11 +42,22 @@ const BarSocial = () => { return val + " คน" } } + }, + xaxis: { + categories: ["ที่ดินของตนเอง", "อาศัยที่ดินญาติ", "ที่ดินสาธารณะ/ที่ดินของรัฐ", "ที่ดินวัด/มัสยิด", "ที่ดินเอกชน/เช่าที่เอกชน", "อื่นๆ"] } }) - const [dataname, setDataName] = useState([]) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([ + { + name: 'เพศชาย', + data: [50, 50, 50, 50, 50] + }, + { + name: 'เพศหญิง', + data: [50, 50, 50, 50, 50] + } + ]) useEffect(() => { fetchData() @@ -50,12 +67,13 @@ const BarSocial = () => { let userOauth = await JSON.parse(localStorage.getItem("myOauth")) await namelist(userOauth.data.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!B98:B103') - await listData(userOauth.data.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!D98:D103','ข้อมูลการวิเคราะห์ทางสถิติ!E98:E103') + await listData(userOauth.data.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!D98:D103', 'ข้อมูลการวิเคราะห์ทางสถิติ!E98:E103') } const namelist = async (token, value) => { try { var list = await Sheetapi.getSheet(token, value) + setOptions({ xaxis: { categories: _.flatten(list) @@ -73,57 +91,39 @@ const BarSocial = () => { var woman = await Sheetapi.getSheet(token, value2) setSeries([{ name: "เพศชาย", data: _.flatten(man) }, { name: "เพศหญิง", data: _.flatten(woman) }]) } catch (err) { - console.log(err); + props.onToken(true) } } return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isSmallScreen ? + + : + isTablet ? + + : + + }
) } diff --git a/components/chart/donutSocial.js b/components/chart/donutSocial.js index ccf0021d..8c4fa478 100644 --- a/components/chart/donutSocial.js +++ b/components/chart/donutSocial.js @@ -1,37 +1,32 @@ import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; - -const DonutSocial = () => { +const DonutSocial = props => { + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) const [options, setOptions] = useState({ title: { text: "บ้านพักอาศัยของประชากรผู้สูงอายุ" }, - responsive: [{ - breakpoint: 1000, - options: { - chart: { - width: 250 - }, - legend: { - position: 'bottom' - }, - dataLabels: { enabled: false }, - } - }], + legend: { + position: 'bottom' + }, + dataLabels: { enabled: false }, tooltip: { y: { formatter: function (val) { return val + " คน" } } - } + }, + labels: ["บ้านของตนเอง", "อาศัยกับครอบครัวเดิม", "อาศัยญาติ/พี่น้อง", "บ้านเช่า", "อื่นๆ"] }) - const [dataname, setDataName] = useState([]) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([20, 20, 20, 20]) useEffect(() => { fetchData() @@ -63,62 +58,42 @@ const DonutSocial = () => { var data = _.flatten(result).map(Number) setSeries(data) } catch (err) { - console.log(err); + props.onToken(true) } } return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isBigScreen ? + + : + isMobile ? + + : + isSmallScreen ? + + : + null + }
) } diff --git a/components/chart/lineHelp.js b/components/chart/lineHelp.js index ab1f2316..c06be6f5 100644 --- a/components/chart/lineHelp.js +++ b/components/chart/lineHelp.js @@ -1,60 +1,43 @@ import React, { useState, useEffect } from 'react' -import Chart from "react-apexcharts"; +import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; const LineHelp = () => { + + const isSmallScreen = useMediaQuery({ maxWidth: 768 }) + const [options, setOptions] = useState({ - chart: { - shadow: { - enabled: true, - color: '#000', - top: 18, - left: 7, - blur: 10, - opacity: 1 - }, - toolbar: { - show: false - } + title: { + text: 'ความต้องการให้หน่วยงานรัฐช่วยเหลือ', + align: 'center' }, responsive: [{ - breakpoint: 900, + breakpoint: 1000, options: { - dataLabels: { enabled: false }, - legend: { - position: 'top', - horizontalAlign: 'center', - offsetY: -10, - offsetX: -5 - + plotOptions: { + bar: { + horizontal: false + } }, + legend: { + position: "bottom" + } } }], - colors: ['#77B6EA', '#545454'], - dataLabels: { - enabled: true, - }, - stroke: { - curve: 'smooth' - }, - title: { - text: 'ความต้องการให้หน่วยงานของรัฐช่วยเหลือของประชากรผู้สูงอายุ', - align: 'left' - }, - grid: { - borderColor: '#e7e7e7', - row: { - colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns - opacity: 0.5 + plotOptions: { + bar: { + horizontal: true, }, }, - markers: { - - size: 6 + dataLabels: { + enabled: false }, - yaxis: { - min: 0, - max: 60 + legend: { + position: 'bottom', + }, + fill: { + opacity: 1 }, tooltip: { y: { @@ -63,18 +46,22 @@ const LineHelp = () => { } } }, - legend: { - position: 'top', - horizontalAlign: 'right', - floating: true, - offsetY: -25, - offsetX: -5 + xaxis: { + categories: ["ไม่ต้องการ", "ปัญหาด้านการประกอบอาชีพ", "ปัญหาด้านหนี้สิน", "ปัญหาด้านที่พักอาศัย", "ปัญหาด้านสุขภาพ", "อื่นๆ", "มากกว่า 1 ข้อ", "มากกว่า 3 ข้อ", "ทุกข้อ"] }, - colors: ['#0693e3', '#00d084'] }) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([ + { + name: 'เพศชาย', + data: [50, 50, 50, 50, 50] + }, + { + name: 'เพศหญิง', + data: [50, 50, 50, 50, 50] + } + ]) useEffect(() => { fetchData() @@ -113,56 +100,25 @@ const LineHelp = () => { } return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
-
+ { + isSmallScreen ? + + : + + } + ) } export default LineHelp; \ No newline at end of file diff --git a/components/chart/pieChart.js b/components/chart/pieChart.js index 84ca5c56..7795fe19 100644 --- a/components/chart/pieChart.js +++ b/components/chart/pieChart.js @@ -1,37 +1,37 @@ import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; -const PieChart = () => { +const PieChart = props => { + + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) const [options, setOptions] = useState({ title: { text: "เพศชาย" }, dataLabels: { enabled: false }, - responsive: [{ - breakpoint: 900, - options: { - chart: { - width: 260, - height: 260 - }, - legend: { - position: 'bottom' - }, - dataLabels: { enabled: false }, - } - }], tooltip: { y: { formatter: function (val) { return val + " คน" } } - } + }, + legend: { + position: 'bottom' + }, + labels: ["อายุน้อยกว่า 60 ปี", + "อายุ 60 ถึง 69 ปี", + "อายุ 70 ถึง 79 ปี", + "อายุ 80 ถึง 89 ปี", + "อายุมากกว่าหรือเท่ากับ 90 ปี"] }) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([20, 20, 20, 20]) useEffect(() => { fetchData() @@ -40,17 +40,31 @@ const PieChart = () => { const fetchData = async () => { let userOauth = await JSON.parse(localStorage.getItem("myOauth")) + await namelist(userOauth.data.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!E9:E13') await listData(userOauth.data.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!G9:G13') + } const namelist = async (token, value) => { try { var list = await Sheetapi.getSheet(token, value) - console.log(list); - setOptions({ + title: { + text: "เพศชาย" + }, + dataLabels: { enabled: false }, + tooltip: { + y: { + formatter: function (val) { + return val + " คน" + } + } + }, + legend: { + position: 'bottom' + }, labels: _.flatten(list) }) } catch (err) { @@ -65,61 +79,41 @@ const PieChart = () => { var data = _.flatten(result).map(Number) setSeries(data) } catch (err) { - console.log(err); + props.onToken(true) } } return ( -
- - -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isBigScreen ? + + : + isMobile ? + + : + isSmallScreen ? + + : + null + }
) } diff --git a/components/chart/pieChart2.js b/components/chart/pieChart2.js index 0d1de1bd..9105103c 100644 --- a/components/chart/pieChart2.js +++ b/components/chart/pieChart2.js @@ -1,38 +1,37 @@ -import React, { useState,useEffect } from 'react'; +import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; -const PieChart = () => { +const PieChart = props => { + + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) const [options, setOptions] = useState({ title: { text: "เพศหญิง" }, dataLabels: { enabled: false }, - responsive: [{ - breakpoint: 900, - options: { - chart: { - width: 260, - height: 260 - }, - legend: { - position: 'bottom' - }, - dataLabels: { enabled: false }, - } - }], tooltip: { y: { formatter: function (val) { return val + " คน" } } - } + }, + legend: { + position: 'bottom' + }, + labels: ["อายุน้อยกว่า 60 ปี", + "อายุ 60 ถึง 69 ปี", + "อายุ 70 ถึง 79 ปี", + "อายุ 80 ถึง 89 ปี", + "อายุมากกว่าหรือเท่ากับ 90 ปี"] }) - const [dataname, setDataName] = useState([]) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([25, 25, 25, 25]) useEffect(() => { @@ -51,10 +50,25 @@ const PieChart = () => { var list = await Sheetapi.getSheet(token, value) setOptions({ + title: { + text: "เพศหญิง" + }, + dataLabels: { enabled: false }, + tooltip: { + y: { + formatter: function (val) { + return val + " คน" + } + } + }, + legend: { + position: 'bottom' + }, labels: _.flatten(list) }) } catch (err) { console.log(err); + } } @@ -70,195 +84,37 @@ const PieChart = () => { } return ( -
- - -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isBigScreen ? + + : + isMobile ? + + : + isSmallScreen ? + + : + null + }
) } -export default PieChart -// class PieChart extends Component { - -// constructor(props) { -// super(props); - -// this.state = { -// options: {}, -// datalist: [], -// series: [], -// } -// } - -// async componentDidMount() { -// let userOauth = JSON.parse(localStorage.getItem("myOauth")) -// this.access_token = userOauth.data.access_token -// await this.listName('ข้อมูลการวิเคราะห์ทางสถิติ!B14:B18') -// await this.listData() -// } - -// listName = async (value) => { -// try { -// this.list = await Sheetapi.getSheet(this.access_token, value) -// for (let i = 0; i < this.list.length; i++) { - -// this.setState(prevState => ({ -// datalist: [...prevState.datalist, this.list[i][0]], -// })) -// } - -// this.setState({ -// options: { -// labels: this.state.datalist, -// title: { -// text: "เพศหญิง" -// }, -// responsive: [{ -// breakpoint: 900, -// options: { -// chart: { -// width: 260, -// height: 260 -// }, -// legend: { -// position: 'bottom' -// }, -// dataLabels: { enabled: false }, -// } -// }], -// tooltip: { -// y: { -// formatter: function (val) { -// return val + " คน" -// } -// } -// } -// } -// }) - -// } catch (err) { -// console.log(err); -// } -// } - -// listData = async () => { -// try { - -// this.woman = await Sheetapi.getSheet(this.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!D14:D18') - -// for (let i = 0; i < this.woman.length; i++) { - -// this.setState(prevState => ({ -// series: [...prevState.series, parseInt(this.woman[i][0])], -// })) -// } - -// } catch (err) { -// console.log(err); -// } -// } - -// render() { -// return ( -// -//
-// - -//
- -//
-// -//
- -//
-// -//
- -//
-// -//
- -//
-// -//
-//
-// ); -// } -// } -// export default PieChart; +export default PieChart; \ No newline at end of file diff --git a/components/chart/pieDoc.js b/components/chart/pieDoc.js index 40ee6982..50e0be00 100644 --- a/components/chart/pieDoc.js +++ b/components/chart/pieDoc.js @@ -1,23 +1,18 @@ import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' - - +import { useMediaQuery } from 'react-responsive'; const PieDoc = () => { + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) + const [options, setOptions] = useState({ - title: { text: "สถานภาพการรับสวัสดิการจากรัฐของผู้สูงอายุ" }, - responsive: [{ - breakpoint: 800, - options: { - legend: { - position: 'bottom' - }, - dataLabels: { enabled: false }, - } - }], + title: { text: "สถานภาพการรับสวัสดิการของผู้สูงอายุ" }, + dataLabels: { enabled: false }, tooltip: { y: { formatter: function (val) { @@ -25,13 +20,17 @@ const PieDoc = () => { } } }, + legend: { + position: 'bottom' + }, + labels: ["ไม่ได้รับสวัสดิการจากรัฐ", "อยู่ระหว่างลงทะเบียนรับเงินสงเคราะห์เบี้ยยังชีพ", "ได้รับเบี้ยยังชีพผู้สูงอายุ", "ได้รับเบี้ยยังชีพความพิการ", "ได้รับเบี้ยยังชีพผูู้ป่วย", "มีบัตรสวัสดิการเเห่งรัฐ", "มีบัตรประกันสังคม", "มากกว่าจาก 1 เเหล่ง", "อื่นๆ"], colors: ['#2196f3', '#00d084', '#ffc107', '#eb144c', '#673ab7', '#abb8c3', '#f78da7', '#ff6900', '#7bdcb5'] }) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([20, 20, 20, 20]) useEffect(() => { fetchData() @@ -69,55 +68,27 @@ const PieDoc = () => { return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isMobile ? + + : + isSmallScreen ? + + : + null + }
) } diff --git a/components/chart/pieEconomy2.js b/components/chart/pieEconomy2.js index f67b5ce3..59d49c12 100644 --- a/components/chart/pieEconomy2.js +++ b/components/chart/pieEconomy2.js @@ -1,24 +1,17 @@ import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; -const PieEconomy2 = () => { +const PieEconomy2 = props => { + + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) const [options, setOptions] = useState({ title: { text: "อาชีพของประชากรผู้สูงอายุ" }, - responsive: [{ - breakpoint: 480, - options: { - chart: { - width: 290 - }, - legend: { - position: 'bottom' - }, - dataLabels: { enabled: false }, - } - }], - + dataLabels: { enabled: false }, tooltip: { y: { formatter: function (val) { @@ -26,10 +19,14 @@ const PieEconomy2 = () => { } } }, + legend: { + position: 'bottom' + }, + labels: ["รับจ้าง", "ธุรกิจส่วนตัว", "ค้าขาย", "เกษตรกรรม", "ไม่มีอาชีพ", "อื่นๆ"], colors: ['#8ed1fc', '#7bdcb5', '#d3b3e5', '#ffd54f', '#ff8a65', '#90a4ae'] }) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([20, 20, 20, 20]) useEffect(() => { fetchData() @@ -61,60 +58,41 @@ const PieEconomy2 = () => { var data = _.flatten(result).map(Number) setSeries(data) } catch (err) { - console.log(err); + props.onToken(true) } } return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isBigScreen ? + + : + isMobile ? + + : + isSmallScreen ? + + : + null + }
) } diff --git a/components/chart/pieEconomy3.js b/components/chart/pieEconomy3.js index 7b088f9c..3acf8759 100644 --- a/components/chart/pieEconomy3.js +++ b/components/chart/pieEconomy3.js @@ -1,66 +1,32 @@ import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; const PieEconomy3 = () => { + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) + const [options, setOptions] = useState({ title: { text: "การออมของประชากรผู้สูงอายุ" }, - plotOptions: { - radialBar: { - offsetY: -5, - startAngle: 0, - endAngle: 270, - hollow: { - margin: 5, - size: '30%', - background: 'transparent', - image: undefined, - }, - dataLabels: { - name: { - show: false, - - }, - value: { - show: false, - } + dataLabels: { enabled: false }, + tooltip: { + y: { + formatter: function (val) { + return val + " คน" } } }, - colors: ['#1ab7ea', '#0084ff', '#39539E', '#0077B5'], legend: { - show: true, - floating: true, - fontSize: '16px', - position: 'left', - offsetX: 10, - offsetY: 70, - labels: { - useSeriesColors: true, - }, - markers: { - size: 0 - }, - formatter: function (seriesName, opts) { - return seriesName + ": " + opts.w.globals.series[opts.seriesIndex] + " คน " - }, - itemMargin: { - horizontal: 1, - } + position: 'bottom' }, - responsive: [{ - breakpoint: 480, - options: { - legend: { - show: false - } - } - } - ] + labels: ["มีการออม", "ไม่มีการออม"], + colors: ['#00d084', '#eb144c'], }) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([50, 50]) useEffect(() => { fetchData() @@ -99,13 +65,38 @@ const PieEconomy3 = () => { return ( - + + { + isBigScreen ? + + : + isMobile ? + + : + isSmallScreen ? + + : + null + } + ) } export default PieEconomy3; diff --git a/components/chart/pieHelp.js b/components/chart/pieHelp.js index c1039b0c..2e96b51b 100644 --- a/components/chart/pieHelp.js +++ b/components/chart/pieHelp.js @@ -1,24 +1,20 @@ -import React, { useState, useEffect } from 'react'; +import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; -const PieHelp = () => { +const PieHelp = props => { + + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) const [options, setOptions] = useState({ title: { text: "สภาพความเดือดร้อนในปัจจุบันของผู้สูงอายุ", align: 'left' }, - responsive: [{ - breakpoint: 480, - options: { - chart: { - width: 290 - }, - legend: { - position: 'bottom' - }, - dataLabels: { enabled: false }, - } - }], - + legend: { + position: 'bottom' + }, + dataLabels: { enabled: false }, tooltip: { y: { formatter: function (val) { @@ -28,10 +24,11 @@ const PieHelp = () => { }, colors: ['#2196f3', '#00d084', '#ffc107', '#eb144c', '#673ab7', '#abb8c3', - '#f78da7', '#ff6900', '#7bdcb5'] + '#f78da7', '#ff6900', '#7bdcb5'], + labels: ["ไม่มีรายได้/รายได้น้อย", "การประกอบอาชีพ", "มีหนี้สิน", "ที่พักอาศัย", "ปัญหาสุขภาพ", "อื่นๆ", "มากกว่า 1 ข้อ", "มากกว่า 3 ข้อ", "ทุกข้อ"] }) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([20, 20, 20, 20]) useEffect(() => { fetchData() @@ -63,62 +60,42 @@ const PieHelp = () => { var data = _.flatten(result).map(Number) setSeries(data) } catch (err) { - console.log(err); + props.onToken(true) } } - return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isBigScreen ? + + : + isMobile ? + + : + isSmallScreen ? + + : + null + }
) } diff --git a/components/chart/pieHospital2.js b/components/chart/pieHospital2.js index 2dde1842..9ede9782 100644 --- a/components/chart/pieHospital2.js +++ b/components/chart/pieHospital2.js @@ -1,24 +1,17 @@ import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' - +import { useMediaQuery } from 'react-responsive'; const PieHospital2 = () => { + + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) + const [options, setOptions] = useState({ title: { text: "สภาพความพิการ" }, - - responsive: [{ - breakpoint: 700, - options: { - chart: { - width: 300 - }, - legend: { - position: 'bottom' - }, - dataLabels: { enabled: false }, - } - }], + dataLabels: { enabled: false }, tooltip: { y: { formatter: function (val) { @@ -26,12 +19,15 @@ const PieHospital2 = () => { } } }, + legend: { + position: 'bottom' + }, colors: ['#2196f3', '#00d084', '#ffc107', - '#eb144c', '#673ab7', '#abb8c3', - '#f78da7', '#ff6900', '#7bdcb5'] + '#eb144c', '#673ab7', '#ff6900', '#7bdcb5'], + labels: ["ไม่เป็นผู้พิการ", "ทางการมองเห็น", "ทางการได้ยินหรือสื่อความหมาย", "ทางกายหรือการเคลื่อนไหว", "ทางจิตใจหรือพฤติกรรม", "ทางสติปัญญาหรือการเรียนรู้", "อื่นๆ"] }) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([20, 20, 20, 20]) useEffect(() => { fetchData() @@ -69,55 +65,25 @@ const PieHospital2 = () => { return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + + isSmallScreen ? + + : + + }
) } diff --git a/components/chart/pieService.js b/components/chart/pieService.js index 074a64f0..a2548222 100644 --- a/components/chart/pieService.js +++ b/components/chart/pieService.js @@ -1,22 +1,19 @@ import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; const PieService = () => { + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) + const [options, setOptions] = useState({ title: { text: "การเข้าร่วมกิจกรรมทางสังคม/เทศบาล" }, - responsive: [{ - breakpoint: 900, - options: { - chart: { - width: 300 - }, - legend: { - position: 'bottom' - }, - dataLabels: { enabled: false } - } - }], + legend: { + position: 'bottom' + }, + dataLabels: { enabled: false }, tooltip: { y: { formatter: function (val) { @@ -24,10 +21,11 @@ const PieService = () => { } } }, - colors: ['#ff8a65', '#ffd54f', '#90a4ae'] + colors: ['#ff8a65', '#ffd54f', '#90a4ae'], + labels:  ["เข้าร่วมประจำ", "เข้าร่วมนานๆ ครั้ง", "ไม่เข้าร่วม"] }) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([25,25,50]) useEffect(() => { fetchData() @@ -62,13 +60,38 @@ const PieService = () => { } } return ( - + + { + isBigScreen ? + + : + isMobile ? + + : + isSmallScreen ? + + : + null + } + ) } export default PieService; diff --git a/components/chart/pieService2.js b/components/chart/pieService2.js index 5a43893d..61a3fc4a 100644 --- a/components/chart/pieService2.js +++ b/components/chart/pieService2.js @@ -1,22 +1,19 @@ import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; const PieService2 = () => { + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) + const [options, setOptions] = useState({ title: { text: "การเข้าร่วมกิจกรรมทางศาสนกิจ" }, - responsive: [{ - breakpoint: 900, - options: { - chart: { - width: 300 - }, - legend: { - position: 'bottom' - }, - dataLabels: { enabled: false } - } - }], + legend: { + position: 'bottom' + }, + dataLabels: { enabled: false }, tooltip: { y: { formatter: function (val) { @@ -24,10 +21,11 @@ const PieService2 = () => { } } }, - colors: ['#8ed1fc', '#7bdcb5', '#d3b3e5'] + colors: ['#8ed1fc', '#7bdcb5', '#d3b3e5'], + labels: ["เข้าร่วมประจำ", "เข้าร่วมนานๆ ครั้ง", "ไม่เข้าร่วม"] }) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([20, 25, 50]) useEffect(() => { fetchData() @@ -64,14 +62,38 @@ const PieService2 = () => { } return ( - + + { + isBigScreen ? + + : + isMobile ? + + : + isSmallScreen ? + + : + null + } + ) } export default PieService2; diff --git a/components/chart/pieSocial.js b/components/chart/pieSocial.js index 291a2628..a8b00605 100644 --- a/components/chart/pieSocial.js +++ b/components/chart/pieSocial.js @@ -1,29 +1,22 @@ import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' - - +import { useMediaQuery } from 'react-responsive'; const PieSocial = () => { + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) const [options, setOptions] = useState({ title: { text: "สภาพบ้านพักอาศัยของประชากรผู้สูงอายุ" }, legend: { position: 'bottom' }, - responsive: [{ - breakpoint: 900, - options: { - chart: { - width: 300 - }, - legend: { - position: 'bottom' - }, - dataLabels: { enabled: false } - } - }], - + legend: { + position: 'bottom' + }, + dataLabels: { enabled: false }, tooltip: { y: { formatter: function (val) { @@ -31,12 +24,11 @@ const PieSocial = () => { } } }, - + labels: ["เหมาะสม คงทนถาวร", "บ้านที่อยู่อาศัยทรุดโทรม สภาพเก่ามาก", "วัสดุก่อสร้างไม่ถาวร ไม่คงทน", "อื่นๆ"], colors: ['#7bdcb5', '#d3b3e5', '#ffd54f', '#90a4ae'] }) - const [dataname, setDataName] = useState([]) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([20, 20, 20, 20]) useEffect(() => { fetchData() @@ -72,14 +64,38 @@ const PieSocial = () => { } } return ( + + { + isBigScreen ? + options={options} + series={series} + type="donut" + width="400" + height="200" + /> + : + isMobile ? + + : + isSmallScreen ? + + : + null + } + ) } export default PieSocial; diff --git a/components/chart/pieSocial2.js b/components/chart/pieSocial2.js index ebfdd945..a2dff686 100644 --- a/components/chart/pieSocial2.js +++ b/components/chart/pieSocial2.js @@ -1,25 +1,20 @@ import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; const PieSocial2 = () => { + + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) + const [options, setOptions] = useState({ title: { text: "สภาพบ้านของประชากรผู้สูงอายุ" }, legend: { position: 'bottom' }, - responsive: [{ - breakpoint: 900, - options: { - chart: { - width: 300 - }, - legend: { - position: 'bottom' - }, - dataLabels: { enabled: false } - } - }], + dataLabels: { enabled: false }, tooltip: { y: { @@ -28,12 +23,11 @@ const PieSocial2 = () => { } } }, - + labels: ["สภาพบ้านเหมาะสม เพียงพอต่อการพักอาศัย", "สภาพบ้านคับเเคบ ไม่เพียงพอต่อการพักอาศัย"], colors: ['#7bdcb5', '#d3b3e5', '#ffd54f', '#90a4ae'] }) - const [dataname, setDataName] = useState([]) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([50,50]) useEffect(() => { fetchData() @@ -70,13 +64,38 @@ const PieSocial2 = () => { } return ( - + + { + isBigScreen ? + + : + isMobile ? + + : + isSmallScreen ? + + : + null + } + ) } export default PieSocial2; diff --git a/components/chart/piehospital.js b/components/chart/piehospital.js index cd9ab0fd..b821c87e 100644 --- a/components/chart/piehospital.js +++ b/components/chart/piehospital.js @@ -1,33 +1,31 @@ import React, { useState, useEffect } from 'react'; import Chart from 'react-apexcharts' import Sheetapi from '../../config/api' +import { useMediaQuery } from 'react-responsive'; +const PieHospital = props => { + + const isBigScreen = useMediaQuery({ minDeviceWidth: 1281 }) + const isMobile = useMediaQuery({ maxWidth: 1280 }) + const isSmallScreen = useMediaQuery({ maxWidth: 576 }) -const PieHospital = () => { const [options, setOptions] = useState({ title: { text: "สุขภาพของผู้สูงอายุ" }, - responsive: [{ - breakpoint: 700, - options: { - chart: { - width: 300 - }, - legend: { - position: 'bottom' - }, - dataLabels: { enabled: false }, - } - }], + dataLabels: { enabled: false }, + legend: { + position: 'bottom' + }, tooltip: { y: { formatter: function (val) { return val + " คน" } } - } + }, + labels: ["สมบูรณ์เเข็งเเรง", "ดูเเลช่วยเหลือตนเองได้", "ต้องได้รับการช่วยเหลือบ้าง", "ช่วยเหลือตนเองไม่ได้"] }) - const [series, setSeries] = useState([]) + const [series, setSeries] = useState([25, 25, 25, 25]) useEffect(() => { fetchData() @@ -59,61 +57,42 @@ const PieHospital = () => { var data = _.flatten(result).map(Number) setSeries(data) } catch (err) { - console.log(err); + props.onToken(true) } } return ( -
- -
- -
- -
- -
- -
- -
- -
- -
- -
+ { + isBigScreen ? + + : + isMobile ? + + : + isSmallScreen ? + + : + null + }
) } diff --git a/components/cover.js b/components/cover.js new file mode 100644 index 00000000..b8cdf7a4 --- /dev/null +++ b/components/cover.js @@ -0,0 +1,61 @@ +import React from 'react' +import Link from 'next/link' +import { useMediaQuery } from 'react-responsive' + + +const Cover = () => { + const isSmallScreen = useMediaQuery({ maxDeviceWidth: 768.99 }) + + return ( +
+
+ { + isSmallScreen ? +
+
+

เว็บฐานข้อมูลผู้สูงอายุ

+

และอินโฟกราฟิก

+
+
+
ElderlyDB เป็นการนำข้อมูลทางสถิติเกี่ยวกับผู้สูงอายุ
+
มาเเสดงผลในรูปของกราฟ
+
รูปแบบต่าง ๆ
+
+
+ +
เข้าสู่หน้าหลัก
+ +
+
+ : +
+
+

ระบบฐานข้อมูลผู้สูงอายุ

+

และอินโฟกราฟิก

+
+ + + +
+
ElderlyDB เป็นการนำข้อมูลทางสถิติเกี่ยวกับผู้สูงอายุ
+
มาเเสดงผลในรูปเเบบของกราฟ
+
ในรูปแบบต่าง ๆ
+
+
+ + +
เข้าสู่หน้าหลัก
+ +
+
+ cover +
+
+ } + +
+
+ ) + +} +export default Cover diff --git a/components/error.js b/components/error.js new file mode 100644 index 00000000..b14a3a73 --- /dev/null +++ b/components/error.js @@ -0,0 +1,46 @@ +import React, { useState, useEffect } from 'react' +import Link from 'next/link'; +import { useMediaQuery } from 'react-responsive'; +import NavBar from './layout/nav'; + +const Error = () => { + + const isSmallScreen = useMediaQuery({ maxDeviceWidth: 575.98 }) + + const [home, setHome] = useState( + [ + { name: "เกี่ยวกับเรา", href: "/index/about" }, + { name: "สังคมผู้สูงอายุ", href: "/index/society" }, + { name: "เบี้ยยังชีพ", href: "/index/allowance" }, + { name: "ติดต่อ", href: "/index/contact" }, + { name: "เข้าสู่หน้าหลัก", href: "/main" } + ] + ) + + const [homeMin, setHomeMin] = useState( + [ + { name: "เกี่ยวกับเรา", href: "/index/about" }, + { name: "สังคมผู้สูงอายุ", href: "/index/society" }, + { name: "เบี้ยยังชีพ", href: "/index/allowance" }, + { name: "ติดต่อ", href: "/index/contact" }, + { name: "เข้าสู่หน้าหลัก", href: "/main" } + ] + ) + + return ( +
+ +
+ empty +
+

ความผิดพลาด 404 หน้ายังไม่พร้อมใช้งาน

+

โปรดกลับสู่หน้าแรก

+
+
+ +
หน้าแรก
+ +
+ ) +} +export default Error; \ No newline at end of file diff --git a/components/footer.js b/components/footer.js new file mode 100644 index 00000000..42e8c97c --- /dev/null +++ b/components/footer.js @@ -0,0 +1,10 @@ +import React from 'react' + +const Footer = () => { + return ( +
+
© 2019 Elderly Database and Infographics.
+
+ ) +} +export default Footer; diff --git a/components/info.js b/components/info.js new file mode 100644 index 00000000..a64492d1 --- /dev/null +++ b/components/info.js @@ -0,0 +1,333 @@ +import React, { useState, useEffect } from 'react'; +import { useMediaQuery } from 'react-responsive'; +import Sheetapi from '../config/api'; +import moment from 'moment'; + +moment.locale("th") +moment().format('LL'); + +const Info = () => { + + const isTablet = useMediaQuery({ maxDeviceWidth: 1024 }) + const isMobile = useMediaQuery({ maxDeviceWidth: 768 }) + const isSmallScreen = useMediaQuery({ maxDeviceWidth: 575.98 }) + + const [data, setData] = useState([ + { + title: "เพศชาย", + number: 0, + color: "primary" + }, + { + title: "เพศหญิง", + number: 0, + color: "primary" + }, + { + title: "รวม", + number: 0, + color: "primary" + } + ]) + const [color, setColor] = useState(["primary", "warning", "danger"]) + + useEffect(() => { + fetchData() + }, [data]) + + const fetchData = async () => { + window.localStorage.setItem("myOauth", JSON.stringify(await Sheetapi.postSheetValues())) + let userOauth = await JSON.parse(localStorage.getItem("myOauth")) + await dataList(userOauth.data.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!B10:D10') + } + + const dataList = async (token) => { + try { + var gender = await Sheetapi.getSheet(token, 'ข้อมูลการวิเคราะห์ทางสถิติ!B9:D9') + var number = await Sheetapi.getSheet(token, 'ข้อมูลการวิเคราะห์ทางสถิติ!B10:D10') + for (let i = 0; i <= 2; i++) { + var value = await { + title: gender[0][i], + number: parseInt(number[0][i]), + color: color[i] + } + var newData = [...newData, value] + } + newData.shift() + setData(newData) + + } catch (err) { + console.log(err); + } + } + + + + return ( + + { + isSmallScreen ? +
+
+
+
+
+
+ icon +
ข้อมูลผู้สูงอายุ
+
+ +

วันที่ {moment().add(543, 'year').format('LL')}

+
ที่มา: แบบสำรวจข้อมูลพื้นฐานผู้สูงอายุ
+
เทศบาลเมืองกะทู้ จังหวัดภูเก็ต
+
+
+ { + data ? data.map((item, index) => ( + +
+
+
{item.title}
+ +

{item.number} คน

+
+
+
+
+
+
+
+ )) + : +
+
+
{item.title}
+ +

{item.number} คน

+
+
+
+
+
+
+ } +
+
+
+
+
+
+
ตรวจสอบเบี้ยยังชีพผู้สูงอายุ
+
+
+ +

โปรดคลิกที่นี่

+
+

คำเเนะนำ:
โปรดเตรียมบัตรประชาชนของท่าน
เพื่อใช้ในการตรวจสอบข้อมูล

+
+
+
+
+
+ : + isTablet || isMobile ? +
+
+
+
+ logo +
+

เทศบาลเมืองกะทู้

+
จังหวัดภูเก็ต
+
+
+
+
+
ตรวจสอบเบี้ยยังชีพผู้สูงอายุ
+
+
+ +

โปรดคลิกที่นี่

+
+

คำเเนะนำ:
โปรดเตรียมบัตรประชาชนของท่าน
เพื่อใช้ในการตรวจสอบข้อมูล

+
+
+
+
+
+
จำนวนผู้สูงอายุ
+
+
+
+ { + data ? data.map((item, index) => ( + +
+
+
{item.title}
+ +

{item.number} คน

+
+
+
+
+
+
+
+ )) + : +
+
+
{item.title}
+ +

{item.number} คน

+
+
+
+
+
+
+ } +
+ +
+
+ icon +
ข้อมูลผู้สูงอายุ
+
+ +

วันที่ {moment().add(543, 'year').format('LL')}

+
ที่มา: แบบสำรวจข้อมูลพื้นฐานผู้สูงอายุ
+
เทศบาลเมืองกะทู้ จังหวัดภูเก็ต
+
+
+
+
+
+ : + +
+
+
+
+ logo +
+

เทศบาลเมืองกะทู้

+
จังหวัดภูเก็ต
+
+ +
+
+
+
+
กองสวัสดิการสังคม
+
+
+
วิสัยทัศน์
+

"มุ่งเน้นพัฒนาองค์ความรู้
เสริมสร้างการมีส่วนร่วม + ลดปัญหาผู้ด้อยโอกาส
พัฒนาความเข้มแข็งของชุมชนอย่างยั่งยืน"

+
หน้าที่
+

1. ฝ่ายสังคมสงเคราะห์
2. ฝ่ายพัฒนาชุมชน
3. งานธุรการ

+ +
+
+
+
+
ตรวจสอบเบี้ยยังชีพผู้สูงอายุ
+
+
+ +

โปรดคลิกที่นี่

+
+

คำเเนะนำ: โปรดเตรียมบัตรประชาชนของท่าน เพื่อใช้
ในการตรวจสอบข้อมูล

+
+
+
+
+ +
+
+
จำนวนผู้สูงอายุ
+
+
+
+ { + data ? data.map((item, index) => ( + +
+
+
{item.title}
+ +

{item.number} คน

+
+
+
+
+
+
+
+ )) + : +
+
+
{item.title}
+ +

{item.number} คน

+
+
+
+
+
+
+ } +
+ +
+
+ icon +
ข้อมูลผู้สูงอายุ
+
+ +

วันที่ {moment().add(543, 'year').format('LL')}

+
ที่มา: แบบสำรวจข้อมูลพื้นฐานผู้สูงอายุ
+
เทศบาลเมืองกะทู้ จังหวัดภูเก็ต
+
+
+
+
+
+ } +
+ ) +} +export default Info \ No newline at end of file diff --git a/components/layout/Map.js b/components/layout/Map.js index 834595fd..b1eb2a63 100644 --- a/components/layout/Map.js +++ b/components/layout/Map.js @@ -28,20 +28,7 @@ const colorScale = scaleLinear() "#79d27d" ]) -const SpinnerPage = () => { - return ( - -
- -
-
- ); -} - -class StudentMap extends Component { +class Map extends Component { constructor() { super() this.state = { @@ -49,7 +36,25 @@ class StudentMap extends Component { geographyPaths: [], center: [98.3185, 7.9801249], zoom: 40, - dataList: [] + dataList: [ + ["Kamala", "กมลา", "0", "
ตำบล: กมลา
จำนวนผู้สูงอายุ: 0 คน"], + ["Kathu", "กะทู้", "0", "
ตำบล: กะทู้
จำนวนผู้สูงอายุ: 0 คน"], + ["Pa Tong", "ป่าตอง", "0", "
ตำบล: ป่าตอง
จำนวนผู้สูงอายุ: 0 คน"], + ["Chalong", "ฉลอง", "0", "
ตำบล: ฉลอง
จำนวนผู้สูงอายุ: 0 คน"], + ["Ka Ron", "กะรน", "0", "
ตำบล: กะรน
จำนวนผู้สูงอายุ: 0 คน"], + ["Ko Kaeo", "เกาะแก้ว", "0", "
ตำบล: เกาะแก้ว
จำนวนผู้สูงอายุ: 0 คน"], + ["Ratsada", "รัษฎา", "0", "
ตำบล: รัษฎา
จำนวนผู้สูงอายุ: 0 คน"], + ["Rawai", "ราไวย์", "0", "
ตำบล: ราไวย์
จำนวนผู้สูงอายุ: 0 คน"], + ["Talat Nuea", "ตลาดเหนือ", "0", "
ตำบล: ตลาดเหนือ
จำนวนผู้สูงอายุ: 0 คน"], + ["Talat Yai", "ตลาดใหญ่", "0", "
ตำบล: ตลาดใหญ่
จำนวนผู้สูงอายุ: 0 คน"], + ["Wichit", "วิชิต", "0", "
ตำบล: วิชิต
จำนวนผู้สูงอายุ: 0 คน"], + ["Choeng Tale", "เชิงทะเล", "0", "
ตำบล: เชิงทะเล
จำนวนผู้สูงอายุ: 0 คน"], + ["Mai Khao", "ไม้ขาว", "0", "
ตำบล: ไม้ขาว
จำนวนผู้สูงอายุ: 0 คน"], + ["Pa Khlok", "ป่าคลอก", "0", "
ตำบล: ป่าคลอก
จำนวนผู้สูงอายุ: 0 คน"], + ["Sakhu", "สาคู", "0", "
ตำบล: สาคู
จำนวนผู้สูงอายุ: 0 คน"], + ["Si Sunthon", "ศรีสุนทร", "0", "
ตำบล: สาคู
จำนวนผู้สูงอายุ: 0 คน"], + ["Thep Krasatti", "เทพกระษัตรี", "0", "
ตำบล: กมลา
จำนวนผู้สูงอายุ: 0 คน"], + ] } this.loadPaths = this.loadPaths.bind(this) @@ -60,14 +65,9 @@ class StudentMap extends Component { async componentDidMount() { let userOauth = JSON.parse(localStorage.getItem("myOauth")) - this.access_token = userOauth.data.access_token - - setTimeout(() => { - this.listName('แผนที่!B5:E21') - }, 1000) + this.access_token = `${userOauth != null ? userOauth.data.access_token : ""}` + this.listName('แผนที่!B5:E21') this.loadPaths() - - } listName = async (v) => { @@ -75,9 +75,10 @@ class StudentMap extends Component { this.list = await Sheetapi.getSheet(this.access_token, v) this.setState({ dataList: this.list }) + this.props.onToken(false) } catch (err) { - console.log(err); + this.props.onToken(true) } } @@ -115,9 +116,9 @@ class StudentMap extends Component { render() { const { dataList } = this.state - if (dataList.length === 0) { - return SpinnerPage() - } + // if (dataList.length === 0) { + // return SpinnerPage() + // } return ( @@ -173,7 +174,7 @@ class StudentMap extends Component { outline: "none", }, pressed: { - fill: "#FF5722", + fill: "#c4def6", stroke: "#40bf45", strokeWidth: 0.075, outline: "none", @@ -202,4 +203,4 @@ class StudentMap extends Component { } } -export default StudentMap +export default Map diff --git a/components/layout/cardcontact.js b/components/layout/cardcontact.js deleted file mode 100644 index 4762a779..00000000 --- a/components/layout/cardcontact.js +++ /dev/null @@ -1,66 +0,0 @@ -import React from 'react' -import { Tag, TagGroup, Timeline, Carousel } from 'rsuite'; -import 'rsuite/lib/styles/index.less'; - -class Cardcontact extends React.Component { - - static defaultProps = { - - img: "/static/Profile.svg", - title: "", - name: "xxx ", - sername: "xxxx", - position: "", - tel: "06-xxxxxx-xx" - - } - - render() { - - const { img, title, name, sername, position, tel } = this.props - - return ( - -
-
-
-
- pic -
-
-

{title}{name} {sername}

- - - { - position == "กองสวัสดิการสังคม" ? - กองสวัสดิการสังคม - : - position == "กองสาธารณสุขและสิ่งแวดล้อม" ? - กองสาธารณสุขและสิ่งแวดล้อม - : - position == "กองวิชาการและแผนงาน" ? - กองวิชาการและแผนงาน - : - position == "กองการศึกษา" ? - กองการศึกษา - : - null - } - - {/* "" */} -
เบอร์โทรติดต่อ: {tel}
-
- -
-
- -
-
-
- -
- - ) - } -} -export default Cardcontact; \ No newline at end of file diff --git a/components/layout/cardmain.js b/components/layout/cardmain.js deleted file mode 100644 index 0dab8372..00000000 --- a/components/layout/cardmain.js +++ /dev/null @@ -1,107 +0,0 @@ -import React, { useState, useEffect } from 'react' -import Sheetapi from '../../config/api' -import CountUp from 'react-countup'; -import Link from 'next/link'; -import _ from 'lodash' - -const CardData = () => { - - const [data, setData] = useState(false) - - useEffect(() => { - fetchData() - }, []) - - const fetchData = async () => { - let userOauth = await JSON.parse(localStorage.getItem("myOauth")) - await dataList(userOauth.data.access_token, 'ข้อมูลการวิเคราะห์ทางสถิติ!B10:D10') - } - - const dataList = async (token, value) => { - try { - var list = await Sheetapi.getSheet(token, value) - for (let i = 0; i < list.length; i++) { - var value = await { - ชาย: list[i][0], - หญิง: list[i][1], - รวม: list[i][2], - } - } - setData([value]) - // setData(_.values(value).map(Number)) - } catch (err) { - console.log(err); - } - } - - return ( -
-
- -
-
- -
-
เพศชาย
- { - data ? data.map((item, index) => - ( -

{item.ชาย} คน

- ) - ) - : -

0 คน

- } -
-
-
- -
- -
- -
-
- -
-
เพศหญิง
- { - data ? data.map((item, index) => - ( -

{item.หญิง} คน

- ) - ) - :

0 คน

- } -
-
-
- -
- -
- -
-
- -
-
รวม
- { - data ? data.map((item, index) => - ( -

คน

- ) - ) - :

0 คน

- } -
-
-
- -
- -
- ) -} -export default CardData; - diff --git a/components/layout/chart-source.js b/components/layout/chart-source.js deleted file mode 100644 index db71d74e..00000000 --- a/components/layout/chart-source.js +++ /dev/null @@ -1,22 +0,0 @@ - - -const ChartSource = () => { - return ( - -
- - - - -
-
ที่มา: แบบสำรวจข้อมูลพื้นฐานผู้สูงอายุ ผู้พิการเเละผู้ป่วยในชุมชน
-
เทศบาลเมืองกะทู้ จังหวัดภูเก็ต
-
- -
-
- ) -} -export default ChartSource; \ No newline at end of file diff --git a/components/layout/cover.js b/components/layout/cover.js deleted file mode 100644 index 48f7c79b..00000000 --- a/components/layout/cover.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react' -import Link from 'next/link' - -class Cover extends React.Component { - - render() { - return ( -
- cover -
-
-

Eldery DB

-

ฐานข้อมูลผู้สูงอายุ และอินโฟกราฟิก

- - - -
-
-
- ) - } -} -export default Cover diff --git a/components/layout/dashboard.js b/components/layout/dashboard.js new file mode 100644 index 00000000..4b62f00f --- /dev/null +++ b/components/layout/dashboard.js @@ -0,0 +1,211 @@ +import React, { useState, useEffect } from 'react'; +import Head from 'next/head'; +import Link from 'next/link'; +import { useMediaQuery } from 'react-responsive'; +import { Progress } from 'antd'; +import { Layout, Menu } from 'antd'; +import { + MenuUnfoldOutlined, + MenuFoldOutlined, + HomeOutlined, +} from '@ant-design/icons'; + +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { faBullhorn } from '@fortawesome/free-solid-svg-icons' +import { faUser, faHeart, faHospital, faBuilding, faNewspaper } from '@fortawesome/free-regular-svg-icons' + + +import NavBar from './nav'; +import Error from '../error'; + +const { Header, Sider, Content } = Layout; + +const Dashboard = props => { + + const isLaptop = useMediaQuery({ minDeviceWidth: 1224 }) + const isTablet = useMediaQuery({ minWidth: 769 }) + const isMobile = useMediaQuery({ maxDeviceWidth: 768 }) + + const [navbar, setNavbar] = useState( + [ + { name: "เกี่ยวกับเรา", href: "/index/about" }, + { name: "สังคมผู้สูงอายุ", href: "/index/society" }, + { name: "เบี้ยยังชีพ", href: "/index/allowance" }, + { name: "ติดต่อ", href: "/index/contact" }, + ] + ) + + const [sidebar, setSidebar] = useState( + [ + { name: "หน้าหลัก", href: "/main" }, + { name: "ด้านทั่วไป", href: "/main/people" }, + { name: "ด้านสุขภาพ", href: "/main/hospital" }, + { name: "ด้านสังคม", href: "/main/social" }, + { name: "ด้านเศรษฐกิจ", href: "/main/economy" }, + { name: "ด้านการช่วยเหลือ", href: "/main/service" }, + ] + ) + const [status, setStatus] = useState(false) + const [collapsed, setCollapsed] = useState(false) + const [loading, setLoading] = useState(false) + const [completed, setCompleted] = useState(0) + const [userOauth, setUserOauth] = useState() + + useEffect(() => { + fetchData() + function progress() { + setCompleted(oldCompleted => { + if (oldCompleted === 100) { + return 0; + } + const diff = Math.random() * 20; + return Math.min(oldCompleted + diff, 100); + }); + setTimeout(() => { + setLoading(false); + }, isLaptop ? 5000 : isTablet ? 4000 : isMobile ? 3000 : 2000) + } + + const timer = setInterval(progress, 500); + }, []); + + const fetchData = async () => { + setUserOauth(await JSON.parse(localStorage.getItem("myOauth"))) + } + + const toggle = () => { + + setCollapsed(!collapsed) + + } + + const onConfirm = (order) => { + setStatus(order) + } + + return ( + < React.Fragment> + { + typeof document === 'undefined' ? + null : + + + Eldery Dashboard + + + { + loading ? + + : + userOauth != null ? + + { + isTablet ? + + { + collapsed ? +
+ +
Eldery DB
+ +
+ : +
+ +

Eldery DB

+ +
+ } + + + { + sidebar.map((item, index) => ( + + + { + index == 0 ? + + : + index == 1 ? + + + + : + index == 2 ? + + + + : + index == 3 ? + + + + : + index == 4 ? + + + + : + + + + } + {item.name} + + + + )) + } + +
+ : + null + } + + { + isTablet ? +
+ {React.createElement(collapsed ? MenuUnfoldOutlined : MenuFoldOutlined, { + className: 'trigger', + onClick: toggle, + }) + + } + +
+ : + + } + + + {props.children} + +
+
+ : + + } +
+ } + + ); +} + + +export default Dashboard \ No newline at end of file diff --git a/components/layout/footer.js b/components/layout/footer.js deleted file mode 100644 index c98916a1..00000000 --- a/components/layout/footer.js +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react' -import Link from 'next/link' - -class Footer extends React.Component { - - static defaultProps = { - nameFooter: "" - } - - render() { - - const { nameFooter } = this.props - return ( -
-
- { - nameFooter == "chart" || nameFooter == "doc" || nameFooter == "economy" ? - -
ที่มา: ข้อมูลทั่วไป
-
- : - nameFooter == "service" || nameFooter == "help" ? - -
ที่มา: ข้อมูลเกี่ยวกับภาครัฐ
-
- : - nameFooter == "hospital" ? - -
ที่มา: ข้อมูลด้านสุขภาพ
-
- : - nameFooter == "social" ? - -
ที่มา: ข้อมูลด้านครอบครัวเเละที่อยู่อาศัย
-
- : - null - - } -

เทศบาลเมืองกะทู้ จังหวัดภูเก็ต

-
-
- ) - } -} -export default Footer diff --git a/components/layout/icon-data.js b/components/layout/icon-data.js deleted file mode 100644 index eaf2fad8..00000000 --- a/components/layout/icon-data.js +++ /dev/null @@ -1,184 +0,0 @@ -import React from 'react' -import Circle from 'react-circle'; - -import Sheetapi from '../../config/api' - -const textColor = "#000000"; -const font = 'Prompt, sans-serif'; -const bgColor = "#d9d9d9" - -class IconData extends React.Component { - - static defaultProps = { - icon: [], - - } - - constructor(props){ - super(props); - this.state={ - icon: [ - { label: "อายุ60ถึง69ปี", color: "#f44336", bgColor:"#fad0c3" }, - { label: "อายุ70ถึง79ปี", color: "#ffc107", bgColor:"#fef3bd" }, - { label: "อายุ80ถึง89ปี", color: "#00d084", bgColor:"#c1e1c5" }, - { label: "อายุ >= 90ปี", color: "#0693e3", bgColor:"#c4def6" } - ], - data: [] - } - } - - async componentDidMount() { - await localStorage.setItem("myOauth", JSON.stringify(await Sheetapi.postSheetValues())) - let userOauth = await JSON.parse(localStorage.getItem("myOauth")) - - this.access_token = userOauth.data.access_token - await this.list('sheets!D2:L2') - - - } - - list = async (value) => { - - try { - - this.list = await Sheetapi.getSheet2(this.access_token, value) - - for (let i = 0; i < this.list.length; i++) { - let value = await { - name: this.list[i][0], - อายุ60ถึง69ปี: parseInt(this.list[i][1].replace(",", "")), - อายุ60ถึง69ปีร้อยละ: parseFloat(this.list[i][2].replace(",", "")), - อายุ70ถึง79ปี: parseInt(this.list[i][3].replace(",", "")), - อายุ70ถึง79ปีร้อยละ: parseFloat(this.list[i][4].replace(",", "")), - อายุ80ถึง89ปี: parseInt(this.list[i][5].replace(",", "")), - อายุ80ถึง89ปีร้อยละ: parseFloat(this.list[i][6].replace(",", "")), - อายุมากกว่าหรือเท่ากับ90ปี: parseInt(this.list[i][7].replace(",", "")), - อายุมากกว่าหรือเท่ากับ90ปีร้อยละ: parseFloat(this.list[i][8].replace(",", "")), - } - this.setState(prevState => ({ - data: [...prevState.data, value.อายุ60ถึง69ปีร้อยละ, value.อายุ70ถึง79ปีร้อยละ, value.อายุ80ถึง89ปีร้อยละ, value.อายุมากกว่าหรือเท่ากับ90ปีร้อยละ], - })) - } - } catch (err) { - console.log(err); - } - - } - - render() { - return ( -
- { - this.state.icon.map((item, index) => { - return ( - -
- - { - this.state.data.map((items, indexs) => { - - return ( - index == 0 && indexs == 0 ? - - : - index == 1 && indexs == 1 ? - - : - index == 2 && indexs == 2 ? - - : - index == 3 && indexs == 3 ? - - : - null - ) - }) - - } - - -

{item.label}

- -
- -
- ) - }) - } -
- ) - } -} -export default IconData; \ No newline at end of file diff --git a/components/layout/nav.js b/components/layout/nav.js new file mode 100644 index 00000000..681097c1 --- /dev/null +++ b/components/layout/nav.js @@ -0,0 +1,194 @@ +import React, { useState, useEffect } from 'react' +import Link from 'next/link' +import { useMediaQuery } from 'react-responsive'; +import { Drawer } from 'antd'; + +const NavBar = props => { + + const tab = props.tab + const name = props.name + const [navbar, setNavbar] = useState("") + const [status, setStatus] = useState(false) + + const isBigScreen = useMediaQuery({ minDeviceWidth: 769 }) + const isSmallScreen = useMediaQuery({ maxDeviceWidth: 768.99 }) + const [visible, setVisible] = useState(false) + const [placement, setPlacement] = useState("left") + + + const collapsible = async () => { + + if (!status) { + setStatus(true) + props.confirm(true) + } + else { + setStatus(false) + props.confirm(false) + } + } + + const showDrawer = () => { + setVisible(true) + } + + const onClose = () => { + setVisible(false) + }; + + useEffect(() => { + window.onscroll = () => { + if (window.scrollY <= 10) + setNavbar(null) + else + setNavbar("scroll") + }; + }, []) + + return ( + + { + typeof document === 'undefined' ? + null : + isBigScreen && name == "index" ? + + : + isBigScreen && name == "other" ? + + : + isBigScreen && name == "empty" ? + + : + isSmallScreen ? +
+
+ +

Eldery DB

+ + +
+
+ +
+
+ : + null + } +
+ + ) +} +export default NavBar; \ No newline at end of file diff --git a/components/layout/sidebar.js b/components/layout/sidebar.js index 41bdb6aa..394fd50e 100644 --- a/components/layout/sidebar.js +++ b/components/layout/sidebar.js @@ -1,54 +1,24 @@ -import React, { useState } from 'react' -import Link from 'next/link' +import React, { useState, useEffect } from 'react'; - -const Sidebar = props => { +const Sidebar = () => { const [sidebar, setSidebar] = useState( [ - { name: "รายงานความคืบหน้า", nameicon: "Dashboard", img: "/static/dashboard.svg", link: "/main" }, - { name: "ข้อมูลทางสถิติ", nameicon: "Chart", img: "/static/chart.svg", link: "/main/chart" }, - { name: "เบี้ยยังชีพผู้สูงอายุ", nameicon: "Allowance", img: "/static/allowance.png", link: "/main/allowance" }, - { name: "สวัสดิการจากรัฐ", nameicon: "Benefits", img: "/static/document.svg", link: "/main/doc" }, - { name: "หน่วยงาน", nameicon: "Service", img: "/static/service.svg", link: "/main/service" }, - { name: "สภาพทางสังคม", nameicon: "", img: "/static/social.svg", link: "/main/social" }, - { name: "ด้านเศรษฐกิจ", nameicon: "Economy", img: "/static/economy.svg", link: "/main/economy" }, - { name: "โรงพยาบาล", nameicon: "Hospital", img: "/static/hospital.svg", link: "/main/hospital" }, - { name: "ช่วยเหลือ", nameicon: "Help", img: "/static/help.svg", link: "/main/help" }, + { name: "ข้อมูลทั่วไป", href: "/main" }, + { name: "ข้อมูลด้านสุขภาพ", href: "/main/hospital" }, + { name: "ข้อมูลด้านสังคม", href: "/main/social" }, + { name: "ข้อมูลด้านเศรษฐกิจ", href: "/main/economy" }, + { name: "ข้อมูลด้านการช่วยเหลือ", href: "/main/service" }, ] ) - return ( -
-
-
    - { - sidebar.map((items, index) => { - return ( - - -
  • {items.name}
  • - - ) - }) - } -
+ useEffect(() => { + + }, []) -
    - { - sidebar.map((itemss, indexs) => { - return ( - -
    -
  • -

    {itemss.nameicon}

    -
    - - ) - }) - } -
-
+ return ( +
+
) } diff --git a/components/layout/table.js b/components/layout/table.js deleted file mode 100644 index 3fdd9177..00000000 --- a/components/layout/table.js +++ /dev/null @@ -1,60 +0,0 @@ -import React, { useState } from 'react' -import { BootstrapTable, TableHeaderColumn } from 'react-bootstrap-table'; - -let order = 'desc'; - -class Table extends React.Component { - - static defaultProps = { - data: [] - } - - constructor(props) { - super(props); - this.state = { - text: '' - }; - } - - handleClick = (rowKey) => { - alert(this.refs.table.getPageByRowKey(rowKey)); - } - - handleBtnClick = () => { - if (order === 'desc') { - this.refs.table.handleSort('asc', 'name'); - order = 'asc'; - } else { - this.refs.table.handleSort('desc', 'name'); - order = 'desc'; - } - } - - - render() { - const { data } = this.props - return ( -
-
- - ลำดับที่ - คำนำหน้าชื่อ - ชื่อ - นามสกุล - -
- - -
- ) - } -} - -export default Table; \ No newline at end of file diff --git a/components/nav_index.js b/components/nav_index.js deleted file mode 100644 index 55636794..00000000 --- a/components/nav_index.js +++ /dev/null @@ -1,117 +0,0 @@ -import React, { useState } from 'react' -import Link from 'next/link' -import Nav_logo from './nav_logo'; - - - -const Nav_index = props => { - - const [status, setStatus] = useState(false) - const [index, setIndex] = useState( - [ - { name: "Dashboard", href: "/main" }, - { name: "Services", href: "/index/services" }, - { name: "Contact", href: "/index/contact" }, - ] - ) - const [listIndex, setListindex] = useState( - [ - { name: "Services", href: "/index/services" }, - { name: "Contact", href: "/index/contact" } - ] - ) - - const collapsible = async () => { - if (!status) { - setStatus(true) - } - else { - setStatus(false) - } - } - - return ( - - { - props.name == "/" ? - - : - - } - -
-
- - -
-
-
    -
  • - { - index.map((item, indexs) => { - return ( - -

    {item.name}

    - - ) - }) - } -
  • -
-
-
-
- ) -} -export default Nav_index \ No newline at end of file diff --git a/components/nav_logo.js b/components/nav_logo.js deleted file mode 100644 index 6fb1a03e..00000000 --- a/components/nav_logo.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react' -import Link from 'next/link' - - -const Nav_logo = () => { - return ( -
- -
  • - logo -

    Eldery DB

    -
  • - -
    - ) -} -export default Nav_logo; \ No newline at end of file diff --git a/components/nav_main.js b/components/nav_main.js deleted file mode 100644 index a883827e..00000000 --- a/components/nav_main.js +++ /dev/null @@ -1,125 +0,0 @@ -import React, { useState } from 'react' -import Nav_logo from './nav_logo'; -import Link from 'next/link' - - - -const Navbar_main = props => { - - const [status, setStatus] = useState(false) - const [index, setIndex] = useState( - [ - { name: "Services", href: "/index/services" }, - { name: "Contact", href: "/index/contact" }, - ] - ) - - const [main, setMain] = useState( - [ - { name: "รายงานความคืบหน้า", href: "/main" }, - { name: "ข้อมูลทางสถิติ", href: "/main/chart" }, - { name: "เบี้ยยังชีพผู้สูงอายุ", href: "/main/allowance" }, - { name: "สวัสดิการจากรัฐ", href: "/main/doc" }, - { name: "การบริการ", href: "/main/service" }, - { name: "สภาพทางสังคม", href: "/main/social" }, - { name: "ด้านเศรษฐกิจ", href: "/main/economy" }, - { name: "โรงพยาบาล", href: "/main/hospital" }, - { name: "ช่วยเหลือ", href: "/main/help" } - ] - ) - - const onConfirmClick = () => { - - if (props.status) { - if (props.confirm) { - props.confirm(false) - } - } - else { - if (props.confirm) { - props.confirm(true) - } - } - } - - const collapsible = async () => { - if (!status) { - setStatus(true) - } - else { - setStatus(false) - } - } - return ( -
    - - -
    -
    - - -
    -
    -
      -
    • - { - main.map((item, indexs) => { - return ( - -

      {item.name}

      - - ) - }) - } -
    • -
    -
    -
    -
    - ) -} -export default Navbar_main; \ No newline at end of file diff --git a/components/nav_table.js b/components/nav_table.js deleted file mode 100644 index 9a9efb00..00000000 --- a/components/nav_table.js +++ /dev/null @@ -1,93 +0,0 @@ -import React, { useState } from 'react' -import Link from 'next/link' -import AnchorLink from 'react-anchor-link-smooth-scroll' -import Nav_logo from './nav_logo'; - - -const Nav_table = props => { - - const [status, setStatus] = useState(false) - const [listIndex, setListindex] = useState( - [ - { name: "Services", href: "/index/services" }, - { name: "Contact", href: "/index/contact" } - ] - ) - - const collapsible = async () => { - if (!status) { - setStatus(true) - } - else { - setStatus(false) - } - } - - return ( - - { - props.name == "table" ? - - : - null - } - -
    -
    - - -
    -
    -
      -
    • - { - listIndex.map((item, indexs) => { - return ( - -

      {item.name}

      - - ) - }) - } -
    • -
    -
    -
    - - -
    - ) -} -export default Nav_table \ No newline at end of file diff --git a/next.config.js b/next.config.js index 06467b3a..21fb45e1 100644 --- a/next.config.js +++ b/next.config.js @@ -1,7 +1,8 @@ const withLess = require('@zeit/next-less') const withSass = require('@zeit/next-sass') -module.exports = withLess(withSass({ +const withCSS = require('@zeit/next-css') +module.exports = withCSS(withLess(withSass({ lessLoaderOptions: { javascriptEnabled: true } -})) \ No newline at end of file +}))) \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a8d5d142..9524d97d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,6 +38,42 @@ "resolved": "https://registry.npmjs.org/@ampproject/toolbox-script-csp/-/toolbox-script-csp-1.1.1.tgz", "integrity": "sha512-gACGfsVKinCy/977FSrlVgo6jxTZ0lcTCvCnRlNwvSOcxJVm+jJR3sP7/F43fpak9Gsq/EwFaatfnNMbunPc+w==" }, + "@ant-design/colors": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-3.2.2.tgz", + "integrity": "sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ==", + "requires": { + "tinycolor2": "^1.4.1" + } + }, + "@ant-design/icons": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.0.2.tgz", + "integrity": "sha512-fs256mh5tQ0q+o2xNper5dThCZqmWRyQfstf+UrXhotAAv52K+6grh2tzdvsl60fk4GZPLReytwL5rJqATW3uA==", + "requires": { + "@ant-design/colors": "^3.1.0", + "@ant-design/icons-svg": "^4.0.0", + "classnames": "^2.2.6", + "insert-css": "^2.0.0", + "rc-util": "^4.9.0" + } + }, + "@ant-design/icons-svg": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.0.0.tgz", + "integrity": "sha512-Nai+cd3XUrv/z50gSk1FI08j6rENZ1e93rhKeLTBGwa5WrmHvhn2vowa5+voZW2qkXJn1btS6tdvTEDB90M0Pw==" + }, + "@ant-design/react-slick": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.25.5.tgz", + "integrity": "sha512-fusHR9LkarCARvYTN6cG3yz2/Ogf+HTaJ2XEihIjsjgm6uE1aSXycRFEVDpOFP1Aib51Z2Iz3tgg/gL+WbK8rQ==", + "requires": { + "classnames": "^2.2.5", + "json2mq": "^0.2.0", + "lodash": "^4.17.15", + "resize-observer-polyfill": "^1.5.0" + } + }, "@babel/code-frame": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.0.tgz", @@ -1077,6 +1113,213 @@ "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" }, + "@emotion/hash": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.4.tgz", + "integrity": "sha512-fxfMSBMX3tlIbKUdtGKxqB1fyrH6gVrX39Gsv3y8lRYKUqlgDt3UMqQyGnR1bQMa2B8aGnhLZokZgg8vT0Le+A==" + }, + "@fortawesome/fontawesome-common-types": { + "version": "0.2.28", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.28.tgz", + "integrity": "sha512-gtis2/5yLdfI6n0ia0jH7NJs5i/Z/8M/ZbQL6jXQhCthEOe5Cr5NcQPhgTvFxNOtURE03/ZqUcEskdn2M+QaBg==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "1.2.28", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.28.tgz", + "integrity": "sha512-4LeaNHWvrneoU0i8b5RTOJHKx7E+y7jYejplR7uSVB34+mp3Veg7cbKk7NBCLiI4TyoWS1wh9ZdoyLJR8wSAdg==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.28" + } + }, + "@fortawesome/free-brands-svg-icons": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.13.0.tgz", + "integrity": "sha512-/6xXiJFCMEQxqxXbL0FPJpwq5Cv6MRrjsbJEmH/t5vOvB4dILDpnY0f7zZSlA8+TG7jwlt12miF/yZpZkykucA==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.28" + } + }, + "@fortawesome/free-regular-svg-icons": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.13.0.tgz", + "integrity": "sha512-70FAyiS5j+ANYD4dh9NGowTorNDnyvQHHpCM7FpnF7GxtDjBUCKdrFqCPzesEIpNDFNd+La3vex+jDk4nnUfpA==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.28" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.13.0.tgz", + "integrity": "sha512-IHUgDJdomv6YtG4p3zl1B5wWf9ffinHIvebqQOmV3U+3SLw4fC+LUCCgwfETkbTtjy5/Qws2VoVf6z/ETQpFpg==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.28" + } + }, + "@fortawesome/react-fontawesome": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.9.tgz", + "integrity": "sha512-49V3WNysLZU5fZ3sqSuys4nGRytsrxJktbv3vuaXkEoxv22C6T7TEG0TW6+nqVjMnkfCQd5xOnmJoZHMF78tOw==", + "requires": { + "prop-types": "^15.7.2" + } + }, + "@material-ui/core": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.9.4.tgz", + "integrity": "sha512-1wqm3jBC8mGpVHu0wVOYBX7LUzkPsWxkkTtKSn0Hz66T6TDJkke72mkSIL7akNdjnxy+bRc2Vi6NiJ4YutkDcw==", + "requires": { + "@babel/runtime": "^7.4.4", + "@material-ui/styles": "^4.9.0", + "@material-ui/system": "^4.9.3", + "@material-ui/types": "^5.0.0", + "@material-ui/utils": "^4.7.1", + "@types/react-transition-group": "^4.2.0", + "clsx": "^1.0.2", + "hoist-non-react-statics": "^3.3.2", + "popper.js": "^1.14.1", + "prop-types": "^15.7.2", + "react-is": "^16.8.0", + "react-transition-group": "^4.3.0" + }, + "dependencies": { + "dom-helpers": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.3.tgz", + "integrity": "sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw==", + "requires": { + "@babel/runtime": "^7.6.3", + "csstype": "^2.6.7" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", + "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "requires": { + "regenerator-runtime": "^0.13.2" + } + } + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, + "react-transition-group": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.3.0.tgz", + "integrity": "sha512-1qRV1ZuVSdxPlPf4O8t7inxUGpdyO5zG9IoNfJxSO0ImU2A1YWkEQvFPuIPZmMLkg5hYs7vv5mMOyfgSkvAwvw==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", + "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "requires": { + "regenerator-runtime": "^0.13.2" + } + } + } + } + } + }, + "@material-ui/icons": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.9.1.tgz", + "integrity": "sha512-GBitL3oBWO0hzBhvA9KxqcowRUsA0qzwKkURyC8nppnC3fw54KPKZ+d4V1Eeg/UnDRSzDaI9nGCdel/eh9AQMg==", + "requires": { + "@babel/runtime": "^7.4.4" + } + }, + "@material-ui/styles": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.9.0.tgz", + "integrity": "sha512-nJHum4RqYBPWsjL/9JET8Z02FZ9gSizlg/7LWVFpIthNzpK6OQ5OSRR4T4x9/p+wK3t1qNn3b1uI4XpnZaPxOA==", + "requires": { + "@babel/runtime": "^7.4.4", + "@emotion/hash": "^0.7.4", + "@material-ui/types": "^5.0.0", + "@material-ui/utils": "^4.7.1", + "clsx": "^1.0.2", + "csstype": "^2.5.2", + "hoist-non-react-statics": "^3.2.1", + "jss": "^10.0.3", + "jss-plugin-camel-case": "^10.0.3", + "jss-plugin-default-unit": "^10.0.3", + "jss-plugin-global": "^10.0.3", + "jss-plugin-nested": "^10.0.3", + "jss-plugin-props-sort": "^10.0.3", + "jss-plugin-rule-value-function": "^10.0.3", + "jss-plugin-vendor-prefixer": "^10.0.3", + "prop-types": "^15.7.2" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + } + } + }, + "@material-ui/system": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.9.3.tgz", + "integrity": "sha512-DBGsTKYrLlFpHG8BUp0X6ZpvaOzef+GhSwn/8DwVTXUdHitphaPQoL9xucrI8X9MTBo//El+7nylko7lo7eJIw==", + "requires": { + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.7.1", + "prop-types": "^15.7.2" + } + }, + "@material-ui/types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.0.0.tgz", + "integrity": "sha512-UeH2BuKkwDndtMSS0qgx1kCzSMw+ydtj0xx/XbFtxNSTlXydKwzs5gVW5ZKsFlAkwoOOQ9TIsyoCC8hq18tOwg==" + }, + "@material-ui/utils": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.7.1.tgz", + "integrity": "sha512-+ux0SlLdlehvzCk2zdQ3KiS3/ylWvuo/JwAGhvb8dFVvwR21K28z0PU9OQW2PGogrMEdvX3miEI5tGxTwwWiwQ==", + "requires": { + "@babel/runtime": "^7.4.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.0" + } + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" + }, + "@types/react": { + "version": "16.9.22", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.22.tgz", + "integrity": "sha512-7OSt4EGiLvy0h5R7X+r0c7S739TCU/LvWbkNOrm10lUwNHe7XPz5OLhLOSZeCkqO9JSCly1NkYJ7ODTUqVnHJQ==", + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-transition-group": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.4.tgz", + "integrity": "sha512-8DMUaDqh0S70TjkqU0DxOu80tFUiiaS9rxkWip/nb7gtvAsbqOXm02UCmR8zdcjWujgeYPiPNTVpVpKzUDotwA==", + "requires": { + "@types/react": "*" + } + }, "@webassemblyjs/ast": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", @@ -1291,9 +1534,17 @@ } }, "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==" + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "add-dom-event-listener": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz", + "integrity": "sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==", + "requires": { + "object-assign": "4.x" + } }, "ajv": { "version": "6.10.2", @@ -1356,6 +1607,57 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, + "antd": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/antd/-/antd-4.0.2.tgz", + "integrity": "sha512-0IBy/a4v1zCUqn8w9DRs7BHO8HsjLKt6QKt5zM/h2uUfIe3hALj5dG7M1mWrG1uu6JR2RxUfDyaCYZZGaijv/g==", + "requires": { + "@ant-design/icons": "^4.0.0", + "@ant-design/react-slick": "~0.25.5", + "array-tree-filter": "^2.1.0", + "classnames": "~2.2.6", + "copy-to-clipboard": "^3.2.0", + "css-animation": "^1.5.0", + "lodash": "^4.17.13", + "moment": "^2.24.0", + "omit.js": "^1.0.2", + "prop-types": "^15.7.2", + "raf": "^3.4.1", + "rc-animate": "~2.10.2", + "rc-cascader": "~1.0.0", + "rc-checkbox": "~2.1.6", + "rc-collapse": "~1.11.3", + "rc-dialog": "~7.6.0", + "rc-drawer": "~3.1.1", + "rc-dropdown": "~3.0.0", + "rc-field-form": "~1.0.0", + "rc-input-number": "~4.5.4", + "rc-mentions": "~1.0.0", + "rc-menu": "~8.0.1", + "rc-notification": "~4.0.0", + "rc-pagination": "~2.0.1", + "rc-picker": "~1.1.0", + "rc-progress": "~2.5.0", + "rc-rate": "~2.5.1", + "rc-resize-observer": "^0.1.0", + "rc-select": "~10.0.0", + "rc-slider": "~9.2.1", + "rc-steps": "~3.5.0", + "rc-switch": "~1.9.0", + "rc-table": "~7.2.0", + "rc-tabs": "~10.0.0", + "rc-tooltip": "~4.0.0", + "rc-tree": "~3.0.0", + "rc-tree-select": "~3.0.0", + "rc-trigger": "~4.0.0", + "rc-upload": "~3.0.0", + "rc-util": "^4.20.0", + "rc-virtual-list": "~1.0.0", + "resize-observer-polyfill": "^1.5.1", + "scroll-into-view-if-needed": "^2.2.20", + "warning": "~4.0.3" + } + }, "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", @@ -1421,6 +1723,11 @@ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" }, + "array-tree-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -1527,6 +1834,11 @@ "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.0.0.tgz", "integrity": "sha512-zyCMBDl4m71feawrxYcVbHxv/UUkqm4nKJiLu3+l9lfiQha6jQ/9dxhrXLnzzBXVFqCTDwiUkZOz9XFbdEGQsg==" }, + "async-validator": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.2.4.tgz", + "integrity": "sha512-mTgzMJixkrh+5t2gbYoua8MLy11GHkQqFE6tbhY5Aqc4jEDGsR4BWP+sVQiYDHtzTMB8WIwI/ypObTVPcTZInw==" + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2246,49 +2558,6 @@ "supports-color": "^2.0.0" } }, - "change-emitter": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", - "integrity": "sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=" - }, - "chart.js": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.8.0.tgz", - "integrity": "sha512-Di3wUL4BFvqI5FB5K26aQ+hvWh8wnP9A3DWGvXHVkO13D3DSnaSsdZx29cXlEsYKVkn1E2az+ZYFS4t0zi8x0w==", - "requires": { - "chartjs-color": "^2.1.0", - "moment": "^2.10.2" - } - }, - "chartjs-color": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.3.0.tgz", - "integrity": "sha512-hEvVheqczsoHD+fZ+tfPUE+1+RbV6b+eksp2LwAhwRTVXEjCSEavvk+Hg3H6SZfGlPh/UfmWKGIvZbtobOEm3g==", - "requires": { - "chartjs-color-string": "^0.6.0", - "color-convert": "^0.5.3" - }, - "dependencies": { - "color-convert": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", - "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" - } - } - }, - "chartjs-color-string": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", - "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", - "requires": { - "color-name": "^1.0.0" - } - }, - "chartkick": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/chartkick/-/chartkick-3.2.0.tgz", - "integrity": "sha512-EkscIyDBdtUJVIuA2kIIjMq+YkNf4jDWr1fYjDUMZ9IakIJFoJ+9Hl+PW/POutElu8iYbebCEHWsrsXu09o4hw==" - }, "chokidar": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", @@ -2454,11 +2723,24 @@ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, + "component-classes": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/component-classes/-/component-classes-1.2.6.tgz", + "integrity": "sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE=", + "requires": { + "component-indexof": "0.0.3" + } + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, + "component-indexof": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz", + "integrity": "sha1-EdCRMSI5648yyPJa6csAL/6NPCQ=" + }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -2498,6 +2780,11 @@ } } }, + "compute-scroll-into-view": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.13.tgz", + "integrity": "sha512-o+w9w7A98aAFi/GjK8cxSV+CdASuPa2rR5UWs3+yHkJzWqaKoBEufFNWYaXInCSmUfDCVhesG+v9MTWqOjsxFg==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2594,6 +2881,14 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, "core-js": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", @@ -2733,6 +3028,15 @@ "urix": "^0.1.0" } }, + "css-animation": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/css-animation/-/css-animation-1.6.1.tgz", + "integrity": "sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog==", + "requires": { + "babel-runtime": "6.x", + "component-classes": "^1.2.5" + } + }, "css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", @@ -2880,6 +3184,11 @@ "source-list-map": "^2.0.0" } }, + "css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA=" + }, "css-prefers-color-scheme": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", @@ -2937,13 +3246,32 @@ } }, "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", + "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2", + "regexpu-core": "^4.6.0" + } + }, + "css-vendor": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.7.tgz", + "integrity": "sha512-VS9Rjt79+p7M0WkPqcAza4Yq1ZHrsHrwf7hPL/bjQB+c1lwmAI+1FXxYTYt818D/50fFVflw0XKleiBN5RITkg==", "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" + "@babel/runtime": "^7.6.2", + "is-in-browser": "^1.0.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", + "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "requires": { + "regenerator-runtime": "^0.13.2" + } + } } }, "cssdb": { @@ -2952,9 +3280,9 @@ "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==" }, "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano-preset-simple": { "version": "1.0.2", @@ -3069,6 +3397,11 @@ } } }, + "csstype": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.9.tgz", + "integrity": "sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q==" + }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", @@ -3087,20 +3420,15 @@ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" }, - "d3-collection": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", - "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" - }, "d3-color": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.3.0.tgz", - "integrity": "sha512-NHODMBlj59xPAwl2BDiO2Mog6V+PrGRtBfWKqKRrs9MCqlSkIEb0Z/SfY7jW29ReHTDC/j+vwXhnZcXI3+3fbg==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.0.tgz", + "integrity": "sha512-TzNPeJy2+iEepfiL92LAAB7fvnp/dV2YwANPVHdDWmYMm23qIJBYww3qT8I8C1wXrmrg4UWs7BKc2tKIgyjzHg==" }, "d3-format": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.1.tgz", - "integrity": "sha512-TUswGe6hfguUX1CtKxyG2nymO+1lyThbkS1ifLX0Sr+dOQtAD5gkrffpHnx+yHNKUZ0Bmg5T4AjUQwugPDrm0g==" + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.3.tgz", + "integrity": "sha512-mm/nE2Y9HgGyjP+rKIekeITVgBtX97o1nrvHCWX8F/yBYyevUTvu9vb5pUnKwrcSw7o7GuwMOWjS9gFDs4O+uQ==" }, "d3-geo": { "version": "1.6.3", @@ -3121,48 +3449,34 @@ } }, "d3-interpolate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz", - "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", "requires": { "d3-color": "1" } }, - "d3-path": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.8.tgz", - "integrity": "sha512-J6EfUNwcMQ+aM5YPOB8ZbgAZu6wc82f/0WFxrxwV6Ll8wBwLaHLKCqQ5Imub02JriCVVdPjgI+6P3a4EWJCxAg==" - }, "d3-scale": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", - "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.2.1.tgz", + "integrity": "sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA==", "requires": { - "d3-array": "^1.2.0", - "d3-collection": "1", + "d3-array": "1.2.0 - 2", "d3-format": "1", - "d3-interpolate": "1", + "d3-interpolate": "^1.2.0", "d3-time": "1", "d3-time-format": "2" } }, - "d3-shape": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.5.tgz", - "integrity": "sha512-VKazVR3phgD+MUCldapHD7P9kcrvPcexeX/PkMJmkUov4JM8IxsSg1DvbYoYich9AtdTsa5nNk2++ImPiDiSxg==", - "requires": { - "d3-path": "1" - } - }, "d3-time": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.11.tgz", - "integrity": "sha512-Z3wpvhPLW4vEScGeIMUckDW7+3hWKOQfAWg/U7PlWBnQmeKQ00gCUsTtWSYulrKNA7ta8hJ+xXc6MHrMuITwEw==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" }, "d3-time-format": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.3.tgz", - "integrity": "sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.3.tgz", + "integrity": "sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA==", "requires": { "d3-time": "1" } @@ -3175,11 +3489,6 @@ "assert-plus": "^1.0.0" } }, - "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -3193,11 +3502,6 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, - "decimal.js-light": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.0.tgz", - "integrity": "sha512-b3VJCbd2hwUpeRGG3Toob+CRo8W22xplipNhP3tN7TSVB/cyMX71P1vM2Xjc9H74uV6dS2hDDmo/rHq8L87Upg==" - }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -3262,9 +3566,9 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, @@ -3325,6 +3629,11 @@ "randombytes": "^2.0.0" } }, + "dom-align": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.11.0.tgz", + "integrity": "sha512-c5xlri+XyxfgIGjJfayVIXo6j8aYh1jMlNlONh1UPTeGMW8T2kRVDcJMm2SryyPQ9i6FtjWyEnpDxT9SENXZBQ==" + }, "dom-helpers": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", @@ -3333,11 +3642,6 @@ "@babel/runtime": "^7.1.2" } }, - "dom-lib": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/dom-lib/-/dom-lib-1.2.1.tgz", - "integrity": "sha512-sx7X6iK0jidoY0xR/a/a3zOW6aLRuikb8E+3H5l5j4cgYmxXRvH1VcLf7w+FK77F8EAOt7td6ILmh1pyE/xDJA==" - }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -3386,11 +3690,6 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.332.tgz", "integrity": "sha512-AP2HkLhfSOIxP7gDjlyZ4ywGWIcxRMZoU9+JriuVkQe2pSLDdWBsE6+eI6BQOqun1dohLrUTOPHsQLLhhFA7Eg==" }, - "element-resize-event": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/element-resize-event/-/element-resize-event-3.0.3.tgz", - "integrity": "sha512-vhGNxT87PdZA6Ak4E0QhArwGzNcSPUwSN7n9wCFLeBlY2NNuuiwguQuQIp7P5oB65PLJ892yKcHiqz1xLWeiug==" - }, "elliptic": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", @@ -3415,14 +3714,6 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "~0.4.13" - } - }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -3692,27 +3983,6 @@ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" }, - "fbjs": { - "version": "0.8.17", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", - "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - } - } - }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -4020,12 +4290,12 @@ } }, "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", + "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", "requires": { "glob": "~7.1.1", - "lodash": "~4.17.10", + "lodash": "~4.17.12", "minimatch": "~3.0.2" } }, @@ -4065,10 +4335,10 @@ } } }, - "hamburgers": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hamburgers/-/hamburgers-1.1.3.tgz", - "integrity": "sha512-qpfnJwZq6ATAGJEriwuyfVNgT++GG+o+3bBfPYF7F3WY452cYKbaYGUuqwhp+3kHLI6CL4VIBfj8bfbp90Lp1A==" + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" }, "har-schema": { "version": "2.0.0", @@ -4239,6 +4509,11 @@ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, + "hyphenate-style-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz", + "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==" + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -4348,6 +4623,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "insert-css": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz", + "integrity": "sha1-610Ql7dUL0x56jBg067gfQU4gPQ=" + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -4433,12 +4713,9 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" }, "is-fullwidth-code-point": { "version": "1.0.0", @@ -4456,6 +4733,11 @@ "is-extglob": "^2.1.1" } }, + "is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -4500,11 +4782,6 @@ "isobject": "^3.0.1" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -4540,26 +4817,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - }, - "dependencies": { - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - } - } - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -4585,9 +4842,9 @@ } }, "js-base64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", - "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", + "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==" }, "js-levenshtein": { "version": "1.1.6", @@ -4643,6 +4900,14 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, + "json2mq": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", + "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=", + "requires": { + "string-convert": "^0.2.0" + } + }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -4662,6 +4927,83 @@ "verror": "1.10.0" } }, + "jss": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.4.tgz", + "integrity": "sha512-GqHmeDK83qbqMAVjxyPfN1qJVTKZne533a9bdCrllZukUM8npG/k+JumEPI86IIB5ifaZAHG2HAsUziyxOiooQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "csstype": "^2.6.5", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-camel-case": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.4.tgz", + "integrity": "sha512-+wnqxJsyfUnOn0LxVg3GgZBSjfBCrjxwx7LFxwVTUih0ceGaXKZoieheNOaTo5EM4w8bt1nbb8XonpQCj67C6A==", + "requires": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "10.0.4" + } + }, + "jss-plugin-default-unit": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.4.tgz", + "integrity": "sha512-T0mhL/Ogp/quvod/jAHEqKvptLDxq7Cj3a+7zRuqK8HxUYkftptN89wJElZC3rshhNKiogkEYhCWenpJdFvTBg==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.0.4" + } + }, + "jss-plugin-global": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.0.4.tgz", + "integrity": "sha512-N8n9/GHENZce+sqE4UYiZiJtI+t+erT/BypHOrNYAfIoNEj7OYsOEKfIo2P0GpLB3QyDAYf5eo9XNdZ8veEkUA==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.0.4" + } + }, + "jss-plugin-nested": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.0.4.tgz", + "integrity": "sha512-QM21BKVt8LDeoRfowvAMh/s+/89VYrreIIE6ch4pvw0oAXDWw1iorUPlqLZ7uCO3UL0uFtQhJq3QMLN6Lr1v0A==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.0.4", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-props-sort": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.4.tgz", + "integrity": "sha512-WoETdOCjGskuin/OMt2uEdDPLZF3vfQuHXF+XUHGJrq0BAapoyGQDcv37SeReDlkRAbVXkEZPsIMvYrgHSHFiA==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.0.4" + } + }, + "jss-plugin-rule-value-function": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.4.tgz", + "integrity": "sha512-0hrzOSWRF5ABJGaHrlnHbYZjU877Ofzfh2id3uLtBvemGQLHI+ldoL8/+6iPSRa7M8z8Ngfg2vfYhKjUA5gA0g==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.0.4" + } + }, + "jss-plugin-vendor-prefixer": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.4.tgz", + "integrity": "sha512-4JgEbcrdeMda1qvxTm1CnxFJAWVV++VLpP46HNTrfH7VhVlvUpihnUNs2gAlKuRT/XSBuiWeLAkrTqF4NVrPig==", + "requires": { + "@babel/runtime": "^7.3.1", + "css-vendor": "^2.0.7", + "jss": "10.0.4" + } + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -4746,11 +5088,6 @@ "pify": "^3.0.0" } }, - "linear-layout-vector": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/linear-layout-vector/-/linear-layout-vector-0.0.1.tgz", - "integrity": "sha1-OYEU1zA7bsx/1rJzr3uEAdi6nHA=" - }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -4821,11 +5158,6 @@ "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA=" }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, "lodash.isfunction": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", @@ -4858,11 +5190,6 @@ "lodash._reinterpolate": "^3.0.0" } }, - "lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" - }, "lodash.tonumber": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/lodash.tonumber/-/lodash.tonumber-4.0.3.tgz", @@ -4960,10 +5287,13 @@ "object-visit": "^1.0.0" } }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" + "matchmediaquery": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz", + "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==", + "requires": { + "css-mediaquery": "^0.1.2" + } }, "md5.js": { "version": "1.3.5", @@ -5098,9 +5428,9 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "to-regex-range": { "version": "2.1.1", @@ -5155,6 +5485,17 @@ "webpack-sources": "^1.1.0" } }, + "mini-store": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mini-store/-/mini-store-2.0.0.tgz", + "integrity": "sha512-EG0CuwpQmX+XL4QVS0kxNwHW5ftSbhygu1qxQH0pipugjnPkbvkalCdQbEihMwtQY6d3MTN+MS0q+aurs+RfLQ==", + "requires": { + "hoist-non-react-statics": "^2.3.1", + "prop-types": "^15.6.0", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.0.2" + } + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -5292,9 +5633,9 @@ }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, @@ -5715,9 +6056,9 @@ } }, "node-sass": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz", - "integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz", + "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==", "requires": { "async-foreach": "^0.1.3", "chalk": "^1.1.1", @@ -5726,7 +6067,7 @@ "get-stdin": "^4.0.1", "glob": "^7.0.3", "in-publish": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.15", "meow": "^3.7.0", "mkdirp": "^0.5.1", "nan": "^2.13.2", @@ -5861,6 +6202,14 @@ "isobject": "^3.0.1" } }, + "omit.js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-1.0.2.tgz", + "integrity": "sha512-/QPc6G2NS+8d4L/cQhbk6Yit1WTB6Us2g84A7A/1+w9d/eRGHyEqC5kkQtHVoHZ5NFWGG7tUGgrhVZwgZanKrQ==", + "requires": { + "babel-runtime": "^6.23.0" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -8440,6 +8789,394 @@ } } }, + "rc-align": { + "version": "3.0.0-rc.1", + "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-3.0.0-rc.1.tgz", + "integrity": "sha512-GbofumhCUb7SxP410j/fbtR2M9Zml+eoZSdaliZh6R3NhfEj5zP4jcO3HG3S9C9KIcXQQtd/cwVHkb9Y0KU7Hg==", + "requires": { + "classnames": "2.x", + "dom-align": "^1.7.0", + "rc-util": "^4.12.0", + "resize-observer-polyfill": "^1.5.1" + } + }, + "rc-animate": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-2.10.3.tgz", + "integrity": "sha512-A9qQ5Y8BLlM7EhuCO3fWb/dChndlbWtY/P5QvPqBU7h4r5Q2QsvsbpTGgdYZATRDZbTRnJXXfVk9UtlyS7MBLg==", + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.6", + "css-animation": "^1.3.2", + "prop-types": "15.x", + "raf": "^3.4.0", + "rc-util": "^4.15.3", + "react-lifecycles-compat": "^3.0.4" + } + }, + "rc-cascader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-1.0.1.tgz", + "integrity": "sha512-3mk33+YKJBP1XSrTYbdVLuCC73rUDq5STNALhvua5i8vyIgIxtb5fSl96JdWWq1Oj8tIBoHnCgoEoOYnIXkthQ==", + "requires": { + "array-tree-filter": "^2.1.0", + "rc-trigger": "^4.0.0", + "rc-util": "^4.0.4", + "warning": "^4.0.1" + } + }, + "rc-checkbox": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.1.8.tgz", + "integrity": "sha512-6qOgh0/by0nVNASx6LZnhRTy17Etcgav+IrI7kL9V9kcDZ/g7K14JFlqrtJ3NjDq/Kyn+BPI1st1XvbkhfaJeg==", + "requires": { + "babel-runtime": "^6.23.0", + "classnames": "2.x", + "prop-types": "15.x", + "react-lifecycles-compat": "^3.0.4" + } + }, + "rc-collapse": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-1.11.8.tgz", + "integrity": "sha512-8EhfPyScTYljkbRuIoHniSwZagD5UPpZ3CToYgoNYWC85L2qCbPYF7+OaC713FOrIkp6NbfNqXsITNxmDAmxog==", + "requires": { + "classnames": "2.x", + "css-animation": "1.x", + "prop-types": "^15.5.6", + "rc-animate": "2.x", + "react-is": "^16.7.0", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.1.0" + } + }, + "rc-dialog": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-7.6.0.tgz", + "integrity": "sha512-N48vBPW8I53WycFHI4KXhuTUkB4mx+hixq1a9tcFMLoE7EhkAjbHvs0vGg+Bh/uFg5V00jmZBgQOIEbhcNal/A==", + "requires": { + "babel-runtime": "6.x", + "rc-animate": "2.x", + "rc-util": "^4.16.1" + } + }, + "rc-drawer": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-3.1.3.tgz", + "integrity": "sha512-2z+RdxmzXyZde/1OhVMfDR1e/GBswFeWSZ7FS3Fdd0qhgVdpV1wSzILzzxRaT481ItB5hOV+e8pZT07vdJE8kg==", + "requires": { + "classnames": "^2.2.6", + "rc-util": "^4.16.1", + "react-lifecycles-compat": "^3.0.4" + } + }, + "rc-dropdown": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.0.2.tgz", + "integrity": "sha512-T3XP4qL6xmkxn8z52YF2SEPoMHPpBiLf0Kty3mjNdRSyKnlu+0F+3bhDHf6gO1msmqrjURaz8sMNAFDcoFHHnw==", + "requires": { + "babel-runtime": "^6.26.0", + "classnames": "^2.2.6", + "rc-trigger": "^4.0.0" + } + }, + "rc-field-form": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.0.1.tgz", + "integrity": "sha512-0m9ydH+XQtEwdTOrUgGqv0q6WCDQKNqwHiUB4fKZUdpLze/7i7gGIDVAc6CUNiTMb2Y5+V+wPtYhF4rBPhsX3g==", + "requires": { + "@babel/runtime": "^7.8.4", + "async-validator": "^3.0.3", + "rc-util": "^4.17.0", + "warning": "^4.0.3" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.7.tgz", + "integrity": "sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" + } + } + }, + "rc-hammerjs": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/rc-hammerjs/-/rc-hammerjs-0.6.9.tgz", + "integrity": "sha512-4llgWO3RgLyVbEqUdGsDfzUDqklRlQW5VEhE3x35IvhV+w//VPRG34SBavK3D2mD/UaLKaohgU41V4agiftC8g==", + "requires": { + "babel-runtime": "6.x", + "hammerjs": "^2.0.8", + "prop-types": "^15.5.9" + } + }, + "rc-input-number": { + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-4.5.6.tgz", + "integrity": "sha512-AXbL4gtQ1mSQnu6v/JtMv3UbGRCzLvQznmf0a7U/SAtZ8+dCEAqD4JpJhkjv73Wog53eRYhw4l7ApdXflc9ymg==", + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.0", + "prop-types": "^15.5.7", + "rc-util": "^4.5.1", + "rmc-feedback": "^2.0.0" + } + }, + "rc-mentions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.0.1.tgz", + "integrity": "sha512-EgXFYsNHk44ifwDcbtd3zX7rJc3lHplfVEVEf8oxZeeyyIzFD0GLs0Z0LWHNs6Gm4wTAHvcR0j4Pd5M7fLtBoA==", + "requires": { + "classnames": "^2.2.6", + "rc-menu": "^8.0.1", + "rc-trigger": "^4.0.0", + "rc-util": "^4.6.0" + } + }, + "rc-menu": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.0.2.tgz", + "integrity": "sha512-0zae6+LVQf+XTBepSMwwn2Wu+CvRf0eAVh62xl0UcjFBvyA0uGz+dAE0SVR6oUA0q9X+/G14CV1ItZFdwaP6/g==", + "requires": { + "classnames": "2.x", + "mini-store": "^2.0.0", + "rc-animate": "^2.10.1", + "rc-trigger": "^4.0.0", + "rc-util": "^4.13.0", + "resize-observer-polyfill": "^1.5.0", + "scroll-into-view-if-needed": "^2.2.20", + "shallowequal": "^1.1.0" + } + }, + "rc-notification": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.0.0.tgz", + "integrity": "sha512-In9FimkJY+JSIq3/eopPfBpQQr2Zugq5i9Aw9vdiNCGCsAsSO9bGq2dPsn8bamOydNrhc3djljGfmxUUMbcZnA==", + "requires": { + "classnames": "2.x", + "rc-animate": "2.x", + "rc-util": "^4.0.4" + } + }, + "rc-pagination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-2.0.1.tgz", + "integrity": "sha512-jvLb05p1OEBUxRobWFjnrj6vRyvhG8XHouK6qh+eepCHPo7HDzUHHztvUUAWr5f+WnKldAXqdPcGgbM4rCH1OA==", + "requires": { + "classnames": "^2.2.1" + } + }, + "rc-picker": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-1.1.5.tgz", + "integrity": "sha512-4Ea42Yg/0J95typselVZj4kDu+eNKT1s31tFwAbLNnzCg3l6VUe9jtSLNMkl1rHWICg+RNmeuM0Ua1NAHpXR7Q==", + "requires": { + "classnames": "^2.2.1", + "moment": "^2.24.0", + "rc-trigger": "^4.0.0", + "rc-util": "^4.17.0", + "shallowequal": "^1.1.0" + } + }, + "rc-progress": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-2.5.2.tgz", + "integrity": "sha512-ajI+MJkbBz9zYDuE9GQsY5gsyqPF7HFioZEDZ9Fmc+ebNZoiSeSJsTJImPFCg0dW/5WiRGUy2F69SX1aPtSJgA==", + "requires": { + "babel-runtime": "6.x", + "prop-types": "^15.5.8" + } + }, + "rc-rate": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.5.1.tgz", + "integrity": "sha512-3iJkNJT8xlHklPCdeZtUZmJmRVUbr6AHRlfSsztfYTXVlHrv2TcPn3XkHsH+12j812WVB7gvilS2j3+ffjUHXg==", + "requires": { + "classnames": "^2.2.5", + "prop-types": "^15.5.8", + "rc-util": "^4.3.0", + "react-lifecycles-compat": "^3.0.4" + } + }, + "rc-resize-observer": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-0.1.3.tgz", + "integrity": "sha512-uzOQEwx83xdQSFOkOAM7x7GHIQKYnrDV4dWxtCxyG1BS1pkfJ4EvDeMfsvAJHSYkQXVBu+sgRHGbRtLG3qiuUg==", + "requires": { + "classnames": "^2.2.1", + "rc-util": "^4.13.0", + "resize-observer-polyfill": "^1.5.1" + } + }, + "rc-select": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-10.0.4.tgz", + "integrity": "sha512-yYua9bsg23GKrsp99kenqbzxt/Snvg2rIusUs+APhgOV3IBlZhfznOOnqQxFHHZa1sdc5hYt6qsWxjtFm8grtQ==", + "requires": { + "classnames": "2.x", + "rc-animate": "^2.10.0", + "rc-trigger": "^4.0.0", + "rc-util": "^4.20.0", + "rc-virtual-list": "^1.0.0", + "warning": "^4.0.3" + } + }, + "rc-slider": { + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.2.3.tgz", + "integrity": "sha512-mlERrweLA4KNFvO0dkhQv3Du0Emq7DyAFV6N7jgrAwfUZsX4eB1T1iJWYMtsguHXbMyje+PACAqwsrfhZIN0bQ==", + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.5", + "rc-tooltip": "^4.0.0", + "rc-util": "^4.0.4", + "shallowequal": "^1.1.0", + "warning": "^4.0.3" + } + }, + "rc-steps": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-3.5.0.tgz", + "integrity": "sha512-2Vkkrpa7PZbg7qPsqTNzVDov4u78cmxofjjnIHiGB9+9rqKS8oTLPzbW2uiWDr3Lk+yGwh8rbpGO1E6VAgBCOg==", + "requires": { + "babel-runtime": "^6.23.0", + "classnames": "^2.2.3", + "lodash": "^4.17.5", + "prop-types": "^15.5.7" + } + }, + "rc-switch": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-1.9.0.tgz", + "integrity": "sha512-Isas+egaK6qSk64jaEw4GgPStY4umYDbT7ZY93bZF1Af+b/JEsKsJdNOU2qG3WI0Z6tXo2DDq0kJCv8Yhu0zww==", + "requires": { + "classnames": "^2.2.1", + "prop-types": "^15.5.6", + "react-lifecycles-compat": "^3.0.4" + } + }, + "rc-table": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.2.2.tgz", + "integrity": "sha512-92RGM0UWb+dqmfX42obDkNyzZvysLyWoojmI2NVSIJDmDO3jLQFfi0rt1ME9j720pU7by3wbikfNiB36I9KXdg==", + "requires": { + "classnames": "^2.2.5", + "component-classes": "^1.2.6", + "lodash": "^4.17.5", + "mini-store": "^2.0.0", + "prop-types": "^15.5.8", + "raf": "^3.4.1", + "rc-resize-observer": "^0.1.2", + "rc-util": "^4.20.1", + "react-lifecycles-compat": "^3.0.2", + "shallowequal": "^1.1.0" + } + }, + "rc-tabs": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-10.0.0.tgz", + "integrity": "sha512-kpYho3S8GqHVKuFvsYyShN4GSM+f3RMfgwxmR4lpXA79lzPmIlaLamCGtTnMAOXOVTS3JEltWQCWC8LYY4ITIg==", + "requires": { + "babel-runtime": "6.x", + "classnames": "2.x", + "lodash": "^4.17.5", + "prop-types": "15.x", + "raf": "^3.4.1", + "rc-hammerjs": "~0.6.0", + "rc-util": "^4.0.4", + "resize-observer-polyfill": "^1.5.1", + "warning": "^4.0.3" + } + }, + "rc-tooltip": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-4.0.2.tgz", + "integrity": "sha512-Ko56IK1U/CD2rSbfQsaVwOK/wHRGbCGpXEThUvsa3KZqe8ShAB/psMj0woR6IUxRBgYO8ZYS1n2KTm7qLLXnjQ==", + "requires": { + "rc-trigger": "^4.0.0" + } + }, + "rc-tree": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-3.0.2.tgz", + "integrity": "sha512-5MJgIuP3R2QOuv+xuvttv0BVC6BJVz4PIqgZzk9oaGCN5WryPI30SrVCB3t0QO58gdf6tTQszI5aGEgN9PLQtQ==", + "requires": { + "classnames": "2.x", + "prop-types": "^15.5.8", + "rc-animate": "^2.9.2", + "rc-util": "^4.11.0", + "rc-virtual-list": "^1.0.0", + "react-lifecycles-compat": "^3.0.4" + } + }, + "rc-tree-select": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-3.0.2.tgz", + "integrity": "sha512-xowQdNWEUAxtEfJa5X2jcO5iRB/25YlecLwcyPGn04EC0Idwmn94yaji8fM+2QSKWKqvoImppaiRJpA1uljAHg==", + "requires": { + "classnames": "2.x", + "rc-select": "^10.0.0", + "rc-tree": "^3.0.0", + "rc-util": "^4.17.0" + } + }, + "rc-trigger": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-4.0.2.tgz", + "integrity": "sha512-to5S1NhK10rWHIgQpoQdwIhuDc2Ok4R4/dh5NLrDt6C+gqkohsdBCYiPk97Z+NwGhRU8N+dbf251bivX8DkzQg==", + "requires": { + "classnames": "^2.2.6", + "prop-types": "15.x", + "raf": "^3.4.1", + "rc-align": "^3.0.0-rc.0", + "rc-animate": "^2.10.2", + "rc-util": "^4.20.0" + } + }, + "rc-upload": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-3.0.0.tgz", + "integrity": "sha512-GTmLJ2Habrgon26xwtF8nx1FBxu8KUjRC6QW/7a+NVZ6qXIo+s7HnjqwseuG42kz6xGCoSLNpHgIoHW55EwpxA==", + "requires": { + "babel-runtime": "6.x", + "classnames": "^2.2.5" + } + }, + "rc-util": { + "version": "4.20.1", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.20.1.tgz", + "integrity": "sha512-EGlDg9KPN0POzmAR2hk9ZyFc3DmJIrXwlC8NoDxJguX2LTINnVqwadLIVauLfYgYISMiFYFrSHiFW+cqUhZ5dA==", + "requires": { + "add-dom-event-listener": "^1.1.0", + "babel-runtime": "6.x", + "prop-types": "^15.5.10", + "react-is": "^16.12.0", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.1.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz", + "integrity": "sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA==" + } + } + }, + "rc-virtual-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-1.0.1.tgz", + "integrity": "sha512-lqee1WuBXz6wUGr77g5bB1BHO9JQH+R1DX1oU0JbTLQs7bJl5JWk0xlX6UbB7VMtUss15+XiV7cyvlXVq6xzjg==", + "requires": { + "classnames": "^2.2.6", + "rc-util": "^4.8.0" + } + }, "react": { "version": "16.9.0", "resolved": "https://registry.npmjs.org/react/-/react-16.9.0.tgz", @@ -8450,11 +9187,6 @@ "prop-types": "^15.6.2" } }, - "react-anchor-link-smooth-scroll": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/react-anchor-link-smooth-scroll/-/react-anchor-link-smooth-scroll-1.0.12.tgz", - "integrity": "sha512-aaY+9X0yh8YnC0jBfoTKpsiCLdO/Y6pCltww+VB+NnTBPDOvnIdnp1AlazajsDitc1j+cVSQ+yNtaVeTIMQbxw==" - }, "react-apexcharts": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/react-apexcharts/-/react-apexcharts-1.3.3.tgz", @@ -8474,28 +9206,20 @@ "react-s-alert": "^1.3.2" } }, - "react-chartjs-2": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-2.8.0.tgz", - "integrity": "sha512-BPpC+qfnh37DkcXvxRwA1rdD9rX/0AQrwru4VZTLofCCuZBwRsc7PbfxjilvoB6YlHhorwZu40YDWEQkoz7xfQ==", - "requires": { - "lodash": "^4.17.4", - "prop-types": "^15.5.8" - } - }, - "react-chartkick": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/react-chartkick/-/react-chartkick-0.3.2.tgz", - "integrity": "sha512-IhBhgg+UfAurwZB7kzhu4UF6GjJso5XOe/XZmTVDzqTVrahbTCMaM8bY2VzGl3A/BmqZ3S/38vyiPDvxtOJ/tg==", - "requires": { - "chartkick": "^3.1.1" - } - }, "react-circle": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/react-circle/-/react-circle-1.1.1.tgz", "integrity": "sha512-iphQfy+MRuNuBqJyZlGKbxyBJhDszaiT5eTiilFFPuwo5nsW5k/uH0KCq/sXXBMiJpLJ/Ly3arkUDvrK62Zung==" }, + "react-copy-to-clipboard": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.2.tgz", + "integrity": "sha512-/2t5mLMMPuN5GmdXo6TebFa8IoFxZ+KTDDqYhcDm0PhkgEzSxVvIX26G20s1EB02A4h2UZgwtfymZ3lGJm0OLg==", + "requires": { + "copy-to-clipboard": "^3", + "prop-types": "^15.5.8" + } + }, "react-countup": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/react-countup/-/react-countup-4.2.2.tgz", @@ -8586,15 +9310,15 @@ "warning": "^4.0.2" } }, - "react-resize-detector": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-2.3.0.tgz", - "integrity": "sha512-oCAddEWWeFWYH5FAcHdBYcZjAw9fMzRUK9sWSx6WvSSOPVRxcHd5zTIGy/mOus+AhN/u6T4TMiWxvq79PywnJQ==", + "react-responsive": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-8.0.3.tgz", + "integrity": "sha512-F9VXyLao7O8XHXbLjQbIr4+mC6Zr0RDTwNjd7ixTmYEAyKyNanBkLkFchNaMZgszoSK6PgSs/3m/QDWw33/gpg==", "requires": { - "lodash.debounce": "^4.0.8", - "lodash.throttle": "^4.1.1", - "prop-types": "^15.6.0", - "resize-observer-polyfill": "^1.5.0" + "hyphenate-style-name": "^1.0.0", + "matchmediaquery": "^0.3.0", + "prop-types": "^15.6.1", + "shallow-equal": "^1.1.0" } }, "react-s-alert": { @@ -8615,23 +9339,11 @@ "topojson-client": "2.1.0" } }, - "react-smooth": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-1.0.2.tgz", - "integrity": "sha512-pIGzL1g9VGAsRsdZQokIK0vrCkcdKtnOnS1gyB2rrowdLy69lNSWoIjCTWAfgbiYvria8tm5hEZqj+jwXMkV4A==", - "requires": { - "lodash": "~4.17.4", - "prop-types": "^15.6.0", - "raf": "^3.4.0", - "react-transition-group": "^2.5.0" - } - }, "react-tooltip": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-3.11.1.tgz", - "integrity": "sha512-YCMVlEC2KuHIzOQhPplTK5jmBBwoL+PYJJdJKXj7M/h7oevupd/QSVq6z5U7/ehIGXyHsAqvwpdxexDfyQ0o3A==", + "version": "3.11.6", + "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-3.11.6.tgz", + "integrity": "sha512-nTc1yHHaPCHHURvMpf/VNF17pIZiU4zwUGFJBUVr1fZkezFC7E0VPMMVrCfDjt+IpwTHICyzlyx+1FiQ7lw5LQ==", "requires": { - "classnames": "^2.2.5", "prop-types": "^15.6.0" } }, @@ -8655,20 +9367,6 @@ "typed.js": "^2.0.6" } }, - "react-virtualized": { - "version": "9.21.1", - "resolved": "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.21.1.tgz", - "integrity": "sha512-E53vFjRRMCyUTEKuDLuGH1ld/9TFzjf/fFW816PE4HFXWZorESbSTYtiZz1oAjra0MminaUU1EnvUxoGuEFFPA==", - "requires": { - "babel-runtime": "^6.26.0", - "clsx": "^1.0.1", - "dom-helpers": "^2.4.0 || ^3.0.0", - "linear-layout-vector": "0.0.1", - "loose-envify": "^1.3.0", - "prop-types": "^15.6.0", - "react-lifecycles-compat": "^3.0.4" - } - }, "reactstrap": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-8.0.1.tgz", @@ -8798,43 +9496,6 @@ "picomatch": "^2.0.7" } }, - "recharts": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/recharts/-/recharts-1.7.1.tgz", - "integrity": "sha512-i4vK/ZSICr+dXGmaijuNybc+xhctiX0464xnqauY+OvE6WvU5v+0GYciQvD/HJSObkKG4wY8aRtiuUL9YtXnHQ==", - "requires": { - "classnames": "^2.2.5", - "core-js": "^2.5.1", - "d3-interpolate": "^1.3.0", - "d3-scale": "^2.1.0", - "d3-shape": "^1.2.0", - "lodash": "^4.17.5", - "prop-types": "^15.6.0", - "react-resize-detector": "^2.3.0", - "react-smooth": "^1.0.0", - "recharts-scale": "^0.4.2", - "reduce-css-calc": "^1.3.0" - } - }, - "recharts-scale": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.2.tgz", - "integrity": "sha512-p/cKt7j17D1CImLgX2f5+6IXLbRHGUQkogIp06VUoci/XkhOQiGSzUrsD1uRmiI7jha4u8XNFOjkHkzzBPivMg==", - "requires": { - "decimal.js-light": "^2.4.1" - } - }, - "recompose": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.26.0.tgz", - "integrity": "sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==", - "requires": { - "change-emitter": "^0.1.2", - "fbjs": "^0.8.1", - "hoist-non-react-statics": "^2.3.1", - "symbol-observable": "^1.0.4" - } - }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -8844,38 +9505,6 @@ "strip-indent": "^1.0.1" } }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "requires": { - "balanced-match": "^0.4.2", - "math-expression-evaluator": "^1.2.14", - "reduce-function-call": "^1.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "requires": { - "balanced-match": "^0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - } - } - }, "reflect.ownkeys": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", @@ -8917,24 +9546,42 @@ } }, "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + }, + "dependencies": { + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + } } }, "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" }, "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "requires": { "jsesc": "~0.5.0" } @@ -9058,46 +9705,13 @@ "inherits": "^2.0.1" } }, - "rsuite": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rsuite/-/rsuite-4.1.0.tgz", - "integrity": "sha512-MUOYVAeLG3EVJ/4fHKDKR4W0iaC7IS14vgW1LQGCKTer88E5QCQ7GTNJDV8jkC/t2VP1XT11ix+8yX6j86ENFw==", - "requires": { - "@babel/runtime": "^7.0.0", - "classnames": ">=2.0.0", - "date-fns": "^1.30.1", - "dom-lib": "^1.2.1", - "element-resize-event": "^3.0.2", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react-lifecycles-compat": "^3.0.4", - "react-virtualized": "^9.21.0", - "recompose": "^0.26.0", - "rsuite-table": "^3.6.1", - "rsuite-utils": "^2.2.1", - "schema-typed": "^1.3.1" - } - }, - "rsuite-table": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/rsuite-table/-/rsuite-table-3.6.1.tgz", - "integrity": "sha512-2wrMDTTaVFWWqxEcaCr8baYiLayfzquWrTLlx4QVZ5rQMZ2l4NwfV4WrTFwcga7o/zUOd1SJeB9/YPzeJWjvOA==", - "requires": { - "classnames": "^2.2.5", - "dom-lib": "^1.2.1", - "element-resize-event": "^3.0.2", - "lodash": "^4.17.5", - "react-lifecycles-compat": "^3.0.4" - } - }, - "rsuite-utils": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/rsuite-utils/-/rsuite-utils-2.2.1.tgz", - "integrity": "sha512-viDaUWDb6UtrV2YcncrJmJqinf4VmhMr73rU7xfympIBMZ3frfbnWbhxro8zrlLocMDKWbu0MgYF5SGBBIwsYA==", + "rmc-feedback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rmc-feedback/-/rmc-feedback-2.0.0.tgz", + "integrity": "sha512-5PWOGOW7VXks/l3JzlOU9NIxRpuaSS8d9zA3UULUCuTKnpwBHNvv1jSJzxgbbCQeYzROWUpgKI4za3X4C/mKmQ==", "requires": { - "classnames": "^2.2.5", - "lodash": "^4.17.5", - "react-lifecycles-compat": "^3.0.4" + "babel-runtime": "6.x", + "classnames": "^2.2.5" } }, "run-queue": { @@ -9158,11 +9772,6 @@ "object-assign": "^4.1.1" } }, - "schema-typed": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/schema-typed/-/schema-typed-1.3.1.tgz", - "integrity": "sha512-gqYJNjppMNx1Xvre+G1hiXZR4oymGXgqxp0vb+uPrmxfaCa371guqKarL7PD1eN4Dflu7qhr2rJetLA7wW6NVQ==" - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -9173,6 +9782,14 @@ "ajv-keywords": "^3.1.0" } }, + "scroll-into-view-if-needed": { + "version": "2.2.24", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.24.tgz", + "integrity": "sha512-vsC6SzyIZUyJG8o4nbUDCiIwsPdH6W/FVmjT2avR2hp/yzS53JjGmg/bKD20TkoNajbu5dAQN4xR7yes4qhwtQ==", + "requires": { + "compute-scroll-into-view": "^1.0.13" + } + }, "scss-tokenizer": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", @@ -9310,6 +9927,16 @@ } } }, + "shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "shell-quote": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", @@ -9606,6 +10233,11 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, + "string-convert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", + "integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=" + }, "string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", @@ -9761,11 +10393,6 @@ "svg.js": "^2.2.5" } }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -9918,6 +10545,16 @@ "setimmediate": "^1.0.4" } }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" + }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -9955,6 +10592,11 @@ "is-number": "^7.0.0" } }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -10053,11 +10695,6 @@ "is-typedarray": "^1.0.0" } }, - "ua-parser-js": { - "version": "0.7.20", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", - "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==" - }, "unfetch": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz", diff --git a/package.json b/package.json index 98dc3cec..8a774c2e 100644 --- a/package.json +++ b/package.json @@ -9,36 +9,42 @@ "export": "next build && next export" }, "dependencies": { + "@fortawesome/fontawesome-svg-core": "^1.2.28", + "@fortawesome/free-brands-svg-icons": "^5.13.0", + "@fortawesome/free-regular-svg-icons": "^5.13.0", + "@fortawesome/free-solid-svg-icons": "^5.13.0", + "@fortawesome/react-fontawesome": "^0.1.9", + "@material-ui/core": "^4.9.4", + "@material-ui/icons": "^4.9.1", + "@zeit/next-css": "^1.0.1", "@zeit/next-less": "^1.0.1", "@zeit/next-sass": "^1.0.1", "animate.css": "^3.7.2", + "antd": "^4.0.2", "apexcharts": "^3.10.0", "axios": "^0.19.0", "bootstrap": "^4.3.1", - "chart.js": "^2.8.0", + "d3-scale": "^3.2.1", "google-maps-react": "^2.0.2", - "hamburgers": "^1.1.3", "less": "^3.10.3", "lodash": "^4.17.15", + "moment": "^2.24.0", "next": "^9.1.7", - "node-sass": "^4.12.0", + "node-sass": "^4.13.1", "prop-types": "^15.7.2", "react": "^16.9.0", - "react-anchor-link-smooth-scroll": "^1.0.12", "react-apexcharts": "^1.3.3", "react-bootstrap-table": "^4.3.1", - "react-chartjs-2": "^2.8.0", - "react-chartkick": "^0.3.2", "react-circle": "^1.1.1", + "react-copy-to-clipboard": "^5.0.2", "react-countup": "^4.2.2", "react-dom": "^16.9.0", "react-google-charts": "^3.0.15", "react-motion": "^0.5.2", + "react-responsive": "^8.0.3", "react-simple-maps": "^0.12.1", "react-tooltip": "^3.11.1", "react-typed": "^1.2.0", - "reactstrap": "^8.0.1", - "recharts": "^1.7.1", - "rsuite": "^4.1.0" + "reactstrap": "^8.0.1" } } diff --git a/pages/_app.js b/pages/_app.js index 2ca5e8b6..5e6a4709 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -1,26 +1,8 @@ import React from 'react' -import App from 'next/app' import '../styles/base.scss' +import 'antd/dist/antd.less' - -class MyApp extends App { - - // Only uncomment this method if you have blocking data requirements for - // every single page in your application. This disables the ability to - // perform automatic static optimization, causing every page in your app to - // be server-side rendered. - // - // static async getInitialProps(appContext) { - // // calls page's `getInitialProps` and fills `appProps.pageProps` - // const appProps = await App.getInitialProps(appContext); - // - // return { ...appProps } - // } - - render() { - const { Component, pageProps } = this.props - return - } -} - -export default MyApp \ No newline at end of file +// This default export is required in a new `pages/_app.js` file. +export default function MyApp({ Component, pageProps }) { + return +} \ No newline at end of file diff --git a/pages/_document.js b/pages/_document.js index e346863f..7bf0c961 100644 --- a/pages/_document.js +++ b/pages/_document.js @@ -16,7 +16,7 @@ class MyDocument extends Document { - + @@ -26,7 +26,8 @@ class MyDocument extends Document { - + + import('../components/info'), + { ssr: false } +) + const Home = () => { + const isSmallScreen = useMediaQuery({ maxDeviceWidth: 575.98 }) + + const [status, setStatus] = useState(false) + + const [home, setHome] = useState( + [ + { name: "เกี่ยวกับเรา", href: "/index/about" }, + { name: "สังคมผู้สูงอายุ", href: "/index/society" }, + { name: "เบี้ยยังชีพ", href: "/index/allowance" }, + { name: "ติดต่อ", href: "/index/contact" }, + { name: "เข้าสู่หน้าหลัก", href: "/main" } + ] + ) - useEffect(() => { - async function fetchData() { - window.localStorage.setItem("myOauth", JSON.stringify(await Sheetapi.postSheetValues())) - } - fetchData(); - }); + const [homeMin, setHomeMin] = useState( + [ + { name: "เกี่ยวกับเรา", href: "/index/about" }, + { name: "สังคมผู้สูงอายุ", href: "/index/society" }, + { name: "เบี้ยยังชีพ", href: "/index/allowance" }, + { name: "ติดต่อ", href: "/index/contact" }, + { name: "เข้าสู่หน้าหลัก", href: "/main" }, + ] + ) + + const onConfirm = (order) => { + setStatus(order) + } return ( -
    - - Eldery DB - - - -
    - -
    -
    + + { + typeof document === 'undefined' ? + null : + + + Eldery DB + + + +
    + + + + +
    +
    +
    + + } +
    + ) } export default Home; \ No newline at end of file diff --git a/pages/index/About.js b/pages/index/About.js new file mode 100644 index 00000000..879b4f71 --- /dev/null +++ b/pages/index/About.js @@ -0,0 +1,132 @@ +import React, { useState } from 'react'; +import Head from 'next/head'; +import NavBar from '../../components/layout/nav'; +import { useMediaQuery } from 'react-responsive'; + +const About = () => { + const isSmallScreen = useMediaQuery({ maxDeviceWidth: 575.98 }) + const [data, setData] = useState([ + + { + title: "แบบสำรวจข้อมูลพื้นฐานผู้สูงอายุ", + text: "", + subtext: "" + }, + { + title: "1. ข้อมูลทั่วไป", + text: "ประวัติส่วนตัว เช่น ชื่อ-นามสกุล ช่วงอายุ สัญชาติ ศาสนา การศึกษา", + subtext: "รวมไปถึงข้อมูลด้านรายได้ รายจ่าย เเละการออม" + }, + { + title: "2. ข้อมูลด้านสุขภาพ", + text: "ประวัติด้านการรักษา สภาพความพิการ โรคประจำตัว การตรวจสุภาพ ", + subtext: "สถานพยาบาลที่ใช้ประจำ การออกกำลังกาย รวมไปถึงการสูบบุหรี่ หรือดื่มสุรา" + }, + { + title: "3. ข้อมูลด้านครอบครัวเเละที่อยู่อาศัย", + text: "ข้อมูลเกี่ยวกับที่อยู่อาศัย สภาพบ้านที่อยู่อาศัย เเละจำนวนผู้อาศัยในภายครอบครัว", + subtext: "" + }, + { + title: "4. ข้อมูลเกี่ยวกับภาครัฐ", + text: "ข้อมูลเกี่ยวกับการเข้าร่วมกิจกรรมทางสังคม/เทศบาล หรือทางศาสนกิจ", + subtext: "สภาพความเดือดร้อนในปัจจุบัน และความต้องการให้หน่วยงานของรัฐช่วยเหลือ" + }, + ]) + + const [header, setHeader] = useState("Elderly DB") + const [subHead, setSubHead] = useState("เว็บฐานข้อมูลผู้สูงอายุ ภายในอำเภอกะทู้ จังหวัดภูเก็ต") + const [summary, setSummary] = useState("เว็บไซต์ฐานข้อมูลผู้สูงอายุ เป็นการนำข้อมูลทางสถิติเกี่ยวกับผู้สูงอายุมาเเสดงผลในรูปของกราฟรูปแบบต่าง ๆ") + + const [status, setStatus] = useState(false) + + const [home, setHome] = useState( + [ + { name: "สังคมผู้สูงอายุ", href: "/index/society" }, + { name: "เบี้ยยังชีพ", href: "/index/allowance" }, + { name: "เข้าสู่หน้าหลัก", href: "/main" } + ] + ) + + const [homeMin, setHomeMin] = useState( + [ + { name: "สังคมผู้สูงอายุ", href: "/index/society" }, + { name: "เบี้ยยังชีพ", href: "/index/allowance" }, + { name: "เข้าสู่หน้าหลัก", href: "/main" }, + ] + ) + + const onConfirm = (order) => { + setStatus(order) + } + + return ( + + { + typeof document === 'undefined' ? + null : + + + Eldery DB + + + +
    +
    + { + isSmallScreen ? +
    +
    +

    {header}

    +
    {subHead}
    +
    + +
    + +
    + { + data.map((item, index) => ( +
    +
    {item.title}
    +
    {item.text}
    +
    {item.subtext}
    +
    + )) + } +
    +
    +
    + : +
    +
    +

    {header}

    +

    {subHead}

    +
    +
    {summary}
    +
    +
    + +
    + +
    + { + data.map((item, index) => ( +
    +
    {item.title}
    +
    {item.text}
    +
    {item.subtext}
    +
    + )) + } +
    +
    +
    + } +
    +
    +
    + } +
    + ) +} +export default About; \ No newline at end of file diff --git a/pages/index/Allowance.js b/pages/index/Allowance.js new file mode 100644 index 00000000..698456c9 --- /dev/null +++ b/pages/index/Allowance.js @@ -0,0 +1,322 @@ +import React, { useState } from 'react'; +import Head from 'next/head'; +import NavBar from '../../components/layout/nav'; +import { useMediaQuery } from 'react-responsive'; +import { Steps } from 'antd'; +const { Step } = Steps; + +const Allowance = () => { + const isSmallScreen = useMediaQuery({ maxDeviceWidth: 575.98 }) + const [header, setHeader] = useState("เบี้ยยังชีพผู้สูงอายุ") + const [subHead, setSubHead] = useState("อำเภอกะทู้ จังหวัดภูเก็ต") + + const [data, setData] = useState([ + { + title: "เบี้ยยังชีพผู้สูงอายุ ", + description: "เบี้ยยังชีพผู้สูงอายุคืออะไร" + }, + { + title: "ใครบ้างมีสิทธิได้รับเบี้ยยังชีพผู้สูงอายุ", + description: "สิทธิในการรับเบี้ยยังชีพผู้สูงอายุ" + }, + { + title: "การลงทะเบียนรับเบี้ยยังชีพผู้สูงอายุ", + description: "สามารถลงได้ที่ไหน ต้องทำอย่างไร และรับเงินเบี้ยยังชีพผ่านทางช่องทางไหนได้บ้าง" + }, + { + title: "หลักฐานในการลงทะเบียนรับเบี้ยยังชีพผู้สูงอายุ", + description: " ในกรณีผู้สูงอายุมารับด้วยตนเอง หรือให้ผู้เเทนมารับ" + }, + { + title: "เบี้ยยังชีพที่ผู้สูงอายุจะได้รับ", + description: "การจ่ายเบี้ยยังชัพผู้สูงอายุแบบบันไดตามช่วงอายุ" + }, + { + title: "การเซ็นสําเนาที่ถูกต้อง", + description: "วิธีการเซ็นสำเนาบัตรประชาชน สำเนาทะเบียนบ้าน และสมุดบัญชีเงินฝากธนาคาร" + }, + ]) + + const [status, setStatus] = useState(false) + + const [home, setHome] = useState( + [ + { name: "เกี่ยวกับเรา", href: "/index/about" }, + { name: "สังคมผู้สูงอายุ", href: "/index/society" }, + { name: "เข้าสู่หน้าหลัก", href: "/main" } + ] + ) + + const [homeMin, setHomeMin] = useState( + [ + { name: "เกี่ยวกับเรา", href: "/index/about" }, + { name: "สังคมผู้สูงอายุ", href: "/index/society" }, + { name: "เข้าสู่หน้าหลัก", href: "/main" }, + ] + ) + + const [current, setCurrent] = useState(0) + + const onConfirm = (order) => { + setStatus(order) + } + + const onChangeStep = current => { + setCurrent(current) + } + + return ( + + { + typeof document === 'undefined' ? + null : + + + Eldery DB + + + +
    +
    + { + isSmallScreen ? +
    +
    +

    {header}

    +
    {subHead}
    +
    + +
    + + {data.map((item, index) => ( + + )) + } + + { + current == 0 ? +
    + +
    +
    เบี้ยยังชีพผู้สูงอายุ
    +
    +
    คือ สวัสดิการขั้นพื้นฐานที่ภาครัฐจัดสรรไว้ให้กับผู้สูงอายุ เพื่อเป็นเงินช่วยเหลือ
    +
    และแบ่งเบาภาระค่าใช้จ่ายการดำรงชีวิตในแต่ละเดือน
    +
    +
    +
    + : + current == 1 ? +
    +
    +
    ใครบ้างมีสิทธิได้รับเบี้ยยังชีพผู้สูงอายุ
    +
    คุณสมบัติของผู้ที่จะได้รับเงินช่วยเหลือต้องมีเกณฑ์ ดังต่อไปนี้
    +
    +
    1. มีสัญชาติไทย
    +
    2. มีอายุ 59 ปีบริบูรณ์ขึ้นไป
    +
    3. ต้องไม่เคยได้รับสิทธิประโยชน์จากหน่วยงานของรัฐ หรือรัฐวิสาหกิจ
    +
    +
    ตัวอย่างการคำนวณอายุ
    +
    การลงทะเบียนของปี 2560 ต้องเป็นผู้สูงอายุที่เกิดก่อนวันที่ 1 ตุลาคม 2501
    +
    ส่วนผู้สูงอายุที่ทะเบียนราษฎรระบุเฉพาะปีเกิด
    +
    ให้ถือว่าเกิดวันที่ 1 มกราคม ของปีนั้น ๆ
    +
    สิทธิประโยชน์จากหน่วยงานของรัฐ หรือรัฐวิสาหกิจ
    +
    ไม่ว่าจะเป็น เงินบำนาญ เบี้ยหวัด บำนาญพิเศษ รวมถึงเงินอื่น ๆ ในลักษณะเดียวกัน เช่น
    + +
    - ผู้สูงอายุที่อยู่ในสถานสงเคราะห์ของรัฐ หรือองค์กรปกครองส่วนท้องถิ่น
    +
    - ผู้ที่ได้รับเงินเดือน ค่าตอบแทน รายได้ประจำ หรือผลประโยชน์ตอบแทนอย่างอื่น
    +
    ที่รัฐจัดให้เป็นประจำ
    +
    +
    + : + current == 2 ? +
    +
    +
    การลงทะเบียนรับเบี้ยยังชีพผู้สูงอายุ
    +
    สำหรับผู้สูงอายุที่มีคุณสมบัติตามเกณฑ์ที่กำหนด
    +
    สามารถไปลงทะเบียนรับเบี้ยยังชีพด้วยตัวเองได้ตั้งแต่วันที่ 1-30 พฤศจิกายน ของทุกปี
    +
    +
    1. ผู้สูงอายุในกรุงเทพฯ ลงทะเบียน ณ สำนักงานเขตที่มีชื่ออยู่ในทะเบียนบ้าน
    +
    2. ผู้สูงอายุต่างจังหวัดยื่นได้ที่สำนักงานเทศบาล หรือองค์การบริหารส่วนตำบล (อบต.)
    +
    ที่ผู้สูงอายุมีชื่ออยู่ในทะเบียนบ้าน
    +
    +
    ช่องทางในการรับเงินเบี้ยยังชีพผู้สูงอายุ
    +
    +
    1. รับเป็นเงินสดด้วยตนเอง
    +
    2. ให้ผู้แทนที่ได้รับมอบอำนาจรับแทน
    +
    3. โอนเข้าบัญชีธนาคารในนามของผู้สูงอายุ
    +
    4. โอนเข้าบัญชีธนาคารในนามของผู้แทนที่ได้รับมอบอำนาจจากผู้สูงอาย
    +
    +
    +
    + : + current == 3 ? +
    +
    +
    หลักฐานในการลงทะเบียนรับเบี้ยยังชีพผู้สูงอายุ
    +
    +
    1. บัตรประจำตัวประชาชนตัวจริงพร้อมสำเนา หรือบัตรอื่นที่ออก
    +
    โดยหน่วยงานของรัฐที่มีรูปถ่าย
    +
    2. ทะเบียนบ้านตัวจริงพร้อมสำเนา
    +
    3. สมุดบัญชีเงินฝากธนาคารตัวจริงพร้อมสำเนา สำหรับผู้ขอรับเงินผ่านธนาคาร
    +
    +
    กรณีที่ผู้สูงอายุไม่สามารถมาจดทะเบียนได้ด้วยตนเอง
    +
    สามารถมอบอำนาจเป็นลายลักษณ์อักษรให้ผู้อื่นเป็นผู้ยื่นคำขอขึ้นทะเบียนรับเงินแทนได้
    +
    โดยผู้แทนจะต้องมีหนังสือมอบอำนาจพร้อมสำเนาบัตรประจำตัวประชาชน
    +
    ของผู้รับมอบอำนาจมายื่นคำขอขึ้นทะเบียนด้วย
    +
    +
    + : + current == 4 ? +
    +
    +
    เบี้ยยังชีพที่ผู้สูงอายุจะได้รับ
    +
    ปัจจุบันการจ่ายเบี้ยยังชีพผู้สูงอายุ จะเป็นแบบขั้นบันไดตามช่วงอายุ
    +
    โดยผู้สูงอายุจะได้รับเงินช่วยเหลือเป็นรายเดือนต่อเนื่องไปจนกว่าจะเสียชีวิต
    +
    ซึ่งแบ่งได้ตามนี้
    +
    +
    - ช่วงอายุ 60 - 69 ปี ได้รับเงิน 600 บาทต่อเดือน
    +
    - ช่วงอายุ 70 - 79 ปี ได้รับเงิน 700 บาทต่อเดือน
    +
    - ช่วงอายุ 80 - 89 ปี ได้รับเงิน 800 บาทต่อเดือน
    +
    - ช่วงอายุ 90 ปีขึ้นไป ได้รับเงิน 1,000 บาทต่อเดือน
    +
    +
    +
    + : + null + } +
    +
    + : +
    +
    +

    {header}

    +

    {subHead}

    +
    +
    + + {data.map((item, index) => ( + + )) + } + + { + current == 0 ? +
    + +
    +
    เบี้ยยังชีพผู้สูงอายุ
    +
    +
    คือ สวัสดิการขั้นพื้นฐานที่ภาครัฐจัดสรรไว้ให้กับผู้สูงอายุ เพื่อเป็นเงินช่วยเหลือ
    +
    และแบ่งเบาภาระค่าใช้จ่ายการดำรงชีวิตในแต่ละเดือน
    +
    +
    +
    + : + current == 1 ? +
    +
    +
    ใครบ้างมีสิทธิได้รับเบี้ยยังชีพผู้สูงอายุ
    +
    คุณสมบัติของผู้ที่จะได้รับเงินช่วยเหลือต้องมีเกณฑ์ ดังต่อไปนี้
    +
    +
    1. มีสัญชาติไทย
    +
    2. มีอายุ 59 ปีบริบูรณ์ขึ้นไป
    +
    3. ต้องไม่เคยได้รับสิทธิประโยชน์จากหน่วยงานของรัฐ หรือรัฐวิสาหกิจ
    +
    +
    ตัวอย่างการคำนวณอายุ
    +
    การลงทะเบียนของปี 2560 ต้องเป็นผู้สูงอายุที่เกิดก่อนวันที่ 1 ตุลาคม 2501
    +
    ส่วนผู้สูงอายุที่ทะเบียนราษฎรระบุเฉพาะปีเกิด
    +
    ให้ถือว่าเกิดวันที่ 1 มกราคม ของปีนั้น ๆ
    +
    สิทธิประโยชน์จากหน่วยงานของรัฐ หรือรัฐวิสาหกิจ
    +
    ไม่ว่าจะเป็น เงินบำนาญ เบี้ยหวัด บำนาญพิเศษ รวมถึงเงินอื่น ๆ ในลักษณะเดียวกัน เช่น
    + +
    - ผู้สูงอายุที่อยู่ในสถานสงเคราะห์ของรัฐ หรือองค์กรปกครองส่วนท้องถิ่น
    +
    - ผู้ที่ได้รับเงินเดือน ค่าตอบแทน รายได้ประจำ หรือผลประโยชน์ตอบแทนอย่างอื่น
    +
    ที่รัฐจัดให้เป็นประจำ
    +
    +
    + : + current == 2 ? +
    +
    +
    การลงทะเบียนรับเบี้ยยังชีพผู้สูงอายุ
    +
    สำหรับผู้สูงอายุที่มีคุณสมบัติตามเกณฑ์ที่กำหนด
    +
    สามารถไปลงทะเบียนรับเบี้ยยังชีพด้วยตัวเองได้ตั้งแต่วันที่ 1-30 พฤศจิกายน ของทุกปี
    +
    +
    1. ผู้สูงอายุในกรุงเทพฯ ลงทะเบียน ณ สำนักงานเขตที่มีชื่ออยู่ในทะเบียนบ้าน
    +
    2. ผู้สูงอายุต่างจังหวัดยื่นได้ที่สำนักงานเทศบาล หรือองค์การบริหารส่วนตำบล (อบต.)
    +
    ที่ผู้สูงอายุมีชื่ออยู่ในทะเบียนบ้าน
    +
    +
    ช่องทางในการรับเงินเบี้ยยังชีพผู้สูงอายุ
    +
    +
    1. รับเป็นเงินสดด้วยตนเอง
    +
    2. ให้ผู้แทนที่ได้รับมอบอำนาจรับแทน
    +
    3. โอนเข้าบัญชีธนาคารในนามของผู้สูงอายุ
    +
    4. โอนเข้าบัญชีธนาคารในนามของผู้แทนที่ได้รับมอบอำนาจจากผู้สูงอาย
    +
    +
    +
    + : + current == 3 ? +
    +
    +
    หลักฐานในการลงทะเบียนรับเบี้ยยังชีพผู้สูงอายุ
    +
    +
    1. บัตรประจำตัวประชาชนตัวจริงพร้อมสำเนา หรือบัตรอื่นที่ออก
    +
    โดยหน่วยงานของรัฐที่มีรูปถ่าย
    +
    2. ทะเบียนบ้านตัวจริงพร้อมสำเนา
    +
    3. สมุดบัญชีเงินฝากธนาคารตัวจริงพร้อมสำเนา สำหรับผู้ขอรับเงินผ่านธนาคาร
    +
    +
    กรณีที่ผู้สูงอายุไม่สามารถมาจดทะเบียนได้ด้วยตนเอง
    +
    สามารถมอบอำนาจเป็นลายลักษณ์อักษรให้ผู้อื่นเป็นผู้ยื่นคำขอขึ้นทะเบียนรับเงินแทนได้
    +
    โดยผู้แทนจะต้องมีหนังสือมอบอำนาจพร้อมสำเนาบัตรประจำตัวประชาชน
    +
    ของผู้รับมอบอำนาจมายื่นคำขอขึ้นทะเบียนด้วย
    +
    +
    + : + current == 4 ? +
    +
    +
    เบี้ยยังชีพที่ผู้สูงอายุจะได้รับ
    +
    ปัจจุบันการจ่ายเบี้ยยังชีพผู้สูงอายุ จะเป็นแบบขั้นบันไดตามช่วงอายุ
    +
    โดยผู้สูงอายุจะได้รับเงินช่วยเหลือเป็นรายเดือนต่อเนื่องไปจนกว่าจะเสียชีวิต
    +
    ซึ่งแบ่งได้ตามนี้
    +
    +
    - ช่วงอายุ 60 - 69 ปี ได้รับเงิน 600 บาทต่อเดือน
    +
    - ช่วงอายุ 70 - 79 ปี ได้รับเงิน 700 บาทต่อเดือน
    +
    - ช่วงอายุ 80 - 89 ปี ได้รับเงิน 800 บาทต่อเดือน
    +
    - ช่วงอายุ 90 ปีขึ้นไป ได้รับเงิน 1,000 บาทต่อเดือน
    +
    +
    +
    + : + current == 5 ? +
    +
    +
    การเซ็นสําเนาที่ถูกต้อง
    +
    +
    1. ขีดเส้นคร่อมบนตัวสำเนาในส่วนที่เป็นข้อมูล
    +
    เกี่ยวกับเจ้าของเอกสาร หรือไม่ก็ได้
    +
    2. ควรระบุวัตถุประสงค์ในการนำไปใช้ให้ชัดเจนว่า เอกสารฉบับนั้นใช้สำหรับทำอะไร เช่น
    +
    “ใช้เฉพาะการสมัครงานเท่านั้น” หรือ “ใช้สำหรับติดต่อเรื่อง…เท่านั้น”
    +
    3. ระบุ วัน เดือน ปี ณ วันที่ยื่นเรื่อง
    +
    4. เขียนข้อความทั้งหมดด้วยหมึกสีดำ
    +
    5. ต้องเขียนข้อความทั้งหมดลงบนสำเนาส่วนที่เป็นบัตร
    +
    + +
    +
    + : + null + } +
    +
    + } +
    +
    +
    + } +
    + ) +} +export default Allowance; \ No newline at end of file diff --git a/pages/index/Contact.js b/pages/index/Contact.js new file mode 100644 index 00000000..5c0c0b60 --- /dev/null +++ b/pages/index/Contact.js @@ -0,0 +1,290 @@ +import React, { useState, useEffect } from 'react'; +import Head from 'next/head'; +import NavBar from '../../components/layout/nav'; +import { useMediaQuery } from 'react-responsive'; +import { CopyToClipboard } from 'react-copy-to-clipboard'; +import { Skeleton, Card, Avatar, message, Tooltip } from 'antd'; +import { FacebookFilled, EnvironmentFilled, CopyFilled, EllipsisOutlined } from '@ant-design/icons'; +const { Meta } = Card; + +const Contact = () => { + const isSmallScreen = useMediaQuery({ maxDeviceWidth: 575.98 }) + const [header, setHeader] = useState("การติดต่อหน่วยงาน") + const [subHead, setSubHead] = useState("อำเภอกะทู้ จังหวัดภูเก็ต") + + const [department, setDepartment] = useState([ + { + img: "/static/imgContact1.png", + name: "สำนักงานเทศบาลเมืองกะทู้", + detail: "12 ม.2 ถ.วิชิตสงคราม ต.กะทู้ อ.กะทู้ จ.ภูเก็ต โทร.076-321500", + tel: "076321500", + link: "https://www.facebook.com/kathu.municipality", + map: "https://www.google.com/maps/place/%E0%B8%AA%E0%B8%B3%E0%B8%99%E0%B8%B1%E0%B8%81%E0%B8%87%E0%B8%B2%E0%B8%99%E0%B9%80%E0%B8%97%E0%B8%A8%E0%B8%9A%E0%B8%B2%E0%B8%A5%E0%B9%80%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%87%E0%B8%81%E0%B8%B0%E0%B8%97%E0%B8%B9%E0%B9%89/@7.9111378,98.3452833,17z/data=!3m1!4b1!4m5!3m4!1s0x3050305d21d9042d:0x24ca59f8b15d6fde!8m2!3d7.9111378!4d98.347472" + }, + { + img: "/static/imgContact2.png", + name: "สถานีตำรวจภูธรกะทู้", + detail: "51/22 ม.6 ถ.วิชิตสงคราม ต.กะทู้ อ.กะทู้ จ.ภูเก็ต โทร.076-323300", + tel: "076323300", + link: "https://www.facebook.com/Kathu.Phuket.Police", + map: "https://www.google.com/maps/place/%E0%B8%AA%E0%B8%96%E0%B8%B2%E0%B8%99%E0%B8%B5%E0%B8%95%E0%B8%B3%E0%B8%A3%E0%B8%A7%E0%B8%88%E0%B8%A0%E0%B8%B9%E0%B8%98%E0%B8%A3%E0%B8%81%E0%B8%B0%E0%B8%97%E0%B8%B9%E0%B9%89/@7.9084711,98.3305519,17z/data=!3m1!4b1!4m5!3m4!1s0x30503042d20d8c13:0x53b56df584a63ddb!8m2!3d7.9084711!4d98.3327406" + }, + { + img: "/static/imgContact3.png", + name: "ที่ว่าการอำเภอกะทู้", + detail: "51/16 ถ.วิชิตสงคราม ต.กะทู้ อ.กะทู้ จ.ภูเก็ต โทร.076-321133", + tel: "076321133", + link: "https://www.facebook.com/tevakarnaumpor", + map: "https://www.google.co.th/maps/place/%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%A7%E0%B9%88%E0%B8%B2%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%AD%E0%B8%B3%E0%B9%80%E0%B8%A0%E0%B8%AD%E0%B8%81%E0%B8%B0%E0%B8%97%E0%B8%B9%E0%B9%89+Kathu+District+Office/@7.9100774,98.3360604,16z/data=!4m8!1m2!2m1!1z4LiX4Li14LmI4Lin4LmI4Liy4LiB4Liy4Lij4Lit4Liz4LmA4Lig4Lit4LiB4Liw4LiX4Li54LmJICDguIjguLHguIfguKvguKfguLHguJTguKDguLnguYDguIHguYfguJU!3m4!1s0x3050305d2835917d:0x9a921465196e83a6!8m2!3d7.9090171!4d98.3334266?hl=th&authuser=0" + }, + ]) + + const [help, setHelp] = useState([ + { + img: "/static/imgContact4.png", + name: "โรงพยาบาลส่งเสริมสุขภาพตำบล ตำบลกะทู้", + detail: "59/3 ม.4 ต.กะทู้ อ.กะทู้ จ.ภูเก็ต โทร.076-321548", + tel: "076321548", + map: "https://www.google.com/maps/place/%E0%B9%82%E0%B8%A3%E0%B8%87%E0%B8%9E%E0%B8%A2%E0%B8%B2%E0%B8%9A%E0%B8%B2%E0%B8%A5%E0%B8%AA%E0%B9%88%E0%B8%87%E0%B9%80%E0%B8%AA%E0%B8%A3%E0%B8%B4%E0%B8%A1%E0%B8%AA%E0%B8%B8%E0%B8%82%E0%B8%A0%E0%B8%B2%E0%B8%9E%E0%B8%95%E0%B8%B3%E0%B8%9A%E0%B8%A5%E0%B8%95%E0%B8%B3%E0%B8%9A%E0%B8%A5%E0%B8%95%E0%B8%B3%E0%B8%9A%E0%B8%A5%E0%B8%81%E0%B8%B0%E0%B8%97%E0%B8%B9%E0%B9%89/@7.916979,98.3415863,17z/data=!3m1!4b1!4m5!3m4!1s0x30503057af5e0b47:0xb21089b5f78f4817!8m2!3d7.916979!4d98.343775" + }, + { + img: "/static/imgContact5.png", + name: "โรงพยาบาลป่าตอง", + detail: " 57 ถ.ใสน้ำเย็น ต.ป่าตอง อ.กะทู้ จ.ภูเก็ต เปิด 24 ชม. โทร.076-3426334", + tel: "0763426334", + map: "https://www.google.co.th/maps/place/%E0%B9%82%E0%B8%A3%E0%B8%87%E0%B8%9E%E0%B8%A2%E0%B8%B2%E0%B8%9A%E0%B8%B2%E0%B8%A5%E0%B8%9B%E0%B9%88%E0%B8%B2%E0%B8%95%E0%B8%AD%E0%B8%87/@7.896479,98.2996783,17z/data=!3m1!4b1!4m5!3m4!1s0x30503aa248747279:0xe0ff9b6f01619ceb!8m2!3d7.896479!4d98.301867?hl=th&authuser=0" + }, + + ]) + + const [status, setStatus] = useState(false) + + const [home, setHome] = useState( + [ + { name: "เกี่ยวกับเรา", href: "/index/about" }, + { name: "สังคมผู้สูงอายุ", href: "/index/society" }, + { name: "เบี้ยยังชีพ", href: "/index/allowance" }, + { name: "เข้าสู่หน้าหลัก", href: "/main" } + ] + ) + + const [homeMin, setHomeMin] = useState( + [ + { name: "เกี่ยวกับเรา", href: "/index/about" }, + { name: "สังคมผู้สูงอายุ", href: "/index/society" }, + { name: "เบี้ยยังชีพ", href: "/index/allowance" }, + { name: "เข้าสู่หน้าหลัก", href: "/main" }, + ] + ) + + const [loading, setLoading] = useState(true) + + useEffect(() => { + setTimeout(() => { + setLoading(false); + }, 1500) + }, []) + + const success = () => { + message.success('คัดลอกสำเร็จ'); + } + + const text = prompt text; + + const buttonWidth = 70; + + const onConfirm = (order) => { + setStatus(order) + } + + return ( + + { + typeof document === 'undefined' ? + null : + + + Eldery DB + + + +
    +
    + { + isSmallScreen ? +
    +
    +

    {header}

    +
    {subHead}
    +
    + +
    +
    + { + department.map((item, index) => ( + + + + + , + + + + + , + + + + + , + + ]} + > + + + } + title={item.name} + subTitle={item.detail} + description={item.detail} + /> + + + )) + } +
    + +
    + { + help.map((item, index) => ( + + + + + , + + + + + , + + ]} + > + + + } + title={item.name} + subTitle={item.detail} + description={item.detail} + /> + + + )) + } +
    +
    +
    + : +
    +
    +

    {header}

    +

    {subHead}

    +
    + +
    +
    + { + department.map((item, index) => ( + + + + + , + + + + + , + + + + + , + + ]} + > + + + } + title={item.name} + subTitle={item.detail} + description={item.detail} + /> + + + )) + } +
    + +
    + { + help.map((item, index) => ( + + + + + , + + + + + , + + ]} + > + + + } + title={item.name} + subTitle={item.detail} + description={item.detail} + /> + + + )) + } +
    +
    +
    + } +
    +
    +
    + } +
    + ) +} +export default Contact; \ No newline at end of file diff --git a/pages/index/Society.js b/pages/index/Society.js new file mode 100644 index 00000000..d35f2ba1 --- /dev/null +++ b/pages/index/Society.js @@ -0,0 +1,126 @@ +import React, { useState } from 'react'; +import Head from 'next/head'; +import NavBar from '../../components/layout/nav'; +import { useMediaQuery } from 'react-responsive'; + +const Society = () => { + const isSmallScreen = useMediaQuery({ maxDeviceWidth: 575.98 }) + const [data, setData] = useState([ + { + title: "ศูนย์การเรียนรู้สำหรับผู้สูงอายุ", + amount: "มีทั้งหมด 14 เเห่ง", + text: "การเรียนรู้ เพื่อการพัฒนาศักยภาพผู้สูงอายุ", + subtext: "ไม่ว่าจะเป็นตัวผู้สูงอายุเอง หรือผู้ที่อาศัยอยู่กับผู้สูงอายุ" + }, + { + title: "สถานพยาบาล", + amount: "มีทั้งหมด 7 เเห่ง", + text: "โดยเป็นสถานพยาบาลที่มีช่องทางพิเศษบริการผู้สูงอายุ", + subtext: "ทำให้สามารถเข้าถึงการบริการสุขภาพได้สะดวก รวดเร็ว" + }, + { + title: "กิจกรรมสำหรับผู้สูงอายุในด้านต่างๆ", + amount: "", + text: "เช่น ด้านฝึกอาชีพ สุขภาพ นันทนาการ เป็นต้น", + subtext: "" + }, + ]) + + const [header, setHeader] = useState("การจัดการเกี่ยวกับสังคมผู้สูงอายุ") + const [subHead, setSubHead] = useState("ภายในอำเภอกะทู้ จังหวัดภูเก็ต") + + const [status, setStatus] = useState(false) + + const [home, setHome] = useState( + [ + { name: "เกี่ยวกับเรา", href: "/index/about" }, + { name: "เบี้ยยังชีพ", href: "/index/allowance" }, + { name: "เข้าสู่หน้าหลัก", href: "/main" } + ] + ) + + const [homeMin, setHomeMin] = useState( + [ + { name: "เกี่ยวกับเรา", href: "/index/about" }, + { name: "เบี้ยยังชีพ", href: "/index/allowance" }, + { name: "เข้าสู่หน้าหลัก", href: "/main" }, + ] + ) + + const onConfirm = (order) => { + setStatus(order) + } + + return ( + + { + typeof document === 'undefined' ? + null : + + + Eldery DB + + + +
    +
    + { + isSmallScreen ? +
    +
    +

    {header}

    +
    {subHead}
    +
    + +
    + +
    + { + data.map((item, index) => ( +
    +
    +
    {item.title}
    +
    +
    {item.amount}
    +
    {item.text}
    +
    {item.subtext}
    +
    + )) + } +
    +
    +
    + : +
    +
    +

    {header}

    +

    {subHead}

    +
    + +
    + +
    + { + data.map((item, index) => ( +
    +
    +
    {item.title}
    +
    {item.amount}
    +
    +
    {item.text}
    +
    {item.subtext}
    +
    + )) + } +
    +
    +
    + } +
    +
    +
    + } +
    + ) +} +export default Society; \ No newline at end of file diff --git a/pages/index/contact.js b/pages/index/contact.js deleted file mode 100644 index 3344c38a..00000000 --- a/pages/index/contact.js +++ /dev/null @@ -1,109 +0,0 @@ -import React from 'react' -import { Carousel } from 'rsuite'; -import Nav_index from '../../components/nav_index' -import Cardcontact from '../../components/layout/cardcontact' -import Sheetapi from '../../config/api' - - -class Contact extends React.Component { - - constructor(props) { - super(props); - this.state = { - userlist: [], - img: [ - { img: "/static/contact1.jpg" }, - { img: "/static/contact2.jpg" }, - { img: "/static/contact3.jpg" }, - { img: "/static/contact4.jpg" }, - { img: "/static/contact5.jpg" }, - ] - } - } - - async componentDidMount() { - let userOauth = JSON.parse(localStorage.getItem("myOauth")) - this.access_token = userOauth.data.access_token - await this.userList('การติดต่อสำนักงานเทศบาลเมืองกะทู้!B4:G') - } - - userList = async (value) => { - try { - this.list = await Sheetapi.getSheet(this.access_token, value) - - for (let i = 0; i < this.list.length; i++) { - let value = await { - รูปภาพ: this.list[i][0], - คำนำหน้าชื่อ: this.list[i][1], - ชื่อ: this.list[i][2], - นามสกุล: this.list[i][3], - ตำเเหน่ง: this.list[i][4], - เบอร์ติดต่อ: this.list[i][5], - - - } - this.setState(prevState => ({ - userlist: [...prevState.userlist, value] - })) - } - - } catch (err) { - console.log(err); - } - } - - render() { - const { userlist, img } = this.state - - return ( -
    - -
    -
    -
    -

    การติดต่อสำนักงานเทศบาลเมืองกะทู้

    -

    ตำบลกะทู้ อำเภอกะทู้ จังหวัดภูเก็ต

    -
    -
    -
    -
    - - { - userlist.map((item, index) => { - return ( - - ) - }) - } -
    - - -
    - - { - img.map((item, index) => { - return ( - - ) - }) - } - - -
    -
    -
    -
    - ) - } -} -export default Contact; \ No newline at end of file diff --git a/pages/index/services.js b/pages/index/services.js deleted file mode 100644 index 6a91c50f..00000000 --- a/pages/index/services.js +++ /dev/null @@ -1,196 +0,0 @@ -import React from 'react' -import Nav_index from '../../components/nav_index' -import { Steps, ButtonGroup, Button, Message } from 'rsuite'; -import 'rsuite/lib/styles/index.less'; - -const styles = { - width: '200px', - display: 'inline-table', - verticalAlign: 'top' -}; - -class Services extends React.Component { - - constructor() { - super(); - this.state = { - step: 0, - message: 0 - }; - this.decline = this.decline.bind(this); - this.increase = this.increase.bind(this); - } - changePercent(nextstep) { - const step = nextstep < 0 ? 0 : nextstep > 3 ? 3 : nextstep; - - this.setState({ - step, - message: step - }); - } - decline() { - this.changePercent(this.state.step - 1); - } - increase() { - this.changePercent(this.state.step + 1); - } - - - render() { - - const { step, message } = this.state; - return ( -
    - -
    -
    -
    -

    การบริการ และการช่วยเหลือ

    - -

    การลงทะเบียน เเละยื่นคำขอรับเบี้ยยังชีพผู้สูงอายุ

    -
    -
    -
    - -
    - - - - - - - - - - - -
    - -
    - - -

    หลักฐาน

    -
    - 1. บัตรประจำตัวประชาชน หรือบัตรที่มีรูปถ่ายที่ออกโดยหน่วยงานรัฐพร้อมสำเนา
    - 2. ทะเบียนบ้านพร้อมสำเนา
    - 3. สมุดบัญชีธนาคาร พร้อมสำเนา (กรณีรับเงินผ่านธนาคาร) -
    - -
    -

    แบบฟอร์มที่เกี่ยวข้อง

    - - เเบบคำขอลงทะเบียนรับเงินเบี้ยยังชีพผู้สูงอายุ - หนังสือมอบอำนาจ -

    - } - /> - - { - message == 1 ? - -
    - 1. มีสัญชาติไทย อายุหกสิบปีบริบูรณ์ขึ้นไป
    - 2. มีภูมิลำเนาอยู่ในเขตองค์การปกครองส่วนท้องถิ่นตามทะเบียนบ้าน
    - 3. ไม่เป็นผู้ได้รับสวัสดิการ หรือสิทธิประโยชน์อื่นใดจากหน่วยงานของรัฐ
    - รัฐวิสาหกิจ หรือองค์กรปกครองส่วนท้องถิ่น เช่น ผู้ได้รับเงินบำนาญ เบี้ยวัด
    - ผู้ที่อยู่อาศัยในสถานสงเคราะห์ของรัฐ หรือองค์กรปกครองส่วนท้องถิ่น - -
    -

    ยกเว้นผู้พิการ เเละผู้ป่วยเอดส์

    -

    - } - /> - : - message == 3 ? - -
    - รายชื่อเพศชาย - รายชื่อเพศหญิง - รายชื่อรวม -

    - } - /> - : - null - } - -
    - -
    - -

    หลักฐาน

    -
    - 1. บัตรประจำตัวประชาชน หรือบัตรที่มีรูปถ่ายที่ออกโดยหน่วยงานรัฐพร้อมสำเนา
    - 2. ทะเบียนบ้านพร้อมสำเนา
    - 3. สมุดบัญชีธนาคาร พร้อมสำเนา (กรณีรับเงินผ่านธนาคาร) -
    - -
    -

    แบบฟอร์มที่เกี่ยวข้อง

    - - เเบบคำขอลงทะเบียนรับเงินเบี้ยยังชีพผู้สูงอายุ - หนังสือมอบอำนาจ -

    - } - /> - - - -
    - 1. มีสัญชาติไทย อายุหกสิบปีบริบูรณ์ขึ้นไป
    - 2. มีภูมิลำเนาอยู่ในเขตองค์การปกครองส่วนท้องถิ่นตามทะเบียนบ้าน
    - 3. ไม่เป็นผู้ได้รับสวัสดิการ หรือสิทธิประโยชน์อื่นใดจากหน่วยงานของรัฐ
    - รัฐวิสาหกิจ หรือองค์กรปกครองส่วนท้องถิ่น เช่น ผู้ได้รับเงินบำนาญ เบี้ยวัด
    - ผู้ที่อยู่อาศัยในสถานสงเคราะห์ของรัฐ หรือองค์กรปกครองส่วนท้องถิ่น -
    -

    ยกเว้นผู้พิการ เเละผู้ป่วยเอดส์

    -

    - } - /> - - -
    - รายชื่อเพศชาย - รายชื่อเพศหญิง - รายชื่อรวม -

    - } - /> - -
    - -
    -
    -
    - ) - } -} -export default Services; diff --git a/pages/main.js b/pages/main.js index 9625a953..40fe23b3 100644 --- a/pages/main.js +++ b/pages/main.js @@ -1,44 +1,18 @@ -import React, { useState } from 'react' -import dynamic from 'next/dynamic' -import Map from '../components/layout/Map'; -import Navbar_main from '../components/nav_main'; -import Sidebar from '../components/layout/sidebar'; +import React from 'react' +import Dashboard from '../components/layout/dashboard'; -const BarMap = dynamic( - () => import('../components/chart/barMap'), - { ssr: false } -) - -const Main = () => { - - const [status, setStatus] = useState(true) - - const onConfirm = (order) => { - setStatus(order) - } +const MainPage = () => { return ( -
    - - -
    -
    -
    -

    สังคมผู้สูงอายุ

    -

    จำนวนประชากรผู้สูงอายุภายในจังหวัดภูเก็ต

    -
    -
    - -
    - -
    - -
    -
    -
    -
    -
    -
    + + { + typeof document === 'undefined' ? + null : + + Main + + } + ) } -export default Main; \ No newline at end of file +export default MainPage; \ No newline at end of file diff --git a/pages/main/allowance.js b/pages/main/allowance.js deleted file mode 100644 index c3603a2e..00000000 --- a/pages/main/allowance.js +++ /dev/null @@ -1,45 +0,0 @@ -import React, {useState} from 'react' -import CardData from '../../components/layout/cardmain'; -import Navbar_main from '../../components/nav_main'; -import Sidebar from '../../components/layout/sidebar'; -import _ from 'lodash' - -const Allowance = props => { - - const [status,setStatus] = useState(true) - - const onConfirm = (order) => { - setStatus(order) - } - - return ( -
    - - -
    -
    -
    -

    การรับเบี้ยยังชีพผู้สูงอายุ

    -

    ของประชากรผู้สูงอายุภายในตำบลกะทู้ อำเภอกะทู้ จังหวัดภูเก็ต

    - -
    - - - - -
    -
    ที่มา: แบบสำรวจข้อมูลพื้นฐานผู้สูงอายุ ผู้พิการเเละผู้ป่วยในชุมชน
    -
    เทศบาลเมืองกะทู้ จังหวัดภูเก็ต
    -
    -
    -
    -
    -
    - -
    - ) -} -export default Allowance - diff --git a/pages/main/chart.js b/pages/main/chart.js deleted file mode 100644 index 85c7c66d..00000000 --- a/pages/main/chart.js +++ /dev/null @@ -1,62 +0,0 @@ -import React, { useState, useEffect } from 'react' -import dynamic from 'next/dynamic' -import Navbar_main from '../../components/nav_main'; -import Sidebar from '../../components/layout/sidebar'; -import Footer from '../../components/layout/footer'; -import _ from 'lodash' - -const Barchart = dynamic( - () => import('../../components/chart/barChart'), - { ssr: false } -) - -const Piechart = dynamic( - () => import('../../components/chart/pieChart'), - { ssr: false } -) - -const Piechart2 = dynamic( - () => import('../../components/chart/pieChart2'), - { ssr: false } -) - -const Chart = () => { - - const [status, setStatus] = useState(true) - - const onConfirm = (order) => { - setStatus(order) - } - - return ( -
    - - -
    -
    -
    -

    ข้อมูลทางสถิติ

    -

    ของประชากรผู้สูงอายุภายในตำบลกะทู้ อำเภอกะทู้ จังหวัดภูเก็ต

    -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    - -
    - ) -} -export default Chart diff --git a/pages/main/doc.js b/pages/main/doc.js deleted file mode 100644 index c39ac3bc..00000000 --- a/pages/main/doc.js +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react' -import Navbar_main from '../../components/nav_main'; -import Sidebar from '../../components/layout/sidebar'; -import dynamic from 'next/dynamic' -import Footer from '../../components/layout/footer'; -import _ from 'lodash' - -const PieDoc = dynamic( - () => import('../../components/chart/pieDoc'), - { ssr: false } -) - -class Doc extends React.Component { - - constructor(props) { - super(props); - this.state = { - status: true - } - } - - onConfirm = (order) => { - this.setState({ - status: order, - }) - } - - render() { - - return ( - -
    - - -
    -
    -
    -

    สวัสดิการจากรัฐ

    -

    ของประชากรผู้สูงอายุภายในตำบลกะทู้ อำเภอกะทู้ จังหวัดภูเก็ต

    -
    -
    - -
    -
    -
    -
    -
    - -
    - ) - } -} -export default Doc - diff --git a/pages/main/economy.js b/pages/main/economy.js index 4b93a505..d273e0ed 100644 --- a/pages/main/economy.js +++ b/pages/main/economy.js @@ -1,112 +1,118 @@ -import React from 'react' -import Sheetapi from '../../config/api' -import dynamic from 'next/dynamic' -import Navbar_main from '../../components/nav_main'; -import Sidebar from '../../components/layout/sidebar'; -import Footer from '../../components/layout/footer'; -import _ from 'lodash' - -const PieEconomy = dynamic( - () => import('../../components/chart/pieEconomy'), - { ssr: false } -) - -const PieEconomy2 = dynamic( - () => import('../../components/chart/pieEconomy2'), - { ssr: false } -) - -const PieEconomy3 = dynamic( - () => import('../../components/chart/pieEconomy3'), - { ssr: false } -) +import React, { useState } from 'react'; +import dynamic from 'next/dynamic'; +import Head from 'next/head'; +import _ from 'lodash'; +import Dashboard from '../../components/layout/dashboard'; +import { useMediaQuery } from 'react-responsive'; +import Empty from '../../components/Empty'; const BarEconomy = dynamic( () => import('../../components/chart/barEconomy'), { ssr: false } ) -const BarEconomy2 = dynamic( +const BarEconomy3 = dynamic( () => import('../../components/chart/barEconomy2'), { ssr: false } ) -const BarEconomy3 = dynamic( +const BarEconomy2 = dynamic( () => import('../../components/chart/barEconomy3'), { ssr: false } ) +const PieEconomy = dynamic( + () => import('../../components/chart/pieEconomy2'), + { ssr: false } +) -class Economy extends React.Component { - - constructor(props) { - super(props); - - this.state = { - status: true - } - } +const PieEconomy2 = dynamic( + () => import('../../components/chart/pieEconomy3'), + { ssr: false } +) - onConfirm = (order) => { - this.setState({ - status: order, - }) - } +const Economy = () => { + const isLaptop = useMediaQuery({ minDeviceWidth: 1224 }) + const isTablet = useMediaQuery({ minWidth: 768 }) + const isMobile = useMediaQuery({ maxDeviceWidth: 768 }) - async componentDidMount() { - await localStorage.setItem("myOauth", JSON.stringify(await Sheetapi.postSheetValues())) + const [tokenError, setTokenError] = useState(false) + const statusToken = (token) => { + setTokenError(token) } - render() { + return ( + + + { + typeof document === 'undefined' ? + null : + + + Eldery Dashboard + + + +
    + { + !tokenError ? + +
    +
    +

    ข้อมูลด้านเศรษฐกิจ

    +

    ของประชากรผู้สูงอายุ ภายในอำเภอกะทู้ จังหวัดภูเก็ต

    + { + isLaptop || isTablet ? +
    +
    +
    + + +
    +
    + + +
    + +
    + +
    +
    +
    + : + isMobile ? +
    +
    +
    + + + + + +
    +
    +
    + : + null + } +
    +
    +
    + : + + } +
    +
    - return ( -
    -
    - - + + } + -
    -
    -

    ด้านเศรษฐกิจ

    -

    ของประชากรผู้สูงอายุภายในตำบลกะทู้ อำเภอกะทู้ จังหวัดภูเก็ต

    -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    - -
    - ) - } + ) } export default Economy; diff --git a/pages/main/help.js b/pages/main/help.js deleted file mode 100644 index 101efbc2..00000000 --- a/pages/main/help.js +++ /dev/null @@ -1,71 +0,0 @@ -import React from 'react' -import Navbar_main from '../../components/nav_main'; -import Sidebar from '../../components/layout/sidebar'; -import Sheetapi from '../../config/api' -import dynamic from 'next/dynamic' -import Footer from '../../components/layout/footer'; -import _ from 'lodash' - -const Linechart = dynamic( - () => import('../../components/chart/lineHelp'), - { ssr: false } -) - -const Piechart = dynamic( - () => import('../../components/chart/pieHelp'), - { ssr: false } -) - -class Help extends React.Component { - - constructor(props) { - super(props); - - this.state = { - status: true - } - } - - async componentDidMount() { - await localStorage.setItem("myOauth", JSON.stringify(await Sheetapi.postSheetValues())) - - } - - onConfirm = (order) => { - this.setState({ - status: order, - }) - } - - - render() { - - return ( - -
    -
    - - -
    -
    -

    การช่วยเหลือของหน่วยงานภาครัฐ

    -

    ของประชากรผู้สูงอายุภายในตำบลกะทู้ อำเภอกะทู้ จังหวัดภูเก็ต

    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    - -
    - ) - } -} -export default Help - diff --git a/pages/main/hospital.js b/pages/main/hospital.js index 33443771..e96e332b 100644 --- a/pages/main/hospital.js +++ b/pages/main/hospital.js @@ -1,105 +1,152 @@ -import React from 'react' -import Sheetapi from '../../config/api' -import dynamic from 'next/dynamic' -import Navbar_main from '../../components/nav_main'; -import Sidebar from '../../components/layout/sidebar'; -import Footer from '../../components/layout/footer'; -import _ from 'lodash' +import React, { useState } from 'react'; +import dynamic from 'next/dynamic'; +import Head from 'next/head'; +import _ from 'lodash'; +import Dashboard from '../../components/layout/dashboard'; +import { useMediaQuery } from 'react-responsive'; +import Empty from '../../components/Empty'; -const PieHospital = dynamic( - () => import('../../components/chart/piehospital'), +const BarHospital = dynamic( + () => import('../../components/chart/barHospital3'), { ssr: false } ) -const PieHospital2 = dynamic( - () => import('../../components/chart/pieHospital2'), +const BarHospital2 = dynamic( + () => import('../../components/chart/barHospital4'), { ssr: false } ) -const Barchart = dynamic( - () => import('../../components/chart/barHospital'), +const BarHospital3 = dynamic( + () => import('../../components/chart/barHospital2'), { ssr: false } ) -const BarHospital2 = dynamic( - () => import('../../components/chart/barHospital2'), +const PieHospital = dynamic( + () => import('../../components/chart/piehospital'), { ssr: false } ) -const BarHospital3 = dynamic( - () => import('../../components/chart/barHospital3'), +const PieHospital2 = dynamic( + () => import('../../components/chart/pieHospital2'), { ssr: false } ) -const BarHospital4 = dynamic( - () => import('../../components/chart/barHospital4'), +const PieHospital3 = dynamic( + () => import('../../components/chart/barHospital'), { ssr: false } ) -class Hospital extends React.Component { +const Hospital = () => { - constructor(props) { - super(props); + const isLaptop = useMediaQuery({ minDeviceWidth: 1224 }) + const isTablet = useMediaQuery({ minWidth: 768 }) + const isMobile = useMediaQuery({ maxDeviceWidth: 768 }) - this.state = { - status: true - } + const [status, setStatus] = useState(false) + const [tokenError, setTokenError] = useState(false) + + const statusMain = (order) => { + setStatus(order) } - onConfirm = (order) => { - this.setState({ - status: order, - }) + const statusToken = (token) => { + setTokenError(token) } - async componentDidMount() { - await localStorage.setItem("myOauth", JSON.stringify(await Sheetapi.postSheetValues())) + return ( + + { + typeof document === 'undefined' ? + null : + + + Eldery Dashboard + + + +
    + { + !tokenError ? + + {/* */} +
    +
    +

    ข้อมูลด้านสุขภาพ

    +

    ของประชากรผู้สูงอายุ ภายในอำเภอกะทู้ จังหวัดภูเก็ต

    - } + {isLaptop ? +
    +
    +
    + + +
    - render() { - - return ( -
    -
    - - - -
    -
    -

    โรงพยาบาลเเละการดูแลรักษา

    -

    ประชากรผู้สูงอายุภายในตำบลกะทู้ อำเภอกะทู้ จังหวัดภูเก็ต

    -

    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    +
    + + +
    + +
    + + +
    + +
    + +
    + : + isTablet ? +
    +
    +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + +
    + : + isMobile ? +
    + +
    +
    + + + + + + +
    +
    +
    + : + null + } +
    +
    + + : + + }
    -
    -
    -
    -
    -
    - ) - } +
    + +
    + } + + ) } export default Hospital; \ No newline at end of file diff --git a/pages/main/mantable.js b/pages/main/mantable.js deleted file mode 100644 index de4271ba..00000000 --- a/pages/main/mantable.js +++ /dev/null @@ -1,61 +0,0 @@ -import React, { useState, useEffect } from 'react' -import Nav_table from '../../components/nav_table'; -import Table from '../../components/layout/table' -import Sheetapi from '../../config/api' - - -class Mantable extends React.Component { - - constructor(props) { - super(props); - this.state = { - data: [] - } - } - - async componentDidMount() { - await localStorage.setItem("myOauth", JSON.stringify(await Sheetapi.postSheetValues())) - let userOauth = JSON.parse(localStorage.getItem("myOauth")) - this.access_token = userOauth.data.access_token - await this.list('เพศชาย!A8:E') - } - - list = async (value) => { - - try { - - this.list = await Sheetapi.getSheet(this.access_token, value) - - for (let i = 0; i < this.list.length; i++) { - let value = await { - ลำดับที่: this.list[i][0], - คำนำหน้า: this.list[i][2], - ชื่อ: this.list[i][3], - นามสกุล: this.list[i][4], - - } - this.setState(prevState => ({ - data: [...prevState.data, value] - })) - } - } catch (err) { - console.log(err); - } - - } - - render() { - const { data } = this.state - - - return ( - - - - - ) - } -} -export default Mantable \ No newline at end of file diff --git a/pages/main/people.js b/pages/main/people.js new file mode 100644 index 00000000..14e605c3 --- /dev/null +++ b/pages/main/people.js @@ -0,0 +1,122 @@ +import React, { useState, useEffect } from 'react' +import dynamic from 'next/dynamic' +import Head from 'next/head'; +import _ from 'lodash'; +import { useMediaQuery } from 'react-responsive'; +import Map from '../../components/layout/Map'; +import Empty from '../../components/Empty'; +import Dashboard from '../../components/layout/dashboard'; + + +const BarMap = dynamic( + () => import('../../components/chart/barMap'), + { ssr: false } +) + +const Barchart = dynamic( + () => import('../../components/chart/barChart'), + { ssr: false } +) + +const Piechart = dynamic( + () => import('../../components/chart/pieChart'), + { ssr: false } +) + +const Piechart2 = dynamic( + () => import('../../components/chart/pieChart2'), + { ssr: false } +) + +const People = () => { + const isLaptop = useMediaQuery({ minDeviceWidth: 1224 }) + const isTablet = useMediaQuery({ minWidth: 768 }) + const isMobile = useMediaQuery({ maxDeviceWidth: 768 }) + + ; + + const [status, setStatus] = useState(false) + const [userOauth, setUserOauth] = useState() + const [tokenError, setTokenError] = useState(false) + + const statusToken = (token) => { + setTokenError(token) + } + + return ( + + { + typeof document === 'undefined' ? + null : + + + Eldery Dashboard + + + +
    + { + !tokenError ? + +
    +
    +

    ข้อมูลด้านทั่วไป

    +

    ของประชากรผู้สูงอายุ ภายในอำเภอกะทู้ จังหวัดภูเก็ต

    + { + isLaptop ? + +
    +
    + +
    +
    +
    + + +
    + +
    +
    + : + isTablet ? +
    +
    + +
    + + +
    + +
    +
    + : + isMobile ? +
    + +
    + +
    + + +
    + +
    +
    + : + null + } +
    +
    +
    + : + + } +
    +
    + +
    + } +
    + ) +} +export default People; \ No newline at end of file diff --git a/pages/main/service.js b/pages/main/service.js index 4b040e96..13080c15 100644 --- a/pages/main/service.js +++ b/pages/main/service.js @@ -1,10 +1,25 @@ -import React from 'react' -import Sheetapi from '../../config/api' -import dynamic from 'next/dynamic' -import Navbar_main from '../../components/nav_main'; -import Sidebar from '../../components/layout/sidebar'; -import Footer from '../../components/layout/footer'; -import _ from 'lodash' +import React, { useState } from 'react'; +import dynamic from 'next/dynamic'; +import Head from 'next/head'; +import _ from 'lodash'; +import Dashboard from '../../components/layout/dashboard'; +import { useMediaQuery } from 'react-responsive'; +import Empty from '../../components/Empty'; + +const PieHelp = dynamic( + () => import('../../components/chart/pieHelp'), + { ssr: false } +) + +const LineHelp = dynamic( + () => import('../../components/chart/lineHelp'), + { ssr: false } +) + +const PieDoc = dynamic( + () => import('../../components/chart/pieDoc'), + { ssr: false } +) const PieService = dynamic( () => import('../../components/chart/pieService'), @@ -16,56 +31,106 @@ const PieService2 = dynamic( { ssr: false } ) +const Service = () => { -class Service extends React.Component { + const isLaptop = useMediaQuery({ minDeviceWidth: 1224 }) + const isTablet = useMediaQuery({ minWidth: 768 }) + const isMobile = useMediaQuery({ maxDeviceWidth: 768 }) - constructor(props) { - super(props); + const [status, setStatus] = useState(false) + const [tokenError, setTokenError] = useState(false) - this.state = { - status: true - } + const statusMain = (order) => { + setStatus(order) } - - onConfirm = (order) => { - this.setState({ - status: order, - }) + const statusToken = (token) => { + setTokenError(token) } + return ( - async componentDidMount() { - await localStorage.setItem("myOauth", JSON.stringify(await Sheetapi.postSheetValues())) + + { + typeof document === 'undefined' ? + null : + + + Eldery Dashboard + + + +
    + { + !tokenError ? + +
    +
    +

    หน่วยงานภาครัฐ

    +

    สวัสดิการ การเข้าร่วมกิจกรรม และการช่วยเหลือ

    + { + isLaptop ? +
    +
    +
    + + +
    +
    + + + +
    +
    +
    + : + isTablet ? +
    +
    +
    + + +
    +
    + +
    +
    + + +
    - } - - render() { +
    +
    + : + isMobile ? +
    +
    +
    + + + + + +
    +
    - return ( -
    -
    - - -
    -
    -

    หน่วยงานเเละการบริการ

    -

    ของประชากรผู้สูงอายุภายในตำบลกะทู้ อำเภอกะทู้ จังหวัดภูเก็ต

    -

    -
    -
    - -
    -
    - -
    +
    +
    +
    + : + null + } +
    +
    + + : + + }
    -
    -
    -
    -
    + -
    - ) - } +
    + } + + ) } export default Service diff --git a/pages/main/social.js b/pages/main/social.js index 0e466f09..ae61c437 100644 --- a/pages/main/social.js +++ b/pages/main/social.js @@ -1,90 +1,125 @@ -import React from 'react' -import Sheetapi from '../../config/api' -import dynamic from 'next/dynamic' -import Navbar_main from '../../components/nav_main'; -import Sidebar from '../../components/layout/sidebar'; -import Footer from '../../components/layout/footer'; -import _ from 'lodash' +import React, { useState } from 'react'; +import dynamic from 'next/dynamic'; +import Head from 'next/head'; +import _ from 'lodash'; +import Dashboard from '../../components/layout/dashboard'; +import { useMediaQuery } from 'react-responsive'; +import Empty from '../../components/Empty'; const BarSocial = dynamic( () => import('../../components/chart/barSocial'), { ssr: false } ) -const DonutSocial = dynamic( - () => import('../../components/chart/donutSocial'), +const PieSocial2 = dynamic( + () => import('../../components/chart/pieSocial'), { ssr: false } ) - const PieSocial = dynamic( - () => import('../../components/chart/pieSocial'), + () => import('../../components/chart/pieSocial2'), { ssr: false } ) -const PieSocial2 = dynamic( - () => import('../../components/chart/pieSocial2'), +const DonutSocial = dynamic( + () => import('../../components/chart/donutSocial'), { ssr: false } ) -class Social extends React.Component { - constructor(props) { - super(props); +const Social = () => { - this.state = { - status: true - } - } - - onConfirm = (order) => { - this.setState({ - status: order, - }) - } + const isLaptop = useMediaQuery({ minDeviceWidth: 1224 }) + const isTablet = useMediaQuery({ minWidth: 768 }) + const isMobile = useMediaQuery({ maxDeviceWidth: 768 }) + const [tokenError, setTokenError] = useState(false) - async componentDidMount() { - await localStorage.setItem("myOauth", JSON.stringify(await Sheetapi.postSheetValues())) - + const statusToken = (token) => { + setTokenError(token) } - render() { - - return ( -
    -
    - - - - -
    -
    -

    สภาพทางสังคม

    -

    ของประชากรผู้สูงอายุภายในตำบลกะทู้ อำเภอกะทู้ จังหวัดภูเก็ต

    -

    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    + return ( + + { + typeof document === 'undefined' ? + null : + + + Eldery Dashboard + + + +
    + { + !tokenError ? + +
    +
    +

    ข้อมูลด้านสังคม

    +

    ของประชากรผู้สูงอายุ ภายในอำเภอกะทู้ จังหวัดภูเก็ต

    + + { + isLaptop ? +
    +
    +
    + + + +
    + +
    + + +
    + +
    +
    + : + isTablet ? +
    +
    +
    + + + +
    + +
    + + +
    + +
    +
    + : + isMobile ? +
    +
    +
    + + + + +
    +
    +
    + : + null + } +
    +
    +
    + : + + }
    -
    -
    -
    -
    -
    - ) - } + + + + } + + ) } export default Social; diff --git a/pages/main/totaltable.js b/pages/main/totaltable.js deleted file mode 100644 index 7df1b9fe..00000000 --- a/pages/main/totaltable.js +++ /dev/null @@ -1,57 +0,0 @@ -import React from 'react' -import Nav_table from '../../components/nav_table'; -import Table from '../../components/layout/table' -import Sheetapi from '../../config/api' - -class Totaltable extends React.Component { - - constructor(props) { - super(props); - this.state = { - data: [] - } - } - - async componentDidMount() { - await localStorage.setItem("myOauth", JSON.stringify(await Sheetapi.postSheetValues())) - let userOauth = JSON.parse(localStorage.getItem("myOauth")) - this.access_token = userOauth.data.access_token - await this.list('ข้อมูลทั่วไป!A9:F') - } - - list = async (value) => { - - try { - - this.list = await Sheetapi.getSheet(this.access_token, value) - - for (let i = 0; i < this.list.length; i++) { - let value = await { - ลำดับที่: this.list[i][0], - คำนำหน้า: this.list[i][3], - ชื่อ: this.list[i][4], - นามสกุล: this.list[i][5], - - } - this.setState(prevState => ({ - data: [...prevState.data, value] - })) - } - } catch (err) { - console.log(err); - } - - } - - render() { - return ( -
    - -
    - - ) - } -} -export default Totaltable \ No newline at end of file diff --git a/pages/main/womantable.js b/pages/main/womantable.js deleted file mode 100644 index 9e677569..00000000 --- a/pages/main/womantable.js +++ /dev/null @@ -1,60 +0,0 @@ -import React from 'react' -import Nav_table from '../../components/nav_table'; -import Table from '../../components/layout/table' -import Sheetapi from '../../config/api' - -class Womantable extends React.Component { - - constructor(props) { - super(props); - this.state = { - data: [] - } - } - - async componentDidMount() { - await localStorage.setItem("myOauth", JSON.stringify(await Sheetapi.postSheetValues())) - let userOauth = JSON.parse(localStorage.getItem("myOauth")) - this.access_token = userOauth.data.access_token - await this.list('เพศหญิง!A8:E') - } - - list = async (value) => { - - try { - - this.list = await Sheetapi.getSheet(this.access_token, value) - - for (let i = 0; i < this.list.length; i++) { - let value = await { - ลำดับที่: this.list[i][0], - คำนำหน้า: this.list[i][2], - ชื่อ: this.list[i][3], - นามสกุล: this.list[i][4], - - } - this.setState(prevState => ({ - data: [...prevState.data, value] - })) - } - } catch (err) { - console.log(err); - } - - } - - render() { - return ( -
    - - -
    - - - - ) - } -} -export default Womantable \ No newline at end of file diff --git a/static/Profile.svg b/static/Profile.svg deleted file mode 100644 index 21b48d03..00000000 --- a/static/Profile.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/static/about1.png b/static/about1.png deleted file mode 100644 index a85bdfd3..00000000 Binary files a/static/about1.png and /dev/null differ diff --git a/static/active.svg b/static/active.svg deleted file mode 100644 index c8bababe..00000000 --- a/static/active.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/activehover.svg b/static/activehover.svg deleted file mode 100644 index 6c5a0025..00000000 --- a/static/activehover.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/agency.jpg b/static/agency.jpg new file mode 100644 index 00000000..4bcc71b3 Binary files /dev/null and b/static/agency.jpg differ diff --git a/static/allowance.png b/static/allowance.png deleted file mode 100644 index 13c4dc21..00000000 Binary files a/static/allowance.png and /dev/null differ diff --git a/static/arrow.svg b/static/arrow.svg new file mode 100644 index 00000000..15decdab --- /dev/null +++ b/static/arrow.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/static/bg-test4.jpg b/static/bg-test4.jpg deleted file mode 100644 index 32a87a4b..00000000 Binary files a/static/bg-test4.jpg and /dev/null differ diff --git a/static/bg.jpg b/static/bg.jpg deleted file mode 100644 index ed6fc9cd..00000000 Binary files a/static/bg.jpg and /dev/null differ diff --git a/static/box1.jpg b/static/box1.jpg new file mode 100644 index 00000000..085d6d66 Binary files /dev/null and b/static/box1.jpg differ diff --git a/static/box2.jpg b/static/box2.jpg new file mode 100644 index 00000000..597bc8d2 Binary files /dev/null and b/static/box2.jpg differ diff --git a/static/box3.jpg b/static/box3.jpg new file mode 100644 index 00000000..a9f2d858 Binary files /dev/null and b/static/box3.jpg differ diff --git a/static/box4.jpg b/static/box4.jpg new file mode 100644 index 00000000..cf84777a Binary files /dev/null and b/static/box4.jpg differ diff --git a/static/chart.svg b/static/chart.svg deleted file mode 100644 index be8f3b6a..00000000 --- a/static/chart.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/contact1.jpg b/static/contact1.jpg deleted file mode 100644 index 0a25e173..00000000 Binary files a/static/contact1.jpg and /dev/null differ diff --git a/static/contact2.jpg b/static/contact2.jpg deleted file mode 100644 index d4207c04..00000000 Binary files a/static/contact2.jpg and /dev/null differ diff --git a/static/contact3.jpg b/static/contact3.jpg deleted file mode 100644 index c71f9e47..00000000 Binary files a/static/contact3.jpg and /dev/null differ diff --git a/static/contact4.jpg b/static/contact4.jpg deleted file mode 100644 index e1634720..00000000 Binary files a/static/contact4.jpg and /dev/null differ diff --git a/static/contact5.jpg b/static/contact5.jpg deleted file mode 100644 index da80d44e..00000000 Binary files a/static/contact5.jpg and /dev/null differ diff --git a/static/couple.svg b/static/couple.svg deleted file mode 100644 index e94bd6f2..00000000 --- a/static/couple.svg +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/cover-img.png b/static/cover-img.png deleted file mode 100644 index 63f8580d..00000000 Binary files a/static/cover-img.png and /dev/null differ diff --git a/static/cover-img2.png b/static/cover-img2.png deleted file mode 100644 index dba76e77..00000000 Binary files a/static/cover-img2.png and /dev/null differ diff --git a/static/cover-img3.png b/static/cover-img3.png deleted file mode 100644 index 70e0d2f5..00000000 Binary files a/static/cover-img3.png and /dev/null differ diff --git a/static/cover-img4.png b/static/cover-img4.png deleted file mode 100644 index b3f7191a..00000000 Binary files a/static/cover-img4.png and /dev/null differ diff --git a/static/cover-img5.png b/static/cover-img5.png deleted file mode 100644 index cb5e975e..00000000 Binary files a/static/cover-img5.png and /dev/null differ diff --git a/static/cover-img6.png b/static/cover-img6.png deleted file mode 100644 index 785ee57d..00000000 Binary files a/static/cover-img6.png and /dev/null differ diff --git a/static/cover-img7.png b/static/cover-img7.png deleted file mode 100644 index f20072b9..00000000 Binary files a/static/cover-img7.png and /dev/null differ diff --git a/static/cover-img8.png b/static/cover-img8.png deleted file mode 100644 index 1a4618b5..00000000 Binary files a/static/cover-img8.png and /dev/null differ diff --git a/static/dashboard.svg b/static/dashboard.svg deleted file mode 100644 index c67867ae..00000000 --- a/static/dashboard.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/document.svg b/static/document.svg deleted file mode 100644 index cc5cc0ec..00000000 --- a/static/document.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/economy.svg b/static/economy.svg deleted file mode 100644 index b796681f..00000000 --- a/static/economy.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/empty.jpg b/static/empty.jpg new file mode 100644 index 00000000..420aae13 Binary files /dev/null and b/static/empty.jpg differ diff --git a/static/gifcover.gif b/static/gifcover.gif new file mode 100644 index 00000000..55356171 Binary files /dev/null and b/static/gifcover.gif differ diff --git a/static/gifcover2.gif b/static/gifcover2.gif new file mode 100644 index 00000000..4d432205 Binary files /dev/null and b/static/gifcover2.gif differ diff --git a/static/help.svg b/static/help.svg deleted file mode 100644 index 31bcc840..00000000 --- a/static/help.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/home.svg b/static/home.svg deleted file mode 100644 index 495d5b77..00000000 --- a/static/home.svg +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/hospital.svg b/static/hospital.svg deleted file mode 100644 index 098e744c..00000000 --- a/static/hospital.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/imgAllowance.png b/static/imgAllowance.png new file mode 100644 index 00000000..5219a10b Binary files /dev/null and b/static/imgAllowance.png differ diff --git a/static/imgContact1.png b/static/imgContact1.png new file mode 100644 index 00000000..b8e87bd1 Binary files /dev/null and b/static/imgContact1.png differ diff --git a/static/imgContact2.png b/static/imgContact2.png new file mode 100644 index 00000000..6d0a9c75 Binary files /dev/null and b/static/imgContact2.png differ diff --git a/static/imgContact3.png b/static/imgContact3.png new file mode 100644 index 00000000..0c678797 Binary files /dev/null and b/static/imgContact3.png differ diff --git a/static/imgContact4.png b/static/imgContact4.png new file mode 100644 index 00000000..768961c5 Binary files /dev/null and b/static/imgContact4.png differ diff --git a/static/imgContact5.png b/static/imgContact5.png new file mode 100644 index 00000000..1a766fd1 Binary files /dev/null and b/static/imgContact5.png differ diff --git a/static/logo-google-sheets.svg b/static/logo-google-sheets.svg deleted file mode 100644 index 4b3ec32e..00000000 --- a/static/logo-google-sheets.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/man.png b/static/man.png deleted file mode 100644 index 60fa2264..00000000 Binary files a/static/man.png and /dev/null differ diff --git a/static/old-man.svg b/static/old-man.svg deleted file mode 100644 index 83c7596a..00000000 --- a/static/old-man.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/old-woman.svg b/static/old-woman.svg deleted file mode 100644 index 1ec4e64f..00000000 --- a/static/old-woman.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/project1.jpg b/static/project1.jpg deleted file mode 100644 index 0c8dc9a4..00000000 Binary files a/static/project1.jpg and /dev/null differ diff --git a/static/project2.png b/static/project2.png deleted file mode 100644 index 01efe8e3..00000000 Binary files a/static/project2.png and /dev/null differ diff --git a/static/project3.png b/static/project3.png deleted file mode 100644 index 5eeac75b..00000000 Binary files a/static/project3.png and /dev/null differ diff --git a/static/service.svg b/static/service.svg deleted file mode 100644 index 0979fc9d..00000000 --- a/static/service.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/social.svg b/static/social.svg deleted file mode 100644 index be8c2efa..00000000 --- a/static/social.svg +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/testcover.svg b/static/testcover.svg new file mode 100644 index 00000000..14aeacf2 --- /dev/null +++ b/static/testcover.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/testcoverAbout.jpg b/static/testcoverAbout.jpg new file mode 100644 index 00000000..2ccd6f14 Binary files /dev/null and b/static/testcoverAbout.jpg differ diff --git a/static/testcoverNew.png b/static/testcoverNew.png new file mode 100644 index 00000000..3b8775c7 Binary files /dev/null and b/static/testcoverNew.png differ diff --git a/static/woment.png b/static/woment.png deleted file mode 100644 index a0784635..00000000 Binary files a/static/woment.png and /dev/null differ diff --git a/styles/about.scss b/styles/about.scss new file mode 100644 index 00000000..5af10a1b --- /dev/null +++ b/styles/about.scss @@ -0,0 +1,215 @@ +$font-header: "Frank Ruhl Libre" !important; +$font-text-sub: #978bab !important; + +.warp-about { + .page-content { + padding-top: 3rem; + + @media (max-width: 575.98px) { + padding-top: 1rem; + } + + .container-fluid { + display: flex; + flex-direction: column; + .head-content { + h3 { + font-size: 2rem !important; + margin-bottom: 1rem !important; + } + } + .detail-content { + display: flex; + justify-content: center; + margin: 2rem 3rem; + + @media (max-width: 575.98px) { + flex-direction: column; + align-items: center; + margin: 0; + } + img { + height: 20rem; + margin-right: 1rem; + @media (max-width: 575.98px) { + margin-right: 0; + height: 15rem; + width: 15rem; + } + } + + .data-detail-content { + display: flex; + flex-direction: column; + + @media (max-width: 575.98px) { + margin-top: 1rem; + } + + .title-content { + padding: 0 3rem; + + @media (max-width: 768px) { + padding: 0; + } + + .header-title-content { + font-weight: bold !important; + } + + h6 { + text-align: start; + opacity: 0.8; + margin-bottom: 0.5rem !important; + font-weight: lighter; + } + } + .more-content { + padding: 0 3rem; + display: flex; + @media (max-width: 575.98px) { + justify-content: center; + } + @media (max-width: 768px) { + padding: 0; + } + + h6 { + margin-top: 1rem; + font-weight: bold; + text-align: center; + } + + img { + cursor: pointer; + margin-top: 0.5rem; + margin-left: 1rem; + width: 2rem; + height: auto; + } + .hvr-wobble-horizontal:hover { + animation-name: hvr-wobble-horizontal; + animation-duration: 1s; + animation-timing-function: ease-in-out; + animation-iteration-count: 1; + display: inline-block; + vertical-align: middle; + transform: perspective(1px) translateZ(0); + } + + @keyframes hvr-wobble-horizontal { + 17% { + transform: translateX(8px); + } + 34% { + transform: translateX(-6px); + } + 50% { + transform: translateX(4px); + } + 70% { + transform: translateX(-2px); + } + 80% { + transform: translateX(1px); + } + 100% { + transform: translateX(0); + } + } + } + } + } + } + } +} + +.warp-about-page { + .page-content { + padding-top: 3rem; + + + .container-fluid { + display: flex; + flex-direction: column; + .head-content { + h1.name-header { + font-family: $font-header; + } + + .title-about { + display: flex; + flex-direction: column; + align-items: center; + h6 { + margin-top: 0.5rem; + color: $font-text-sub; + font-style: italic; + } + } + } + .detail-content { + display: flex; + justify-content: center; + align-items: center; + margin: 2rem 3rem; + + @media (max-width: 575.98px) { + flex-direction: column; + } + img { + height: 20rem; + margin-right: 1rem; + @media (max-width: 575.98px) { + margin-right: 0; + height: 18rem; + } + } + + .data-detail-content { + margin-left: 2rem; + display: flex; + flex-direction: column; + + @media (max-width: 575.98px) { + margin-top: 1rem; + margin-left: 0; + } + + .title-content { + padding: 0 3rem; + + @media (max-width: 768px) { + padding: 0; + } + + .header-title-content { + font-weight: bold !important; + } + + .sub-title-content { + margin-left: 1rem; + } + + h6 { + text-align: start; + opacity: 0.8; + margin-bottom: 0.5rem !important; + font-weight: lighter; + } + } + .more-content { + padding: 0 3rem; + display: flex; + + h6 { + margin-top: 1rem; + font-weight: bold; + text-align: center; + } + } + } + } + } + } +} diff --git a/styles/agency.scss b/styles/agency.scss new file mode 100644 index 00000000..3383124b --- /dev/null +++ b/styles/agency.scss @@ -0,0 +1,124 @@ +$primary-color: #39b54a !important; +$font-text-sub: #978bab !important; +$font-color-text-in-border: white !important; + +.warp-agency { + user-select: none; + margin: 1rem; + .head-agency { + display: flex; + flex-direction: column; + align-items: center; + margin: 2rem 1rem; + svg { + margin: 1rem 0; + height: 1rem; + stroke: $primary-color; + stroke-width: 10; + } + + .title-agency { + display: flex; + flex-direction: column; + align-items: center; + h6 { + color: $font-text-sub; + font-style: italic; + + sup { + color: red; + } + } + } + } + + .content-agency { + display: flex; + justify-content: space-evenly; + margin: 1rem; + .content-agency-card { + display: flex; + flex-direction: column; + align-items: center; + padding: 1rem; + border: 1px solid $primary-color; + border-radius: 2rem; + img { + width: 15rem; + height: 12rem; + margin-bottom: 1rem; + } + .agency-box { + border: 1px solid $primary-color; + border-radius: 0.5rem; + background-color: $primary-color; + width: 2rem; + height: 2rem; + h6 { + text-align: center; + color: $font-color-text-in-border; + padding: 0.5rem 0; + margin-bottom: 0 !important; + } + } + p { + margin: 1rem; + text-align: center; + } + } + } + + .content-agency-mobile { + display: flex; + justify-content: space-evenly; + margin: 1rem; + + @media (max-width: 575.98px) { + justify-content: start !important; + } + + img { + width: 20rem; + height: 15rem; + } + } + + .ant-steps-dot.ant-steps-small .ant-steps-item-tail::after { + background-color: $primary-color; + } + + .ant-steps-icon-dot { + background: $primary-color; + } + + .ant-steps-item-title { + color: black !important; + } + + //isMobile + .ant-steps { + width: 50% !important; + } + .ant-steps-item-content { + width: 20rem !important; + } + .ant-steps-item-title { + width: 20rem !important; + @media (max-width: 575.98px) { + margin-left: 1rem; + } + } + + .ant-steps-item-description { + width: 20rem !important; + + @media (max-width: 575.98px) { + margin-left: 1rem; + width: 17rem !important; + } + } + + .ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail::after { + background-color: $primary-color; + } +} diff --git a/styles/base.scss b/styles/base.scss index 8419ebe9..537b6bad 100644 --- a/styles/base.scss +++ b/styles/base.scss @@ -1,34 +1,54 @@ -@import "./card.scss"; -@import "./chart.scss"; -@import "./hamburgers.scss"; +@import "./nav.scss"; @import "./index.scss"; +@import "./cover.scss"; +@import "./about.scss"; +@import "./agency.scss"; +@import "./info.scss"; +@import "./footer.scss"; + +//Index +@import "./index/society.scss"; +@import "./index/allowance.scss"; +@import "./index/contact.scss"; + +//Main +@import "./dashboard.scss"; @import "./main.scss"; -@import "./menu-icon.scss"; -@import "./nav.scss"; +@import "./chart.scss"; +@import "./hamburgers.scss"; + @import "./sidebar.scss"; @import "./map.scss"; -@import "./index/services.scss"; -@import "./index/contact.scss"; -@import "./index//project.scss"; +//Other +@import "./error.scss"; +@import "./empty.scss"; $font: "Prompt", sans-serif; body { font-family: $font !important; - h1, h2, h3, h4, h5, h6, p, text{ - font-family: $font !important; - color: black !important; + h1, + h2, + h3, + h4, + h5, + h6, + p, + text { + user-select: none; + font-family: $font !important; + color: black !important; } } h1 { - color: black; - font-size: 3rem !important; + font-size: 2.5rem !important; text-align: center; margin-block-start: 0; margin-block-end: 0; padding: 0.5rem; + margin-bottom: 0 !important; @media (max-width: 1199.98px) { font-size: 2rem !important; @@ -40,10 +60,9 @@ h1 { } h2 { - color: black; - font-size: 1.7rem !important; + font-size: 1.5rem !important; text-align: center; - margin-bottom: 0; + margin-bottom: 0 !important; padding: 0.5rem; @media (max-width: 1199.98px) { @@ -56,43 +75,31 @@ h2 { } h3 { - color: black; font-size: 1.75rem; text-align: center; - margin: 0.5rem; } h4 { - color: black; font-size: 1.5rem; text-align: center; - padding-bottom: 0.5rem; } h5 { - color: black; font-size: 1rem !important; text-align: center; - margin-bottom: 0.5rem; } h6 { - color: black; font-size: 1rem !important; text-align: center; - margin-bottom: 1rem !important; } p { user-select: none; font-size: 1rem !important; - color: gray; - } text { - color: gray; - margin: 0.7rem 0 !important; font-size: 1rem; @media (max-width: 991.98px) { @@ -100,10 +107,6 @@ text { } } -a { - color: black; -} - a:hover { text-decoration-line: none !important; } @@ -113,39 +116,9 @@ img { } ul { + margin-left: 1rem; margin-bottom: 0 !important; margin-block-end: 0; padding-inline-start: 0.5rem !important; padding-inline-end: 0.5rem !important; } - -.btn-outline-center { - margin: 2rem 1rem; - display: inline-block; - font-weight: 400; - text-align: center; - vertical-align: middle; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - color: #007bff; - background-color: transparent; - border: 1px solid #007bff; - padding: 0.375rem 0.75rem; - font-size: 1rem; - line-height: 1.5; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, - box-shadow 0.15s ease-in-out; -} - -.btn-outline-center:hover { - color: #fff; - background-color: #007bff; - border-color: #007bff; -} - -.btn-primary{ - color: white !important; -} diff --git a/styles/card.scss b/styles/card.scss deleted file mode 100644 index b4f63e98..00000000 --- a/styles/card.scss +++ /dev/null @@ -1,181 +0,0 @@ -.card-chart { - display: flex; - justify-content: center; -} - -//Card -.warp-card-basic { - margin: 1rem; - display: flex; - justify-content: center; - - .card-group { - width: 50%; - padding: 0 1rem; - margin: 0 1rem; - - @media screen and (max-width: 600px) { - .card-group { - width: 100%; - display: block; - margin-bottom: 20px; - } - } - - .card { - display: flex; - justify-content: center; - border-radius: 1rem; - box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); - padding: 1rem; - text-align: center; - background-color: white; - cursor: pointer; - - img { - margin: 0.5rem; - width: 5rem; - height: 5rem; - cursor: pointer; - } - - .card-data { - display: flex; - - @media (max-width: 1199.98px) { - flex-direction: column; - align-items: center; - } - - img { - margin: 0.5rem; - width: 5rem; - height: 5rem; - cursor: pointer; - } - .card-text { - user-select: none; - width: 100%; - height: auto; - display: flex; - flex-direction: column; - align-items: flex-end; - margin: 0.5rem; - - @media (max-width: 1199.98px) { - align-items: center; - } - - h4 { - @media (max-width: 920px) { - font-size: 1.5rem !important; - } - } - } - } - } - - .card:hover { - box-shadow: 0 0 0.875rem 0 rgba(53, 64, 82, 0.05); - } - } - @media (max-width: 575.98px) { - flex-direction: column; - align-items: center; - } -} - -.warp-card-help { - margin-top: 1rem; - .card { - width: 50%; - box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); - border-radius: 0.5rem; - .card-body { - .card-title { - text-align: start; - margin-left: 0 !important; - } - .card-subtitle { - text-align: start; - margin-top: 0.5rem; - // color: black !important; - } - p { - color: black; - margin: 1rem 0; - } - } - } -} - -.warp-card { - margin: 1rem; - display: flex; - justify-content: center; - - .card-group { - padding: 0 1rem; - margin: 0 1rem; - - @media screen and (max-width: 600px) { - .card-group { - width: 100%; - display: block; - margin-bottom: 20px; - } - } - - .card { - display: flex; - justify-content: center; - border-radius: 1rem; - box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); - padding: 1rem; - text-align: left; - background-color: white; - cursor: pointer; - - .card-header { - text-align: left; - } - - .card-title { - text-align: left; - } - - .card-data { - display: flex; - - @media (max-width: 1199.98px) { - flex-direction: column; - align-items: center; - } - - img { - margin: 0.5rem; - width: 5rem; - height: 5rem; - cursor: pointer; - } - .card-text { - user-select: none; - width: 100%; - height: auto; - display: flex; - flex-direction: column; - align-items: flex-end; - margin: 0.5rem; - - @media (max-width: 1199.98px) { - align-items: center; - } - } - } - } - - .card:hover { - box-shadow: 0 0 0.875rem 0 rgba(53, 64, 82, 0.05); - } - } -} diff --git a/styles/chart.scss b/styles/chart.scss index 8ab9ea33..f5bd2412 100644 --- a/styles/chart.scss +++ b/styles/chart.scss @@ -1,82 +1,3 @@ -.warp-chart { - display: flex; - justify-content: center; - margin-bottom: 1rem; - - @media (max-width: 1199.98px) { - flex-direction: column; - align-items: center; - } - - .chart-contents { - width: 100%; - display: flex; - flex-direction: column; - align-items: center; - background-color: white; - border-radius: 0.5rem; - padding: 1.5rem 1rem 1rem 1rem; - margin: 0 2rem 2rem 2rem; - - @media (max-width: 991.98px) { - margin: 1rem !important; - } - } - - .chart-pic { - margin: 0.5rem 1rem; - - foreignObject { - .apexcharts-legend.center.position-right { - position: fixed !important; - top: 10px !important; - left: 1px; - } - .apexcharts-legend.center.position-right { - top: 3rem !important; - } - } - } -} - -.chart-center { - margin: 0; -} - -.warp-footer { - left: 0; - bottom: 0; - width: 100%; - min-height: 2rem; - margin-top: 3rem; - .chart-source { - margin-right: 1rem; - margin-bottom: 0.5rem; - padding-right: 0.5rem; - text-align: end !important; - width: auto; - - @media (max-width: 575.98px) { - text-align: center !important; - } - - a { - cursor: pointer; - h6 { - cursor: pointer; - user-select: none; - display: contents; - text-align: end; - margin-bottom: 0.5rem !important; - } - } - - p { - margin-bottom: 0 !important; - } - } -} - //Apexcharts .apexcharts-legend-text { font-family: "Prompt", sans-serif !important ; @@ -121,49 +42,4 @@ path { font-family: "Prompt", sans-serif !important ; } -////////////////////////////////////////////////////////////////// - -//Small -.warp-chart-small { - display: none; - - @media (max-width: 575.98px) { - display: flex !important; - } -} - -//Mobile -.warp-chart-mobile { - display: none; - - @media (min-width: 576px) and (max-width: 767.98px) { - display: flex !important; - } -} - -//Tablets -.warp-chart-tablets { - display: none; - - @media (min-width: 768px) and (max-width: 991.98px) { - display: flex !important; - } -} - -//Desktops -.warp-chart-desktops { - display: none; - - @media (min-width: 992px) and (max-width: 1199.98px) { - display: flex !important; - } -} - -//Large -.warp-chart-large { - display: none; - - @media (min-width: 1200px) { - display: flex !important; - } -} +////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/styles/cover.scss b/styles/cover.scss new file mode 100644 index 00000000..5432ca3d --- /dev/null +++ b/styles/cover.scss @@ -0,0 +1,121 @@ +$font-header: "Frank Ruhl Libre" !important; +$font-color: #071d40 !important; +$primary-color: #39b54a !important; +$bg-color: linear-gradient(to left, #a6d254, #83d2ae); +$border-bg-color: 1px solid #83d2ae; + + +.warp-cover { + // margin-top: 5rem; + // position: relative; + // text-align: center; + // line-height: 0; + // min-height: 80vh; + // height: auto; + + // img { + // object-fit: cover; + // width: 100%; + // height: 80vh; + // opacity: 0.6; + // @media (max-width: 575.98px) { + // height: 50vh; + // } + // } + + .page-content { + display: flex; + width: 100%; + height: auto; + position: relative; + padding-top: 3rem; + + .container-fluid { + display: flex; + .title { + padding-left: 9rem; + width: 50%; + display: flex; + flex-direction: column; + align-items: flex-start; + @media (min-width: 767px) and (max-width: 1024px) { + padding-left: 5rem; + width: 50%; + } + + h1 { + font-weight: bold; + color: $font-color; + } + h5 { + border: $border-bg-color; + cursor: pointer; + margin-top: 1rem; + background: $bg-color; + color: white !important; + border-radius: 2rem; + padding: 1rem 2rem; + } + h5:hover { + color: $font-color; + border: $border-bg-color; + background: white !important; + } + + .detail { + display: flex; + margin: 1rem 0.5rem; + svg { + height: 5.5rem; + width: 1rem; + stroke: $primary-color; + stroke-width: 3; + } + + .text-content { + display: flex; + flex-direction: column; + h6 { + color: $font-color; + text-align: start; + padding-top: 0.5rem; + margin-bottom: 0rem !important; + } + } + } + } + .cover { + display: flex; + justify-content: center; + width: 60%; + + @media (max-width: 1199.98px) { + width: 50%; + } + + img { + width: auto; + height: 25rem; + } + } + } + } + @media (max-width: 768.99px) { + .title { + display: flex; + align-items: center !important; + padding-left: 0 !important; + width: 100% !important; + text-align: center; + + .text-content { + align-items: center; + text-align: center !important; + h6{ + align-items: center; + text-align: center !important; + } + } + } + } +} diff --git a/styles/dashboard.scss b/styles/dashboard.scss new file mode 100644 index 00000000..32e278aa --- /dev/null +++ b/styles/dashboard.scss @@ -0,0 +1,116 @@ +$font-header: "Frank Ruhl Libre" !important; +$bg-color: white !important; +$font-color: rgba(0, 0, 0, 0.65) !important; +$hover-color: #1890ff; +$primary-color: #39b54a !important; + +.ant-layout { + width: 100%; + min-height: 100vh; + height: auto; + .logo { + cursor: pointer; + margin: 1rem; + h2 { + font-family: $font-header; + } + h6 { + font-family: $font-header; + } + } + + #components-layout-demo-custom-trigger .trigger { + font-size: 18px; + line-height: 64px; + padding: 0 24px; + cursor: pointer; + transition: color 0.3s; + } + + #components-layout-demo-custom-trigger .trigger:hover { + color: $hover-color; + } + + .site-layout .site-layout-background { + background: $bg-color; + } + + .ant-menu { + display: flex; + flex-direction: column; + margin-top: 1rem; + } + .ant-layout-header { + display: flex; + align-items: center; + padding: 1rem !important; + svg { + height: 1.5rem; + width: 1.5rem; + } + + nav { + min-height: auto; + } + .layout-header-navbar { + display: flex; + justify-content: flex-end; + + p { + color: $font-color; + cursor: pointer; + margin-bottom: 0; + margin: 0.5rem 1rem!important; + } + p:hover { + color: $primary-color; + } + } + } + + .ant-menu-inline-collapsed > .ant-menu-item { + display: flex; + justify-content: center; + } + + .ant-menu-item { + span { + margin-right: 0 !important; + } + + svg { + margin-right: 10px; + } + } + + .ant-menu-item > a:hover { + color: $primary-color; + } + + .ant-menu-item:active { + background-color: #dcedc8; + } + + .ant-menu-item > a:only-child { + display: flex; + align-items: center; + } + + .ant-menu-vertical .ant-menu-item:not(:last-child) { + display: flex; + } + + .ant-layout-sider { + background: $bg-color; + } + + .ant-menu-item.ant-menu-item-only-child .anticon { + margin-right: 10px; + } + + .ant-layout-content { + margin: 24px 16px; + padding: 24; + min-height: auto !important; + } +} diff --git a/styles/detail.scss b/styles/detail.scss deleted file mode 100644 index 6375906f..00000000 --- a/styles/detail.scss +++ /dev/null @@ -1,107 +0,0 @@ -.warp-detail { - position: absolute; - width: 100%; - min-height: 100vh; - height: auto; - background-color: #f3f5f7; - - .page-detail { - padding: 2rem 1rem 0 1rem !important; - - .container-detail { - border-radius: 1rem; - background-color: white; - text-align: center; - display: flex; - flex-direction: row; - justify-content: center; - - .item-header { - width: 50rem; - padding: 3rem 0; - } - - .btn-close { - width: 3rem; - padding: 1rem; - .close { - font-size: 2rem; - span { - user-select: none; - } - } - - .close:focus { - outline: none; - } - } - } - - .container-fluid { - display: flex; - justify-content: center; - } - } -} - -.page-content-detail { - display: flex; - width: 100%; - min-height: 30vh; - height: auto; - position: relative; - .container-fluid { - text-align: center; - margin-top: 2rem; - padding-right: 10px; - padding-left: 10px; - - @media (max-width: 1024px) { - flex-direction: column !important; - } - - h2 { - margin-top: 1.5rem; - margin-bottom: 2rem; - } - .textarea-center { - margin: 1rem 2rem; - text-align: center; - - text { - margin: 0.7rem 0; - color: black !important; - } - } - - .warp-card { - .card-group { - .card { - box-shadow: 0 0 0 0 !important; - - img { - width: 5rem; - height: 5rem; - - @media (max-width: 991.98px) { - width: 4rem; - height: 4rem; - } - } - } - - .card:hover { - box-shadow: 0 0 0 0 !important; - } - } - } - } - - .container-fluid.non { - .non { - display: none; - } - } -} - - diff --git a/styles/empty.scss b/styles/empty.scss new file mode 100644 index 00000000..53dc98fd --- /dev/null +++ b/styles/empty.scss @@ -0,0 +1,83 @@ +$font-header: "Frank Ruhl Libre" !important; +$font-color: #071d40 !important; +$bg-color: linear-gradient(to left, #a6d254, #83d2ae); +$border-bg-color: 1px solid #83d2ae; + +.warp-empty { + margin: 1rem 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + nav { + width: 100%; + margin-bottom: 4rem; + ul { + margin-left: 0; + display: flex; + justify-content: space-between; + + li { + h2 { + cursor: pointer; + } + } + } + } + + .collapsible-menu { + width: 100%; + margin-bottom: 4rem; + } + .content-empty { + img { + object-fit: cover; + } + + .title-empty { + display: flex; + flex-direction: column; + margin: 1rem; + + h4 { + user-select: none; + } + } + + @media (max-width: 768px) { + display: flex; + flex-direction: column; + align-items: center; + img { + width: 15rem; + height: 15rem; + } + .title-empty { + margin: 0; + margin-top: 1rem !important; + h4 { + font-size: 1rem; + } + } + } + } + + h5 { + cursor: pointer; + background-color: white; + border: $border-bg-color; + border-radius: 2rem; + padding: 1rem 2rem; + } + h5:hover { + color: white !important; + background: $bg-color; + } + + @media (max-width: 768px) { + h5 { + font-size: 0.7rem !important; + padding: 1rem; + } + } +} diff --git a/styles/error.scss b/styles/error.scss new file mode 100644 index 00000000..ec9565dc --- /dev/null +++ b/styles/error.scss @@ -0,0 +1,78 @@ +.warp-error { + margin-top: 3rem; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + nav { + width: 100%; + margin-bottom: 4rem; + ul { + margin-left: 0; + display: flex; + justify-content: space-between; + + li { + h2 { + cursor: pointer; + } + } + } + } + + .collapsible-menu { + width: 100%; + margin-bottom: 4rem; + } + .content-error { + img { + object-fit: cover; + } + + .title-error { + display: flex; + flex-direction: column; + margin: 1rem; + + h4 { + user-select: none; + } + } + + @media (max-width: 768px) { + display: flex; + flex-direction: column; + align-items: center; + img { + width: 15rem; + height: 15rem; + } + .title-error { + margin: 0; + margin-top: 1rem !important; + h4 { + font-size: 1rem; + } + } + } + } + + h5 { + cursor: pointer; + background-color: white; + border: $border-bg-color; + border-radius: 2rem; + padding: 1rem 2rem; + } + h5:hover { + color: white !important; + background: $bg-color; + } + + @media (max-width: 768px) { + h5 { + font-size: 0.7rem !important; + padding: 1rem; + } + } +} diff --git a/styles/footer.scss b/styles/footer.scss new file mode 100644 index 00000000..09ca8771 --- /dev/null +++ b/styles/footer.scss @@ -0,0 +1,15 @@ +$primary-color: #f8f3f3 !important; +$font-color: white !important; + +.warp-footer { + padding: 0.5rem 0; + width: 100%; + height: 3rem; + bottom: 0; + color: $font-color; + background-color: $primary-color; + + h6{ + margin-top: 0.5rem; + } +} \ No newline at end of file diff --git a/styles/hamburgers.scss b/styles/hamburgers.scss index 1dffb0b0..351d1de9 100644 --- a/styles/hamburgers.scss +++ b/styles/hamburgers.scss @@ -1,30 +1,33 @@ +$primary-color: #39b54a !important; + .box-hamberger { - width: 3.5rem; - height: 3rem; - padding-bottom: 1rem !important; + width: 2.5rem; + height: auto; + + a.btn{ + padding: 0.5rem; + } a.hamberger { position: relative; left: 1.5rem; - top: 2rem; + top: 1rem; } .btn.hamberger { - margin: 0.5rem 0 ; - margin-bottom: 0 !important; display: flex; flex-direction: column; width: 100%; transform: translate(-50%, -50%); cursor: pointer; - padding-bottom: 1rem; + } span { width: 100%; border-radius: 3px; height: 0.1rem; - background: #0693e3; + background: $primary-color; transition: all 0.3s; position: relative; } diff --git a/styles/index.scss b/styles/index.scss index e87c4967..f34846fd 100644 --- a/styles/index.scss +++ b/styles/index.scss @@ -3,69 +3,6 @@ min-height: 100vh; height: auto; } - -.warp-header { - position: relative; - text-align: center; - line-height: 0; - min-height: 80vh; - height: auto; - - img { - object-fit: cover; - width: 100%; - height: 91vh; - opacity: 0.6; - } - - .page-content { - display: flex; - width: 100%; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - .container-fluid { - margin-top: 0; - text-align: center; - padding-right: 10px; - padding-left: 10px; - - h2 { - margin-top: 1.5rem; - margin-bottom: 2rem; - } - } - } -} - -.page-content { - display: flex; - width: 100%; - min-height: 50vh; - position: relative; - .container-fluid { - text-align: center; - margin-top: 2rem; - padding-right: 10px; - padding-left: 10px; - - h2 { - margin-top: 1.5rem; - margin-bottom: 2rem; - } - .textarea-center { - margin: 1rem 2rem; - text-align: center; - - text { - margin: 0.7rem 0; - color: black !important; - } - } - } -} - .gm-style-iw-d { a { h6 { diff --git a/styles/index/allowance.scss b/styles/index/allowance.scss new file mode 100644 index 00000000..8840712e --- /dev/null +++ b/styles/index/allowance.scss @@ -0,0 +1,202 @@ +$primary-color: #39b54a !important; + +.warp-allowance-page { + .page-content { + padding-top: 3rem; + + .container-fluid { + display: flex; + flex-direction: column; + .head-content { + h1.name-header { + font-family: $font-header; + } + + .title-about { + display: flex; + flex-direction: column; + align-items: center; + h6 { + margin-top: 0.5rem; + color: $font-text-sub; + font-style: italic; + } + } + } + .detail-content { + display: flex; + justify-content: center; + // align-items: center; + margin: 2rem 3rem; + + @media (max-width: 575.98px) { + margin-top: 1rem !important; + flex-direction: column; + margin: 0 1rem; + } + img { + height: 20rem; + margin-right: 1rem; + margin-bottom: 1rem; + @media (max-width: 575.98px) { + margin-right: 0; + height: 18rem; + } + } + + .data-detail-content { + width: 50%; + margin-left: 2rem; + display: flex; + align-items: center; + flex-direction: column; + + @media (max-width: 575.98px) { + width: 100%; + margin-top: 1rem; + margin-left: 0; + } + + .title-content { + padding: 0 3rem; + margin-bottom: 1rem; + + @media (max-width: 768px) { + padding: 0; + } + + .header-title-content { + margin-top: 1rem; + font-weight: bold !important; + } + + .sub-title-content { + margin-left: 1rem; + + .sub-content { + margin-left: 1rem; + } + } + + h6 { + text-align: start; + opacity: 0.8; + margin-bottom: 0.5rem !important; + font-weight: lighter; + } + } + .more-content { + padding: 0 3rem; + display: flex; + + h6 { + margin-top: 1rem; + font-weight: bold; + text-align: center; + } + } + } + } + } + } + + .ant-steps { + width: 50%; + } + + .ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail::after { + background-color: $primary-color; + } + .ant-steps-item-title { + display: flex; + flex-direction: column; + user-select: none; + + .ant-steps-item-subtitle { + margin-left: 0; + color: rgba(0, 0, 0, 0.65); + } + } + + //Icon + .ant-steps-item-process { + .ant-steps-item-icon { + background: $primary-color; + border-color: $primary-color; + } + } + + .ant-steps-item-finish { + .ant-steps-item-icon { + border-color: $primary-color; + } + .ant-steps-item-icon > .ant-steps-icon { + color: $primary-color; + } + } + + .ant-steps + .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) + > .ant-steps-item-container[role="button"]:hover + .ant-steps-item-icon { + border-color: $primary-color; + } + + .ant-steps + .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) + > .ant-steps-item-container[role="button"]:hover + .ant-steps-item-icon + .ant-steps-icon { + color: $primary-color; + } + + .ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail::after { + height: 2rem; + background: $primary-color; + @media (max-width: 575.98px) { + height: inherit; + } + } + + //Content + .ant-steps-item-content { + outline: none; + margin-bottom: 1rem; + } + + .ant-steps + .ant-steps-item:not(.ant-steps-item-active) + > .ant-steps-item-container[role="button"]:hover + .ant-steps-item-title, + .ant-steps + .ant-steps-item:not(.ant-steps-item-active) + > .ant-steps-item-container[role="button"]:hover + .ant-steps-item-subtitle, + .ant-steps + .ant-steps-item:not(.ant-steps-item-active) + > .ant-steps-item-container[role="button"]:hover + .ant-steps-item-description { + color: $primary-color; + } + + //Min + .ant-steps-item-title { + @media (max-width: 575.98px) { + width: 30rem; + } + } + .ant-steps-item-container { + @media (max-width: 575.98px) { + display: flex; + width: 20rem; + } + } + + .ant-steps-item-content { + @media (max-width: 575.98px) { + display: flex; + margin: 0; + width: 20rem; + } + } +} diff --git a/styles/index/contact.scss b/styles/index/contact.scss index 7df7153b..d3d8f08c 100644 --- a/styles/index/contact.scss +++ b/styles/index/contact.scss @@ -1,112 +1,120 @@ -.page-content-contact { - display: flex; - margin: 3rem 1rem; - - .container-fluid-contact { - width: 40%; - @media (max-width: 1199.98px) { - width: 100%; - display: flex; - flex-direction: column; - align-items: center; - } - } +$primary-color: #39b54a !important; +$bg-color: #f0f2f5 !important; - .warp-card-contact { +.warp-contact-page { width: 100%; - margin: 1rem 0; - .card-contact { - width: 100%; - min-height: 15vh; - height: auto; - border-radius: 1rem; - border: 1px solid #03a9f4; - background-color: white; - .contact { - display: flex; - margin: 1rem; - width: auto; - - .contact-img { - display: flex; - justify-content: center; - align-items: center; - padding: 1rem; - width: 20%; - background-color: white; - display: flex; - justify-content: center; - img { - width: 4rem; - height: 4rem; - } - } + height: 100vh; + // background: $bg-color; - .contact-data { - width: 60%; - margin-left: 1rem; - h4 { - text-align: start; - } - - h6 { - text-align: start; - margin-bottom: 0 !important; - } - .rs-tag-group { - padding: 0.5rem 0; - } - - @media (max-width: 575.98px) { - width: 100%; - margin-left: 0; + .page-content { + padding-top: 3rem; + + .container-fluid { display: flex; flex-direction: column; - align-items: center; - } - } + .head-content { + h1.name-header { + font-family: $font-header; + } - .contact-icon { - width: 20%; - } + .title-about { + display: flex; + flex-direction: column; + align-items: center; + h6 { + margin-top: 0.5rem; + color: $font-text-sub; + font-style: italic; + } + } + } + .detail-content { + display: flex; + flex-direction: column; + margin: 2rem 3rem; + + @media (max-width: 575.98px) { + margin: 0; + } + + .data-detail-content { + display: flex; + justify-content: space-evenly; + margin-bottom: 2rem; + + @media (max-width: 768px) { + flex-direction: column; + align-items: center; + // margin-top: 1rem; + } + + .title-content { + padding: 0 3rem; - @media (max-width: 575.98px) { - flex-direction: column; - align-items: center; + @media (max-width: 768px) { + padding: 0; + } + + .header-title-content { + font-weight: bold !important; + } + + .sub-title-content { + margin-left: 1rem; + } + + h6 { + text-align: start; + opacity: 0.8; + margin-bottom: 0.5rem !important; + font-weight: lighter; + } + } + .more-content { + padding: 0 3rem; + display: flex; + + h6 { + margin-top: 1rem; + font-weight: bold; + text-align: center; + } + } + } + } } - } - @media (max-width: 1199.98px) { - min-height: 10vh !important; - } } - @media (max-width: 1199.98px) { - width: 70%; + .ant-card-actions > li { + display: flex; + justify-content: center; } - - @media (max-width: 575.98px) { - width: 100% !important; + .ant-card-actions > li:not(:last-child) { + border-right: none; } - } - - .timeline-contact { - display: flex; - justify-content: center; - width: 60%; - height: 10vh; - padding: 1rem 1rem 1rem 2rem; - .rs-carousel { - height: 50vh; - width: 90%; + .ant-skeleton-content .ant-skeleton-paragraph > li + li { + margin-top: 0; } - @media (max-width: 1199.98px) { - display: none; - } - } + // .ant-card-actions > li > span a:not(.ant-btn):hover, + // .ant-card-actions > li > span > .anticon:hover { + // color: $primary-color; + // } + + // .ant-card { + // border-radius: 1rem; + // } - @media (max-width: 1199.98px) { - justify-content: center; - align-items: center; - } + // .ant-card-bordered { + // border-color: $primary-color; + // } + // .ant-card-actions { + // border-top: 1px solid $primary-color; + // border-radius: 0 0 1rem 1rem; + // } + .ant-card-bordered { + @media (max-width: 1024px) { + margin: 1rem; + } + } } diff --git a/styles/index/project.scss b/styles/index/project.scss deleted file mode 100644 index 9bc1e476..00000000 --- a/styles/index/project.scss +++ /dev/null @@ -1,135 +0,0 @@ -.warp-detail { - position: absolute; - width: 100%; - min-height: 100vh; - height: auto; - background-color: #f3f5f7; - - .page-detail { - padding: 2rem 1rem 0 1rem !important; - - .container-detail { - border-radius: 1rem; - background-color: white; - text-align: center; - display: flex; - flex-direction: row; - justify-content: center; - - .item-header { - text-align: start; - width: 50rem; - padding: 3rem 0; - - .card-text { - text-align: center; - } - .text-group { - padding-left: 2rem; - } - } - - .btn-close { - width: 3rem; - padding: 1rem; - .close { - font-size: 2rem; - span { - user-select: none; - } - } - - .close:focus { - outline: none; - } - } - } - - .container-fluid { - display: flex; - justify-content: center; - } - } -} - -.page-content-detail { - display: flex; - width: 100%; - min-height: 30vh; - height: auto; - position: relative; - .container-fluid { - text-align: center; - margin-top: 2rem; - padding-right: 10px; - padding-left: 10px; - - @media (max-width: 1270px) { - flex-direction: column !important; - } - - h2 { - margin-top: 1.5rem; - margin-bottom: 2rem; - } - .textarea-center { - margin: 1rem 2rem; - text-align: center; - - text { - margin: 0.7rem 0; - color: black !important; - } - } - - .warp-card { - .card-group { - .card { - cursor: default; - box-shadow: 0 0 0 0 !important; - align-items: center; - - img { - width: 20rem; - height: 10rem; - - @media (max-width: 991.98px) { - width: 10rem; - height: 5rem; - } - } - - .card-body { - text-align: center; - - .card-title { - user-select: none; - text-align: center; - margin-bottom: 0.5rem !important; - } - .card-text { - margin-bottom: 0.5rem; - text { - text-align: start !important; - } - } - - .btn { - cursor: pointer; - } - } - } - - .card:hover { - box-shadow: 0 0 0 0 !important; - } - } - } - } - - .container-fluid.non { - .non { - display: none; - } - } -} diff --git a/styles/index/services.scss b/styles/index/services.scss deleted file mode 100644 index e240f117..00000000 --- a/styles/index/services.scss +++ /dev/null @@ -1,137 +0,0 @@ -$margin-rs-steps: 2rem; -$font-rs-title: 1.2rem; -$font-rs-description: 1rem; - -.page-content-services { - display: flex; - margin: 3rem 1rem; - - .rs-btn-group { - margin: 1rem 0.5rem 2rem 0.5rem; - } - - .normal { - width: 50%; - .rs-steps.rs-steps-vertical { - display: contents !important; - - .rs-steps-item-title { - font-size: $font-rs-title; - } - - .rs-steps-item-description { - font-size: $font-rs-description; - } - - .rs-steps-item.rs-steps-item-status-wait { - margin-left: $margin-rs-steps; - } - - .rs-steps-item.rs-steps-item-status-process { - margin-left: $margin-rs-steps; - } - - .rs-steps-item.rs-steps-item-status-finish { - margin-left: $margin-rs-steps; - } - } - @media (max-width: 1023px) { - display: none !important; - } - } - - .normal-message { - margin-top: 3rem; - width: 50%; - - .rs-message { - border-radius: 1rem; - padding: 1rem; - } - - h5.rs-message-header { - text-align: start; - font-size: $font-rs-title !important; - } - - .rs-message-body { - p { - color: black; - p { - line-height: 1.5rem; - font-size: 0.7rem !important; - color: red; - } - h4, - h5 { - text-align: start; - font-weight: 300; - } - } - - a { - margin-right: 0.5rem; - text-decoration: none !important; - } - } - - @media (max-width: 1023px) { - display: none; - } - } - - .mobile { - display: none; - @media (max-width: 1023px) { - display: block; - } - - .rs-steps.rs-steps-vertical { - width: 100% !important; - } - } - - .mobile-message { - display: none; - @media (max-width: 1023px) { - display: block; - width: 100%; - margin-top: 3rem; - .rs-message { - border-radius: 1rem; - padding: 1rem; - } - - h5.rs-message-header { - text-align: start; - font-size: $font-rs-title !important; - } - - .rs-message-body { - p { - color: black; - p { - line-height: 1.5rem; - font-size: 0.7rem !important; - color: red; - } - h4, - h5 { - text-align: start; - font-weight: 300; - } - } - - a { - margin-right: 0.5rem; - text-decoration: none !important; - } - } - } - } - - @media (max-width: 1023px) { - display: block; - } - } - \ No newline at end of file diff --git a/styles/index/society.scss b/styles/index/society.scss new file mode 100644 index 00000000..82ad5361 --- /dev/null +++ b/styles/index/society.scss @@ -0,0 +1,79 @@ +.warp-society-page { + .page-content { + padding-top: 3rem; + + .container-fluid { + display: flex; + flex-direction: column; + .head-content { + h3 { + font-size: 2rem !important; + margin-bottom: 1rem !important; + } + } + .detail-content { + display: flex; + justify-content: center; + align-items: center; + margin: 2rem 3rem; + + @media (max-width: 575.98px) { + flex-direction: column; + } + img { + height: 20rem; + margin-right: 1rem; + @media (max-width: 575.98px) { + margin-right: 0; + height: 18rem; + } + } + + .data-detail-content { + margin-top: 1rem; + display: flex; + flex-direction: column; + + @media (max-width: 575.98px) { + margin-top: 1rem; + } + + .title-content { + padding: 0 3rem; + margin-bottom: 1rem; + + @media (max-width: 768px) { + padding: 0; + } + + h5{ + text-align: start; + font-weight: lighter !important; + } + + .header-title-content { + display: flex; + h6 { + font-weight: bold !important; + } + h5 { + font-size: 1rem !important; + margin-left: 1rem; + opacity: 0.8; + margin-bottom: 0.5rem !important; + font-weight: lighter; + } + } + + h6 { + text-align: start; + opacity: 0.8; + margin-bottom: 0.5rem !important; + font-weight: lighter; + } + } + } + } + } + } +} diff --git a/styles/info.scss b/styles/info.scss new file mode 100644 index 00000000..9f71e123 --- /dev/null +++ b/styles/info.scss @@ -0,0 +1,231 @@ +$primary-color: #39b54a !important; +$border: 1px solid #e4e2f0; +$font-text-p: #978bab !important; +$small-text: 0.9rem !important; + +.warp-info { + margin: 3rem 1rem; + .page-content { + display: flex; + justify-content: space-evenly; + + @media (max-width: 575.98px) { + flex-direction: column; + align-items: center; + } + + .container-data { + @media (max-width: 1024px) { + width: 60%; + padding: 1rem; + } + + @media (max-width: 575.98px) { + width: 100%; + padding: 0.5rem; + } + + width: 50%; + padding: 0 4rem 0 2rem; + .title-data { + display: flex; + padding: 1rem; + + h6 { + margin-bottom: 0 !important; + text-align: start; + } + } + + .content-data { + display: flex; + justify-content: start; + @media (max-width: 575.98px) { + flex-direction: column; + } + + // padding: 1rem; + border: $border; + border-radius: 1rem; + + .main-data { + padding: 1rem; + display: flex; + flex-direction: column; + margin-right: 2rem; + @media (max-width: 575.98px) { + margin-right: 0; + } + + .card-data { + margin: 0; + .title { + display: flex; + justify-content: space-between; + + h5 { + text-align: start; + margin-bottom: 0 !important; + } + p { + color: $font-text-p; + margin-bottom: 0 !important; + } + } + } + } + + .progress { + height: 0.5rem; + margin: 0.5rem; + margin-bottom: 1rem !important; + } + + .other-data { + border-left: $border; + padding: 1rem; + display: flex; + flex-direction: column; + align-items: flex-start; + + @media (max-width: 575.98px) { + align-items: center; + border-left: none; + } + + .title-other-data { + display: flex; + + h5 { + padding-top: 0.5rem; + margin-bottom: 0.5rem !important; + } + + img { + width: 1.5rem; + height: 1.5rem; + margin-right: 1rem; + } + } + p { + font-size: $small-text; + color: $font-text-p; + margin-bottom: 0.5rem !important; + } + h6 { + font-size: $small-text; + text-align: start; + margin-bottom: 0.5rem !important; + } + } + } + } + + .content-data-agency { + @media (max-width: 1024px) { + width: 40%; + } + + @media (max-width: 575.98px) { + width: 100%; + } + + width: 50%; + .head-agency { + display: flex; + align-items: center; + padding-left: 3rem; + margin-bottom: 1rem; + @media (max-width: 575.98px) { + padding-left: 1rem; + justify-content: flex-start; + } + + h2 { + padding: 0; + } + img { + width: 5rem; + height: 5rem; + } + + .title-agency { + display: flex; + flex-direction: column; + padding: 1rem; + align-items: flex-start; + } + + @media (max-width: 575.98px) { + margin-bottom: 0; + } + } + .main-agency { + display: flex; + flex-direction: column; + + .main-agency-row { + display: flex; + justify-content: space-evenly; + .title-main-agency { + padding: 0 2rem; + h6 { + font-weight: bold !important; + } + } + .detail-main-agency { + display: flex; + flex-direction: column; + align-items: flex-start; + + h6 { + font-weight: bold !important; + text-align: start; + } + + a { + p.p-click { + cursor: pointer; + color: $primary-color; + margin-bottom: 0; + font-weight: bold; + } + p.p-click:hover { + color: #79d2ae !important; + } + } + p { + margin-bottom: 0 !important; + } + } + } + } + + .main-agency-row-mobile { + display: flex; + flex-direction: column; + align-items: flex-start; + padding-left: 4rem; + + @media (max-width: 575.98px) { + margin-top: 1rem; + padding-left: 1rem; + } + + .detail-main-agency { + a { + p.p-click { + cursor: pointer; + color: $primary-color; + margin-bottom: 0; + font-weight: bold; + } + p.p-click:hover { + color: #79d2ae !important; + } + } + } + } + } + } +} diff --git a/styles/main.scss b/styles/main.scss index 4a103c14..51b114e3 100644 --- a/styles/main.scss +++ b/styles/main.scss @@ -1,151 +1,71 @@ -//Table -.warp-table { - display: flex; +.warp-main { + // min-height: 100vh; + height: auto; - .table-main { - position: relative; - margin: 5rem; - .react-bs-table-container { - .react-bs-table { - background-color: white; - } - - .react-bs-table-bordered { - border-radius: 0.2rem 0.2rem 0 0; - .react-bs-container-header { - background-color: #cccccc; - border-radius: 0.2rem 0.2rem 0 0; - - table { - thead { - tr { - th { - text-align: center !important; - } - } - } - } - } - } - } - } -} - -/* Main Content */ -.page-content-wrapper { - display: flex; - flex-direction: row; - width: 100%; - min-height: 100vh; - position: relative; - padding: 0 15px; - transition: all 0.5s; - background-color: #f3f5f7; - // background: linear-gradient(to right, rgb(116, 235, 213), rgb(172, 182, 229)); - padding-left: 5rem; - - @media (max-width: 991.98px) { - padding-left: 1rem; - } - - .container-fluid { - margin-top: 5rem; - padding: 0; + .page-content-main { + // padding-left: 150px; + display: flex; + flex-direction: row; + width: 100%; + padding: 0 15px; + transition: all 0.5s; @media (max-width: 768px) { - margin-top: 1rem !important; + padding-top: 1rem; } - } - .data-source { - display: flex; - justify-content: center; - margin: 2rem 0; - img { - width: 3rem; - height: 3rem; - cursor: pointer; - @media (max-width: 575.98px) { - width: 2rem; - height: 2rem; + .container-fluid-main { + + @media (max-width: 1224px) { + margin-left: 0 !important; + margin-left: 1rem !important; } - } - .text-source { - display: flex; - flex-direction: column; - margin: 1rem; - - h6 { - user-select: none; - @media (max-width: 575.98px) { - font-size: 0.7rem !important; - } + width: 100%; + // margin-left: 150px; + // margin-right: 1rem; + margin-top: 2rem; + padding: 0; + + @media (max-width: 768px) { + margin-top: 1rem !important; + margin: 0 !important; } - } - } - - .warp-icon-data { - display: flex; - justify-content: center; - - .icon-data { - display: flex; - - .icon-content { - margin: 1rem 2rem; - - svg { - margin: 0 1rem; - } - p { - color: black; - margin: 1rem; - } - .circle-bg { - fill: none; - stroke: #eee; - stroke-width: 5px; - } - - .progress-ring__circle { - fill: none; - transform: rotate(-90, 60, 60); - stroke-width: 4px; - - animation: change 1s linear; - } + .info-main { + display: flex; + justify-content: center; + margin-top: 2rem !important; + margin: 1rem; + + .warp-chart-main { + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 1rem; + .chart-row { + display: flex; + justify-content: center; + margin-bottom: 2rem; + } - @keyframes change { - from { - stroke-dasharray: 90, 250; - } /*0%*/ - to { - stroke-dasharray: 250, 250; - } /*100%*/ + .chart-col{ + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 2rem; + } } } } } } -.wrapper.menuDisplayed .page-content-wrapper { - padding-left: 215px; - @media (max-width: 991.98px) { - padding-left: 1rem; - } +.ant-progress-outer{ + padding: 0 0.5rem !important; } -.text-center { - user-select: none; - .card { - padding: 1rem; - max-width: 50%; - width: auto; - height: auto; - margin: 1rem 0; - border-radius: 0.7rem; - } +.ant-progress-text{ + display: none !important; } .__react_component_tooltip.type-dark.place-top:after { diff --git a/styles/map.scss b/styles/map.scss index 652cfbd7..cd09c54d 100644 --- a/styles/map.scss +++ b/styles/map.scss @@ -1,48 +1,38 @@ .warp-map { - display: flex; - margin: 1rem 0; - align-items: center; - text-align: center; - - @media (max-width: 1199.98px) { - flex-direction: column; - align-items: center; - } - - .map-Img { - display: flex; - justify-content: center; - width: 40%; - text-align: center; - - @media (max-width: 1199.98px) { - width: 100%; - } - - svg { - width: 600px; - height: 600px; - - @media (max-width: 575.98px) { - width: 800px; - height: 400px; - } - } - } - - .map-content { - display: flex; - justify-content: center; - width: 60%; - text-align: center; - } - - .chart-contents { - display: flex; - background-color: white; - border-radius: 0.5rem; - margin: 0.5rem 1rem; - padding: 0.5rem; + display: flex; + justify-content: center; + text-align: center; + margin-right: 0 !important; + + @media (max-width: 1199.98px) { + width: 100%; + } + + svg { + width: 400px; + height: 500px; + + @media (max-width: 575.98px) { + width: 300px; + height: 400px; } } - \ No newline at end of file +} + +.warp-small-map { + display: flex; + justify-content: center; + text-align: center; + margin-right: 0 !important; + + svg { + width: 300px; + height: 400px; + } + +} + +.warp-load-map { + width: 400px; + height: 500px; +} diff --git a/styles/menu-icon.scss b/styles/menu-icon.scss deleted file mode 100644 index 4574683d..00000000 --- a/styles/menu-icon.scss +++ /dev/null @@ -1,70 +0,0 @@ -.warp-menu { - display: flex; - margin-top: 1rem; - margin-bottom: 2rem; - - justify-content: center; - - .menu { - width: 100%; - display: flex; - justify-content: center; - padding: 0; - - @media (max-width: 991.98px) { - padding: 1rem !important; - } - - .warp-icon { - width: 100%; - display: flex; - justify-content: center; - border-radius: 0.5rem; - margin: 0 1rem; - background-color: white; - padding: 0.5rem 0; - - @media (max-width: 575.98px) { - flex-direction: column; - align-items: center; - background-color: #f5f9fc; - } - - .icon { - display: flex; - flex-direction: column; - align-items: center; - margin: 0 5rem; - - @media (max-width: 991.98px) { - padding: 0 !important; - margin: 0 1.5rem !important; - } - - @media (max-width: 1199.98px) { - margin: 0 2rem; - } - - .icon-img { - img { - width: 3rem; - height: 3rem; - margin: 1rem; - } - img.hover { - display: none; - } - } - - .icon-img:hover { - img.hover { - display: inherit !important; - } - img { - display: none !important; - } - } - } - } - } -} diff --git a/styles/nav.scss b/styles/nav.scss index 413f4cb3..c132b031 100644 --- a/styles/nav.scss +++ b/styles/nav.scss @@ -1,131 +1,82 @@ -//logoMain -.warp-logo-main { - ul { - padding: 0.5rem; - img { - cursor: pointer; - width: 3rem; - height: 3rem; - } - } -} +$font-color: #071d40 !important; +$font-header: "Frank Ruhl Libre" !important; +$font-base: "Prompt", sans-serif; +$primary-color: #39b54a !important; +$bg-color: linear-gradient(to left, #a6d254, #83d2ae); +$border-bg-color: 1px solid #83d2ae; +$line-color: #e8e9fe; -//manu -.warp-manu { +nav { width: 100%; + height: 5rem; ul { + user-select: none; + padding: 0.5rem; display: flex; - justify-content: flex-end !important; - list-style: none; + justify-content: space-between; } } -nav { +//Navbar-Scroll +// nav { +// position: fixed; +// width: 100%; +// min-height: 5rem; +// top: 0; +// z-index: 1000; +// ul { +// user-select: none; +// padding: 0.5rem; +// display: flex; +// justify-content: space-between; +// } +// } + +// nav.scroll { +// position: fixed; +// width: 100%; +// top: 0; +// z-index: 1000; +// background-color: greenyellow; +// transition: background-color 0.4s ease-out; +// } + +.warp-main { ul { - .warp-table { - width: 20%; - } - } -} - -li { - display: flex; - cursor: pointer; - p { - font-size: 1.1rem !important; cursor: pointer; - color: black !important; - margin: 1rem 1.5rem !important; - margin-top: 1.7rem !important; - } - p:hover { - color: #bedadc; - } -} - -//Index -nav { - background-color: white; - width: 100%; - min-height: 3vh; - height: auto; - display: flex; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); - z-index: 99; - - @media (max-width: 993px) { - display: none !important; - } - - //logo - ul { - width: 100%; - display: flex; - - .nav-logo { - min-width: 40%; - list-style: none; - display: flex; - li { - margin-bottom: 0.5rem; - - img { - margin-top: 1rem; - width: 5rem; - height: 2.5rem; - } - h4{ - margin: 0; - margin-top: 1.8rem; - } + user-select: none; + margin-left: 0; + li.hamberger-active { + padding-left: 250px; + img { + width: 4rem; + height: 2rem; } } - } -} - -nav.nav-main { - min-height: 2vh; - line-height: 2vh; -} - -nav.nav-other { - position: fixed; - min-height: 2vh; - line-height: 2vh; - .warp-nav-sidebar { - width: 100%; - } - - ul { - width: 100%; - list-style: none; - .warp-table { - width: 100%; + li.hamberger-non-active { + img { + width: 4rem; + height: 2rem; + } } } } .collapsible-menu { - @media (min-width: 993px) { - display: none; - } - + height: 4rem; + padding: 1rem 0; background-color: rgb(255, 255, 255); box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.2); - label { - text-align: center; - font-size: 1.5rem; - display: block; - cursor: pointer; - // background: url(menu.png) no-repeat left center; - padding: 1rem; - margin-bottom: 0 !important; - } + .warp-nav-sidebar { + display: flex; + padding: 0 1rem; + justify-content: space-between; - label:hover { - color: salmon; + h2 { + font-family: $font-header; + } } .menu-content { @@ -139,6 +90,7 @@ nav.nav-other { li { p { + color: $font-color; display: block; padding: 10px; text-decoration: none; @@ -147,48 +99,127 @@ nav.nav-other { } } .menu-content.show { - max-height: 100vh; + display: block; + min-height: 100vh; + height: 100vh; + width: 100%; + position: fixed; + text-align: center; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1000; + + opacity: 1; + background-color: #b3e5cc; + visibility: visible; + + nav { + min-height: 2rem; + display: flex; + justify-content: flex-end; + padding: 0.5rem 1rem; + } + ul { + display: block; + height: 100vh; + width: 100%; + margin-left: 0 !important; padding: 0 !important; li { display: flex; flex-direction: column; - p { + width: 100%; + h5 { margin: 0.5rem !important; } - p:hover { - color: #c4def6 !important; + h5:hover { + color: $primary-color; + } + } + .menu-content-list { + height: 100vh; + margin-top: 2rem; + a{ + width: 100%; + margin: 1rem 0; } } } } +} - .warp-nav-sidebar { - width: 100% !important; +ul { + margin-left: 4rem; + user-select: none; + padding: 0.5rem; + display: flex; + justify-content: space-between; + + li { display: flex; - justify-content: center; + align-items: center; - .nav-logo { - margin-bottom: 1rem; - li { - img { - margin-top: 1rem; - width: 5rem; - height: 2.5rem; - } - h4{ - margin-top: 1.8rem; - } + .btn:focus { + box-shadow: none; + + p:focus { + box-shadow: none; } } + h2 { + cursor: pointer !important; + font-size: 2rem !important; + padding: 0 1rem !important; + font-family: $font-header; + } + p { + cursor: pointer; + color: $font-color; + margin: 1rem !important; + } + p:hover { + color: $primary-color; + } - .box-hamberger { - width: 3.5rem; - height: 4rem; + p.li-buttom-line { + border: $border-bg-color; + border-radius: 1.5rem; + padding: 0.5rem 2rem !important; + margin: 0 0.5rem 0 2rem !important; + } - a.hamberger { - top: 2.4rem; - } + p.li-buttom-line:hover { + color: white !important; + background: $bg-color; + } + + p.li-buttom-line-active { + border: $border-bg-color; + border-radius: 1.5rem; + padding: 0.5rem 2rem !important; + margin: 0 1rem 0 0.5rem !important; + background: $bg-color; + color: white !important; + } + p.li-buttom-line-active:hover { + margin: 0 1rem 0 0.5rem !important; + color: $font-color; + border: $border-bg-color; + background: white !important; } } } + +//SideBar +.ant-drawer-wrapper-body { + user-select: none; +} + +.ant-drawer-body { + p:hover { + color: $primary-color; + } +} diff --git a/styles/sidebar.scss b/styles/sidebar.scss index a1002bbc..38512739 100644 --- a/styles/sidebar.scss +++ b/styles/sidebar.scss @@ -1,162 +1,11 @@ -//sidebar -.warp-main { - nav { - transition: all 0.5s; - ul { - justify-content: flex-start; - } - .toggle { - padding-left: 230px; - } - } -} - -.sidebar-wrapper { - @media (max-width: 768px) { - position: absolute; - } - - z-index: 1; - position: fixed; - width: 0; - height: 100vh; - overflow-y: hidden; - background: white; - box-shadow: -2px 0 5px 0 rgba(0, 0, 0, 0.2); - opacity: 0.9; - transition: all 0.5s; - width: 4rem; - - .sidebar-nav { - display: none; - } - - .non-sidebar-nav { - width: 100%; - position: absolute; - top: 5rem; - padding: 0; - list-style: none; - transition: all 0.5s; - - @media (max-width: 768px) { - top: 1rem !important; - } - - .icon-sidebar { - display: flex; - flex-direction: column; - align-items: center; - img { - width: 1.5rem; - height: 1.5rem; - margin: 0.5rem; - cursor: pointer; - } - p { - font-size: 0.7rem !important; - } - } - } - - @media (max-width: 992px) { - display: none; - } -} - -.sidebar-wrapper:hover { - width: 200px; - opacity: 1 !important; - - @media (max-width: 768px) { - width: 210px !important; - } - - .sidebar-nav { - cursor: pointer; - position: absolute; - top: 4rem; - display: flex; - flex-direction: column; - - @media (max-width: 768px) { - top: 1rem !important; - } - } +$primary-color: #39b54a !important; - .non-sidebar-nav { - display: none; - .icon-sidebar { - display: none !important; - } - } -} - -.menu-toggle { - transition: all 0.3s; - font-size: 2em; -} -/* Change the width of the sidebar to display it*/ -.wrapper.menuDisplayed .sidebar-wrapper { - width: 200px; - - @media (max-width: 768px) { - width: 210px !important; - } - - @media (max-width: 575.98px) { - width: 100% !important; - } - .non-sidebar-nav { - display: none; - } - .sidebar-nav { - position: absolute; - top: 3.9rem; - display: flex; - flex-direction: column; - - @media (max-width: 768px) { - top: 1rem !important; - } - } -} - -/* Sidebar styling */ -.sidebar-nav { - padding: 0 !important; - list-style: none; - transition: all 0.5s; - width: 100%; - text-align: center; -} - -.sidebar-nav li { - display: flex; - justify-content: flex-start; - line-height: 40px; - width: 100%; - transition: all 0.3s; - padding: 10px; - box-shadow: -2px 0 5px 0 rgba(0, 0, 0, 0.2); -} - -.sidebar-nav li img { - width: 1.5rem; - height: 1.5rem; - margin: 0.5rem; - cursor: pointer; -} - -.sidebar-nav li a { - display: block; - text-decoration: none; - // color:#ddd; - color: black !important; +.ant-drawer-wrapper-body { user-select: none; } -.sidebar-nav li:hover { - background: #b3cbe5; - box-shadow: 0 4px 4px -4px #333; +.ant-drawer-body { + p:hover { + color: $primary-color; + } }