diff --git a/ios/PerformicsStoreDNA.xcodeproj/project.pbxproj b/ios/PerformicsStoreDNA.xcodeproj/project.pbxproj
index aef3177..d97805d 100644
--- a/ios/PerformicsStoreDNA.xcodeproj/project.pbxproj
+++ b/ios/PerformicsStoreDNA.xcodeproj/project.pbxproj
@@ -263,7 +263,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = 5;
+ CURRENT_PROJECT_VERSION = 6;
DEVELOPMENT_TEAM = JGDHGNH9XY;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = PerformicsStoreDNA/Info.plist;
@@ -272,7 +272,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- MARKETING_VERSION = 1.5;
+ MARKETING_VERSION = 1.6;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@@ -292,7 +292,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = 5;
+ CURRENT_PROJECT_VERSION = 6;
DEVELOPMENT_TEAM = JGDHGNH9XY;
INFOPLIST_FILE = PerformicsStoreDNA/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
@@ -300,7 +300,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- MARKETING_VERSION = 1.5;
+ MARKETING_VERSION = 1.6;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
diff --git a/src/navigation/Routes.js b/src/navigation/Routes.js
index adeac80..610578c 100644
--- a/src/navigation/Routes.js
+++ b/src/navigation/Routes.js
@@ -12,6 +12,7 @@ import Dashboard from '../screens/MainScreen/Dashboard';
import FeedbackCategories from '../screens/MainScreen/Feedback/FeedbackCategories';
import { Platform, StatusBar, View } from 'react-native';
import Welcome from '../screens/MainScreen/WelcomePage';
+import Details from '../screens/MainScreen/Dashboard/Details';
const Stack = createNativeStackNavigator();
@@ -38,6 +39,8 @@ const Routes = () => {
+
+
diff --git a/src/screens/MainScreen/Dashboard/Details copy.js b/src/screens/MainScreen/Dashboard/Details copy.js
new file mode 100644
index 0000000..b827416
--- /dev/null
+++ b/src/screens/MainScreen/Dashboard/Details copy.js
@@ -0,0 +1,406 @@
+import React, { useEffect, useState } from 'react';
+import { View, Text, TouchableOpacity, ScrollView, Image, Modal, Platform, StyleSheet, Alert } from 'react-native';
+import { useRoute, useNavigation } from '@react-navigation/native';
+import { post } from '../../../api/ApiService';
+import IMAGES from '../../../constants/Images';
+import { GlobalTheme } from '../../../theme';
+import Loader from '../../../constants/Loader';
+import { SafeAreaView } from 'react-native-safe-area-context';
+import { toastError } from '../../../constants/Toast';
+
+const Details = () => {
+
+ const route = useRoute();
+ const navigation = useNavigation();
+
+ const { selectedDetails = [], storeData, year, month, mainTabIndex } = route.params || {};
+ const [modalGraphData, setModalGraphData] = useState({});
+ const [activePromoTab, setActivePromoTab] = useState('Executed');
+ const [allCatData, setAllCatData] = useState([])
+ const [selectedCategoryData, setSelectedCategoryData] = useState([]);
+ const [categoryModalVisible, setCategoryModalVisible] = useState(false);
+
+ useEffect(() => {
+ if (selectedDetails.length > 0) {
+ fetchDetailGraphs(selectedDetails);
+ }
+ }, [selectedDetails]);
+
+ useEffect(() => {
+ getAllCatData();
+ }, [])
+
+ const getAllCatData = () => {
+ let data = {
+ parameters: {
+ projectid: 41654,
+ year: year,
+ monthno: month,
+ storeid: storeData?.StoreId
+ },
+ }
+
+ const apiUrl = mainTabIndex === 0
+ ? 'https://dax.parinaam.in/execute/dabur/detmtd/oos_sku_list_for_all_visits_mtd'
+ : 'https://dax.parinaam.in/execute/dabur/detlsv/oos_sku_list_on_lsv';
+
+ post(apiUrl, data)
+ .then(res => {
+ setAllCatData(res?.data);
+ })
+ .catch(err => {
+ console.log('Error =>', err);
+ });
+ }
+
+ const fetchDetailGraphs = async (detailPages) => {
+ try {
+ const resultMap = {};
+ for (let item of detailPages) {
+ const response = await post(item.GraphUrl, {
+ parameters: {
+ projectid: 41654,
+ year: year,
+ monthno: month,
+ storeid: storeData?.StoreId
+ },
+ });
+ resultMap[item.GraphUrl] = response?.data || [];
+ }
+ setModalGraphData(resultMap);
+ } catch (error) {
+ console.log("❌ Error fetching detail graphs:", error);
+ }
+ };
+
+ const showCategoryDetails = (data) => {
+ setCategoryModalVisible(!categoryModalVisible)
+ // Filter SKUs from allCatData where the category name matches
+ const filteredCategory = allCatData.filter(item =>
+ item.Product_CategoryCategory_Name === data.Product_CategoryCategory_Name
+ );
+ // Save for display
+ setSelectedCategoryData(filteredCategory);
+ }
+
+ const isOSATab = selectedDetails.some(item => item.GraphTitle === "OSA - Category");
+
+ return (
+
+
+ {/* Header */}
+
+ navigation.goBack()} style={{ padding: 5 }}>
+
+
+ Details
+ {/* spacer */}
+
+
+
+ {selectedDetails.map((detail, index) => {
+ const values = modalGraphData[detail.GraphUrl] || [];
+
+ if (!modalGraphData[detail.GraphUrl]) {
+ return (
+
+
+
+ );
+ }
+
+ switch (detail.GraphType) {
+ case 'Table':
+ // Check if it's the Promotion table
+ const isPromotionTable =
+ values.length > 0 &&
+ values[0].hasOwnProperty('Product_CategoryCategory_Name') &&
+ values[0].hasOwnProperty('Promotion_MasterPromotion_Definition');
+
+ if (isPromotionTable) {
+ // Filter data based on active tab
+ const filteredValues = values.filter(row =>
+ activePromoTab === 'Executed'
+ ? row.Executed?.toLowerCase() === 'yes'
+ : row.Executed?.toLowerCase() === 'no'
+ );
+ // Group data by Product_CategoryCategory_Name
+ const groupedData = filteredValues.reduce((acc, curr) => {
+ const category = curr.Product_CategoryCategory_Name || 'Unknown';
+ if (!acc[category]) acc[category] = [];
+ acc[category].push(curr);
+ return acc;
+ }, {});
+
+ return (
+
+
+ {/* Horizontal Tabs - show once at top */}
+ {index === 0 && ( // ensures only first promotion table renders the toggle
+
+ {['Executed', 'Not Executed'].map(tab => {
+ const isSelected = activePromoTab === tab;
+ return (
+ setActivePromoTab(tab)}
+ style={{
+ flex: 1,
+ paddingVertical: 10,
+ backgroundColor: isSelected ? '#113F8C' : '#E3EBF8',
+ borderRadius: 8,
+ marginHorizontal: 5,
+ alignItems: 'center',
+ }}
+ >
+
+ {tab}
+
+
+ );
+ })}
+
+ )}
+
+ {/* No data message */}
+
+ {filteredValues.length === 0 ? (
+
+ ) : (
+ Object.keys(groupedData).map((categoryName, catIdx) => (
+
+ {/* Category Header */}
+
+
+ {String(categoryName)}
+
+
+
+ {/* Table Header */}
+
+
+ Definition
+
+
+ Executed
+
+
+
+ {/* Table Rows */}
+
+ {groupedData[categoryName].map((row, rowIdx) => (
+
+
+ {String(row.Promotion_MasterPromotion_Definition) || '-'}
+
+
+ {row.Executed || '-'}
+
+
+ ))}
+
+
+ ))
+ )}
+
+
+ );
+ }
+
+ let displayKey = null;
+ let presentKey = null;
+ if (values.length > 0) {
+ const presentKeys = Object.keys(values[0]).filter(k =>
+ (typeof values[0][k] === 'string' && ['Yes', 'No'].includes(values[0][k])) ||
+ typeof values[0][k] === 'boolean' ||
+ typeof values[0][k] === 'number'
+ );
+ presentKey = presentKeys.length > 0 ? presentKeys[0] : null;
+ const displayKeys = Object.keys(values[0]).filter(k => k !== presentKey && typeof values[0][k] === 'string');
+ displayKey = displayKeys.length > 0 ? displayKeys[0] : null;
+ }
+
+ return (
+
+
+ {detail.GraphTitle}
+
+
+
+
+ {displayKey ? displayKey.replace(/_/g, ' ').replace(/([a-z])([A-Z])/g, '$1 $2') : ''}
+
+
+ {presentKey ? presentKey.replace(/_/g, ' ').replace(/([a-z])([A-Z])/g, '$1 $2') : ''}
+
+
+
+
+ {values.map((row, idx) => {
+ const presentKeys = Object.keys(row).filter(k =>
+ (typeof row[k] === 'string' && ['Yes', 'No'].includes(row[k])) ||
+ typeof row[k] === 'boolean' ||
+ typeof row[k] === 'number'
+ );
+ const presentKey = presentKeys.length > 0 ? presentKeys[0] : null;
+ const displayKeys = Object.keys(row).filter(k => k !== presentKey && typeof row[k] === 'string');
+ const displayKey = displayKeys.length > 0 ? displayKeys[0] : null;
+
+ return (
+
+ {row[displayKey] || '--'}
+ {
+ if (row[presentKey] == 100 || row[presentKey] == '100') {
+ toastError('Alert', 'No Data Available')
+ } else {
+ showCategoryDetails(row)
+ }
+ }}
+ style={{ width: '20%', }}>
+
+ {presentKey ? (
+ typeof row[presentKey] === 'string' && ['Yes', 'No'].includes(row[presentKey]) ? row[presentKey] :
+ typeof row[presentKey] === 'boolean' ? (row[presentKey] ? 'Yes' : 'No') :
+ typeof row[presentKey] === 'number' ? row[presentKey].toFixed(2) : row[presentKey] || '-'
+ ) : '-'}
+
+
+
+ );
+ })}
+
+
+ );
+ default:
+ return (
+
+ Unsupported GraphType: {detail.GraphType}
+
+ );
+ }
+ })}
+
+
+ setCategoryModalVisible(false)}
+ >
+
+ {/* Header */}
+
+
+
+
+ {selectedCategoryData[0]?.Product_CategoryCategory_Name || 'Category'}
+
+ setCategoryModalVisible(false)} style={{ width: '7%', alignItems: 'center' }}>
+
+
+
+
+ {/* SKU List */}
+
+ {/* OOS SKU details */}
+ {selectedCategoryData.map((item, idx) => (
+
+
+ {item.Product_MasterProduct_Name}
+
+ {/*
+ {item['#_of_OOS_SKU_for_all_visits']}
+ */}
+
+ ))}
+
+
+
+
+
+
+ );
+};
+
+const styled = StyleSheet.create({
+ header: {
+ width: '100%',
+ backgroundColor: '#113F8C',
+ padding: 10,
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ alignItems: 'center'
+ },
+ categoryHeader: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ backgroundColor: '#EDEDED',
+ paddingVertical: 8,
+ paddingHorizontal: 10,
+ borderTopLeftRadius: 8,
+ borderTopRightRadius: 8,
+ },
+ itemContainer: {
+ backgroundColor: '#fff',
+ paddingHorizontal: 10,
+ borderBottomLeftRadius: 8,
+ borderBottomRightRadius: 8,
+ shadowColor: '#000',
+ shadowOffset: { width: 0, height: 1 },
+ shadowOpacity: 0.1,
+ shadowRadius: 2,
+ elevation: 2
+ }
+})
+
+export default Details;
diff --git a/src/screens/MainScreen/Dashboard/Details.js b/src/screens/MainScreen/Dashboard/Details.js
new file mode 100644
index 0000000..1229f3b
--- /dev/null
+++ b/src/screens/MainScreen/Dashboard/Details.js
@@ -0,0 +1,405 @@
+import React, { useEffect, useState } from 'react';
+import { View, Text, TouchableOpacity, ScrollView, Image, Modal, Platform, StyleSheet, Alert } from 'react-native';
+import { useRoute, useNavigation } from '@react-navigation/native';
+import { post } from '../../../api/ApiService';
+import IMAGES from '../../../constants/Images';
+import { GlobalTheme } from '../../../theme';
+import Loader from '../../../constants/Loader';
+import { SafeAreaView } from 'react-native-safe-area-context';
+import { toastError } from '../../../constants/Toast';
+
+const Details = () => {
+
+ const route = useRoute();
+ const navigation = useNavigation();
+
+ const { selectedDetails = [], storeData, year, month, mainTabIndex } = route.params || {};
+ const [modalGraphData, setModalGraphData] = useState({});
+ const [activePromoTab, setActivePromoTab] = useState('Executed');
+ const [allCatData, setAllCatData] = useState([])
+ const [selectedCategoryData, setSelectedCategoryData] = useState([]);
+ const [categoryModalVisible, setCategoryModalVisible] = useState(false);
+
+ useEffect(() => {
+ if (selectedDetails.length > 0) {
+ fetchDetailGraphs(selectedDetails);
+ }
+ }, [selectedDetails]);
+
+ useEffect(() => {
+ getAllCatData();
+ }, [])
+
+ const getAllCatData = () => {
+ let data = {
+ parameters: {
+ projectid: 41654,
+ year: year,
+ monthno: month,
+ storeid: storeData?.StoreId
+ },
+ }
+
+ const apiUrl = mainTabIndex === 0
+ ? 'https://dax.parinaam.in/execute/dabur/detmtd/oos_sku_list_for_all_visits_mtd'
+ : 'https://dax.parinaam.in/execute/dabur/detlsv/oos_sku_list_on_lsv';
+
+ post(apiUrl, data)
+ .then(res => {
+ setAllCatData(res?.data);
+ })
+ .catch(err => {
+ console.log('Error =>', err);
+ });
+ }
+
+ const fetchDetailGraphs = async (detailPages) => {
+ try {
+ const resultMap = {};
+ for (let item of detailPages) {
+ const response = await post(item.GraphUrl, {
+ parameters: {
+ projectid: 41654,
+ year: year,
+ monthno: month,
+ storeid: storeData?.StoreId
+ },
+ });
+ resultMap[item.GraphUrl] = response?.data || [];
+ }
+ setModalGraphData(resultMap);
+ } catch (error) {
+ console.log("❌ Error fetching detail graphs:", error);
+ }
+ };
+
+ const showCategoryDetails = (data) => {
+ setCategoryModalVisible(!categoryModalVisible)
+ // Filter SKUs from allCatData where the category name matches
+ const filteredCategory = allCatData.filter(item =>
+ item.Product_CategoryCategory_Name === data.Product_CategoryCategory_Name
+ );
+ // Save for display
+ setSelectedCategoryData(filteredCategory);
+ }
+
+ const isOSATab = selectedDetails.some(item => item.GraphTitle === "OSA - Category");
+
+ return (
+
+
+ {/* Header */}
+
+ navigation.goBack()} style={{ padding: 5 }}>
+
+
+ Details
+ {/* spacer */}
+
+
+
+ {selectedDetails.map((detail, index) => {
+ const values = modalGraphData[detail.GraphUrl] || [];
+
+ if (!modalGraphData[detail.GraphUrl]) {
+ return (
+
+
+
+ );
+ }
+
+ switch (detail.GraphType) {
+ case 'Table':
+ // Check if it's the Promotion table
+ const isPromotionTable =
+ values.length > 0 &&
+ values[0].hasOwnProperty('Product_CategoryCategory_Name') &&
+ values[0].hasOwnProperty('Promotion_MasterPromotion_Definition');
+
+ if (isPromotionTable) {
+ // Filter data based on active tab
+ const filteredValues = values.filter(row =>
+ activePromoTab === 'Executed'
+ ? row.Executed?.toLowerCase() === 'yes'
+ : row.Executed?.toLowerCase() === 'no'
+ );
+ // Group data by Product_CategoryCategory_Name
+ const groupedData = filteredValues.reduce((acc, curr) => {
+ const category = curr.Product_CategoryCategory_Name || 'Unknown';
+ if (!acc[category]) acc[category] = [];
+ acc[category].push(curr);
+ return acc;
+ }, {});
+
+ return (
+
+ {/* Horizontal Tabs - show once at top */}
+ {index === 0 && ( // ensures only first promotion table renders the toggle
+
+ {['Executed', 'Not Executed'].map(tab => {
+ const isSelected = activePromoTab === tab;
+ return (
+ setActivePromoTab(tab)}
+ style={{
+ flex: 1,
+ paddingVertical: 10,
+ backgroundColor: isSelected ? '#113F8C' : '#E3EBF8',
+ borderRadius: 8,
+ marginHorizontal: 5,
+ alignItems: 'center',
+ }}
+ >
+
+ {tab}
+
+
+ );
+ })}
+
+ )}
+
+ {/* No data message */}
+
+ {filteredValues.length === 0 ? (
+
+ ) : (
+ Object.keys(groupedData).map((categoryName, catIdx) => (
+
+ {/* Category Header */}
+
+
+ {String(categoryName)}
+
+
+
+ {/* Table Header */}
+
+
+ Definition
+
+
+ Executed
+
+
+
+ {/* Table Rows */}
+
+ {groupedData[categoryName].map((row, rowIdx) => (
+
+
+ {String(row.Promotion_MasterPromotion_Definition) || '-'}
+
+
+ {row.Executed || '-'}
+
+
+ ))}
+
+
+ ))
+ )}
+
+
+ );
+ }
+
+ let displayKey = null;
+ let presentKey = null;
+ if (values.length > 0) {
+ const presentKeys = Object.keys(values[0]).filter(k =>
+ (typeof values[0][k] === 'string' && ['Yes', 'No'].includes(values[0][k])) ||
+ typeof values[0][k] === 'boolean' ||
+ typeof values[0][k] === 'number'
+ );
+ presentKey = presentKeys.length > 0 ? presentKeys[0] : null;
+ const displayKeys = Object.keys(values[0]).filter(k => k !== presentKey && typeof values[0][k] === 'string');
+ displayKey = displayKeys.length > 0 ? displayKeys[0] : null;
+ }
+
+ return (
+
+
+ {detail.GraphTitle}
+
+
+
+
+ {displayKey ? displayKey.replace(/_/g, ' ').replace(/([a-z])([A-Z])/g, '$1 $2') : ''}
+
+
+ {presentKey ? presentKey.replace(/_/g, ' ').replace(/([a-z])([A-Z])/g, '$1 $2') : ''}
+
+
+
+
+ {values.map((row, idx) => {
+ const presentKeys = Object.keys(row).filter(k =>
+ (typeof row[k] === 'string' && ['Yes', 'No'].includes(row[k])) ||
+ typeof row[k] === 'boolean' ||
+ typeof row[k] === 'number'
+ );
+ const presentKey = presentKeys.length > 0 ? presentKeys[0] : null;
+ const displayKeys = Object.keys(row).filter(k => k !== presentKey && typeof row[k] === 'string');
+ const displayKey = displayKeys.length > 0 ? displayKeys[0] : null;
+
+ return (
+
+ {row[displayKey] || '--'}
+ {
+ if (row[presentKey] == 100 || row[presentKey] == '100') {
+ toastError('Alert', 'No Data Available')
+ } else {
+ showCategoryDetails(row)
+ }
+ }}
+ style={{ width: '20%', }}>
+
+ {presentKey ? (
+ typeof row[presentKey] === 'string' && ['Yes', 'No'].includes(row[presentKey]) ? row[presentKey] :
+ typeof row[presentKey] === 'boolean' ? (row[presentKey] ? 'Yes' : 'No') :
+ typeof row[presentKey] === 'number' ? row[presentKey].toFixed(2) : row[presentKey] || '-'
+ ) : '-'}
+
+
+
+ );
+ })}
+
+
+ );
+ default:
+ return (
+
+ Unsupported GraphType: {detail.GraphType}
+
+ );
+ }
+ })}
+
+
+ setCategoryModalVisible(false)}
+ >
+
+ {/* Header */}
+
+
+
+
+ {selectedCategoryData[0]?.Product_CategoryCategory_Name || 'Category'}
+
+ setCategoryModalVisible(false)} style={{ width: '7%', alignItems: 'center' }}>
+
+
+
+
+ {/* SKU List */}
+
+ {/* OOS SKU details */}
+ {selectedCategoryData.map((item, idx) => (
+
+
+ {item.Product_MasterProduct_Name}
+
+ {/*
+ {item['#_of_OOS_SKU_for_all_visits']}
+ */}
+
+ ))}
+
+
+
+
+
+
+ );
+};
+
+const styled = StyleSheet.create({
+ header: {
+ width: '100%',
+ backgroundColor: '#113F8C',
+ padding: 10,
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ alignItems: 'center'
+ },
+ categoryHeader: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ backgroundColor: '#EDEDED',
+ paddingVertical: 8,
+ paddingHorizontal: 10,
+ borderTopLeftRadius: 8,
+ borderTopRightRadius: 8,
+ },
+ itemContainer: {
+ backgroundColor: '#fff',
+ paddingHorizontal: 10,
+ borderBottomLeftRadius: 8,
+ borderBottomRightRadius: 8,
+ shadowColor: '#000',
+ shadowOffset: { width: 0, height: 1 },
+ shadowOpacity: 0.1,
+ shadowRadius: 2,
+ elevation: 2
+ }
+})
+
+export default Details;
diff --git a/src/screens/MainScreen/Dashboard/index.js b/src/screens/MainScreen/Dashboard/index.js
index ffede4e..cdad3ed 100644
--- a/src/screens/MainScreen/Dashboard/index.js
+++ b/src/screens/MainScreen/Dashboard/index.js
@@ -303,7 +303,7 @@ const Dashboard = (props) => {
[d2],
(tx, results) => {
- console.log("results===", results);
+ // console.log("results===", results);
const rows = [];
for (let i = 0; i < results.rows.length; i++) {
rows.push(results.rows.item(i));
@@ -429,7 +429,7 @@ const Dashboard = (props) => {
const openBottomSheet = () => {
refRBSheet.current.open()
- }
+ };
const onSelectStore = async (item) => {
await insertStoreInfoDNALocal([item]);
@@ -442,11 +442,11 @@ const Dashboard = (props) => {
getTabData(currentTab?.MainTabData);
refRBSheet.current.close()
- }
+ };
const onSelectSubTab = (item) => {
setActiveTab(item?.TabId)
- }
+ };
const getFilterStateCity = async () => {
try {
@@ -516,7 +516,7 @@ const Dashboard = (props) => {
setStoreList(resData)
setLoading(false)
- console.log('storeSearchApi====>', JSON.stringify(resData));
+ // console.log('storeSearchApi====>', JSON.stringify(resData));
} catch (error) {
setLoading(false)
@@ -707,6 +707,9 @@ const Dashboard = (props) => {
);
});
+ // console.log('mainTabIndex----->',mainTabIndex);
+
+
return (
@@ -914,11 +917,23 @@ const Dashboard = (props) => {
{firstItem && (
{
+ // if (firstItem.clickable === 1 && firstItem.DetailsPage?.length > 0) {
+ // setSelectedDetails(firstItem.DetailsPage);
+ // setShowDetailsModal(true);
+ // fetchDetailGraphs(firstItem.DetailsPage);
+ // }
+ // }}
+
onPress={() => {
if (firstItem.clickable === 1 && firstItem.DetailsPage?.length > 0) {
- setSelectedDetails(firstItem.DetailsPage);
- setShowDetailsModal(true);
- fetchDetailGraphs(firstItem.DetailsPage);
+ navigation.navigate('Details', {
+ selectedDetails: firstItem.DetailsPage,
+ storeData,
+ year,
+ month,
+ mainTabIndex
+ });
}
}}
>
diff --git a/src/screens/MainScreen/Dashboard/mainDisplay.json b/src/screens/MainScreen/Dashboard/mainDisplay.json
index 71b0278..61c4b32 100644
--- a/src/screens/MainScreen/Dashboard/mainDisplay.json
+++ b/src/screens/MainScreen/Dashboard/mainDisplay.json
@@ -17,12 +17,6 @@
"TabRow": 1,
"TabCol": 2
},
- // {
- // "TabId": 3,
- // "TabName": "SOS Compliance",
- // "TabRow": 1,
- // "TabCol": 3
- // },
{
"TabId": 4,
"TabName": "OSA",
@@ -42,6 +36,9 @@
"TabCol": 6
}
],
+
+
+
"graphDetails": [
{
"TabId": 1,
@@ -61,15 +58,6 @@
"GraphBackground": "#E2C8FE",
"GraphOptions": {}
},
- // {
- // "TabId": 1,
- // "GraphId": 3,
- // "GraphType": "ScoreCard",
- // "GraphTitle": "SOS Compliance",
- // "GraphUrl": "https://dax.parinaam.in/execute/dabur/mtd/SOS_Compliance_Perc",
- // "GraphBackground": "#FFD7C3",
- // "GraphOptions": {}
- // },
{
"TabId": 1,
"GraphId": 4,
@@ -262,16 +250,26 @@
"TabId": 6,
"GraphId": 9,
"GraphType": "Table",
- "GraphTitle": "Promotion Availability",
- "GraphUrl": "https://dax.parinaam.in/execute/dabur/kpimtd/promotion_availability_mtd",
+ "GraphTitle": "Promotion Not Executed",
+ "GraphUrl": "https://dax.parinaam.in/execute/dabur/detmtd/promotion_not_executed_mtd",
+ "GraphBackground": "#ECFFFA",
+ "GraphOptions": {}
+ },
+ {
+ "TabId": 6,
+ "GraphId": 10,
+ "GraphType": "Table",
+ "GraphTitle": "Promotion executed",
+ "GraphUrl": "https://dax.parinaam.in/execute/dabur/detmtd/promotion_executed_mtd",
"GraphBackground": "#ECFFFA",
"GraphOptions": {}
}
+
]
},
{
"TabId": 6,
- "GraphId": 10,
+ "GraphId": 11,
"GraphType": "BarGraph",
"GraphTitle": "Promotion",
"GraphUrl": "https://dax.parinaam.in/execute/dabur/kpimtd/promotion_trend_perc_mtd",
@@ -298,12 +296,6 @@
"TabRow": 1,
"TabCol": 2
},
- // {
- // "TabId": 3,
- // "TabName": "SOS Compliance",
- // "TabRow": 1,
- // "TabCol": 3
- // },
{
"TabId": 4,
"TabName": "OSA",
@@ -342,15 +334,6 @@
"GraphBackground": "#E2C8FE",
"GraphOptions": {}
},
- // {
- // "TabId": 1,
- // "GraphId": 3,
- // "GraphType": "ScoreCard",
- // "GraphTitle": "SOS Compliance",
- // "GraphUrl": "https://dax.parinaam.in/execute/dabur/lsv/sos_compliance_lsv_perc",
- // "GraphBackground": "#FFD7C3",
- // "GraphOptions": {}
- // },
{
"TabId": 1,
"GraphId": 4,
@@ -474,7 +457,7 @@
"TabId": 5,
"GraphId": 5,
"GraphType": "Table",
- "GraphTitle": "Asset Availability",
+ "GraphTitle": "Visibility",
"GraphUrl": "https://dax.parinaam.in/execute/dabur/kpilsv/asset_availability_lsv",
"GraphBackground": "#ECFFFA",
"GraphOptions": {}
@@ -483,7 +466,7 @@
"TabId": 5,
"GraphId": 5,
"GraphType": "Table",
- "GraphTitle": "Asset",
+ "GraphTitle": "Additional Visibility",
"GraphUrl": "https://dax.parinaam.in/execute/dabur/kpilsv/additional_visibility_lsv",
"GraphBackground": "#ECFFFA",
"GraphOptions": {}
@@ -524,7 +507,7 @@
"TabId": 4,
"GraphId": 7,
"GraphType": "Table",
- "GraphTitle": "SOS Actual - Category",
+ "GraphTitle": "OSA - Category",
"GraphUrl": "https://dax.parinaam.in/execute/dabur/detlsv/osa_lsv_perc_on_category",
"GraphBackground": "#ECFFFA",
"GraphOptions": {}
@@ -554,8 +537,17 @@
"TabId": 6,
"GraphId": 9,
"GraphType": "Table",
- "GraphTitle": "Promotion Availability",
- "GraphUrl": "https://dax.parinaam.in/execute/dabur/kpilsv/promotion_availability_lsv",
+ "GraphTitle": "Promotion Not Executed",
+ "GraphUrl": "https://dax.parinaam.in/execute/dabur/detlsv/promotion_not_executed_lsv",
+ "GraphBackground": "#ECFFFA",
+ "GraphOptions": {}
+ },
+ {
+ "TabId": 6,
+ "GraphId": 10,
+ "GraphType": "Table",
+ "GraphTitle": "Promotion executed",
+ "GraphUrl": "https://dax.parinaam.in/execute/dabur/detlsv/promotion_executed_lsv",
"GraphBackground": "#ECFFFA",
"GraphOptions": {}
}
@@ -563,7 +555,7 @@
},
{
"TabId": 6,
- "GraphId": 10,
+ "GraphId": 11,
"GraphType": "BarGraph",
"GraphTitle": "Promotion",
"GraphUrl": "https://dax.parinaam.in/execute/dabur/kpilsv/promotion_trend_lsv_perc",