widget create and delete
This commit is contained in:
@@ -17,6 +17,7 @@ export interface widget extends Document {
|
|||||||
measurements: {};
|
measurements: {};
|
||||||
duration: string;
|
duration: string;
|
||||||
};
|
};
|
||||||
|
zoneId:string
|
||||||
}
|
}
|
||||||
const widgetSchema: Schema = new Schema(
|
const widgetSchema: Schema = new Schema(
|
||||||
{
|
{
|
||||||
@@ -35,6 +36,7 @@ const widgetSchema: Schema = new Schema(
|
|||||||
fontWeight: { type: String },
|
fontWeight: { type: String },
|
||||||
isArchive: { type: Boolean, default: false },
|
isArchive: { type: Boolean, default: false },
|
||||||
panelID: { type: mongoose.Schema.Types.ObjectId, ref: "Panel" },
|
panelID: { type: mongoose.Schema.Types.ObjectId, ref: "Panel" },
|
||||||
|
zoneId:{ type: String }
|
||||||
},
|
},
|
||||||
{ timestamps: true }
|
{ timestamps: true }
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import panelSchema from "../../../shared/model/vizualization/panelmodel.ts";
|
|||||||
import widgetSchema from "../../../shared/model/vizualization/widgemodel.ts";
|
import widgetSchema from "../../../shared/model/vizualization/widgemodel.ts";
|
||||||
import zoneSchema from "../../../shared/model/builder/lines/zone-Model.ts";
|
import zoneSchema from "../../../shared/model/builder/lines/zone-Model.ts";
|
||||||
export const addWidget = async (data: any) => {
|
export const addWidget = async (data: any) => {
|
||||||
const { organization,panel,zoneId,widget,} = data
|
const { organization, panel, zoneId, widget, } = data
|
||||||
try {
|
try {
|
||||||
const existingZone = await zoneSchema(organization).findOne({
|
const existingZone = await zoneSchema(organization).findOne({
|
||||||
zoneId: zoneId,
|
zoneId: zoneId,
|
||||||
@@ -18,7 +18,7 @@ export const addWidget = async (data: any) => {
|
|||||||
})
|
})
|
||||||
if (!existingPanel)
|
if (!existingPanel)
|
||||||
|
|
||||||
return { success: false, message: "panelName not found",organization: organization}
|
return { success: false, message: "panelName not found", organization: organization }
|
||||||
|
|
||||||
|
|
||||||
if (existingPanel.panelName === widget.panel) {
|
if (existingPanel.panelName === widget.panel) {
|
||||||
@@ -51,7 +51,7 @@ export const addWidget = async (data: any) => {
|
|||||||
{ upsert: true, new: true } // Upsert: create if not exists, new: return updated document
|
{ upsert: true, new: true } // Upsert: create if not exists, new: return updated document
|
||||||
);
|
);
|
||||||
|
|
||||||
return { success: true, message: "Widget updated successfully",data:updateWidget,organization: organization}
|
return { success: true, message: "Widget updated successfully", data: updateWidget, organization: organization }
|
||||||
|
|
||||||
}
|
}
|
||||||
const newWidget = await widgetSchema(organization).create({
|
const newWidget = await widgetSchema(organization).create({
|
||||||
@@ -61,6 +61,7 @@ export const addWidget = async (data: any) => {
|
|||||||
widgetName: widget.title,
|
widgetName: widget.title,
|
||||||
panelID: existingPanel._id,
|
panelID: existingPanel._id,
|
||||||
widgetside: widget.panel,
|
widgetside: widget.panel,
|
||||||
|
zoneId: zoneId
|
||||||
// Data: {
|
// Data: {
|
||||||
// measurements: widget.Data.measurements || {},
|
// measurements: widget.Data.measurements || {},
|
||||||
// duration: widget.Data.duration || "1hr",
|
// duration: widget.Data.duration || "1hr",
|
||||||
@@ -69,33 +70,39 @@ export const addWidget = async (data: any) => {
|
|||||||
if (newWidget) {
|
if (newWidget) {
|
||||||
existingPanel.widgets.push(newWidget._id);
|
existingPanel.widgets.push(newWidget._id);
|
||||||
await existingPanel.save();
|
await existingPanel.save();
|
||||||
const widgetData={
|
const widgetData = {
|
||||||
type:newWidget.elementType,
|
type: newWidget.elementType,
|
||||||
id:newWidget.widgetID,
|
id: newWidget.widgetID,
|
||||||
panel:newWidget.widgetside,
|
panel: newWidget.widgetside,
|
||||||
title:newWidget.widgetName,
|
title: newWidget.widgetName,
|
||||||
}
|
}
|
||||||
const finaldata={ widgetData:widgetData,zoneId:existingZone.zoneId,zoneName:existingZone.zoneName}
|
const finaldata = { widgetData: widgetData, zoneId: existingZone.zoneId, zoneName: existingZone.zoneName }
|
||||||
// console.log('existingPanel: ', widgetData);
|
// console.log('existingPanel: ', widgetData);
|
||||||
return { success: true, message: "Widget created successfully",data:finaldata,organization: organization}
|
return { success: true, message: "Widget created successfully", data: finaldata, organization: organization }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return { success: false, message: "Type mismatch",organization: organization}
|
return { success: false, message: "Type mismatch", organization: organization }
|
||||||
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
return { success: false, message: 'widge not found', error,organization: organization }
|
return { success: false, message: 'widge not found', error, organization: organization }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export const Widgetdelete = async (data: any) => {
|
export const Widgetdelete = async (data: any) => {
|
||||||
const { widgetID, organization } = data
|
const { widgetID, zoneId, organization } = data
|
||||||
console.log('data: ', data);
|
console.log('data: ', data);
|
||||||
try {
|
try {
|
||||||
|
const existingZone = await zoneSchema(organization).findOne({
|
||||||
|
zoneId: zoneId,
|
||||||
|
isArchive: false,
|
||||||
|
});
|
||||||
|
if (!existingZone)
|
||||||
|
return { success: false, message: "Zone not found", organization: organization }
|
||||||
const findWidget = await widgetSchema(organization).findOne({
|
const findWidget = await widgetSchema(organization).findOne({
|
||||||
widgetID: widgetID,
|
widgetID: widgetID,
|
||||||
isArchive: false,
|
isArchive: false,
|
||||||
});
|
});
|
||||||
if (!findWidget)
|
if (!findWidget)
|
||||||
return { success: false, message: "Widget not found",organization: organization}
|
return { success: false, message: "Widget not found", organization: organization }
|
||||||
const widgetData = await widgetSchema(organization).updateOne(
|
const widgetData = await widgetSchema(organization).updateOne(
|
||||||
{ _id: findWidget._id, isArchive: false },
|
{ _id: findWidget._id, isArchive: false },
|
||||||
{ $set: { isArchive: true } }
|
{ $set: { isArchive: true } }
|
||||||
@@ -107,6 +114,7 @@ export const Widgetdelete = async (data: any) => {
|
|||||||
panelID: findWidget.panelID,
|
panelID: findWidget.panelID,
|
||||||
isArchive: false,
|
isArchive: false,
|
||||||
});
|
});
|
||||||
|
console.log('widgets: ', widgets);
|
||||||
// .sort({ widgetOrder: 1 });
|
// .sort({ widgetOrder: 1 });
|
||||||
|
|
||||||
// Reassign widgetOrder values
|
// Reassign widgetOrder values
|
||||||
@@ -123,12 +131,44 @@ export const Widgetdelete = async (data: any) => {
|
|||||||
panelData.widgets.splice(index1, 1);
|
panelData.widgets.splice(index1, 1);
|
||||||
}
|
}
|
||||||
const panelDeletedata = await panelData.save();
|
const panelDeletedata = await panelData.save();
|
||||||
console.log('Widget deleted successfully: ');
|
|
||||||
return { success: false, message: "Widget deleted successfully",data:panelDeletedata,organization: organization}
|
// console.log('Widget deleted successfully: ',panelDeletedata);
|
||||||
|
// if (panelData?.widgets.includes(findWidget._id)) {
|
||||||
|
// panelData.widgets = panelData.widgets.filter(
|
||||||
|
// (id: any) => id.toString() !== findWidget._id.toString()
|
||||||
|
// );
|
||||||
|
// await panelData.save();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Fetch active widgets after deletion
|
||||||
|
const activeWidgets = await widgetSchema(organization).find({
|
||||||
|
zoneId: zoneId,
|
||||||
|
isArchive: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
// console.log('activeWidgets: ', activeWidgets);
|
||||||
|
|
||||||
|
// // Format data
|
||||||
|
const formattedWidgets = activeWidgets.map((widget) => ({
|
||||||
|
id: widget.widgetID,
|
||||||
|
type: widget.elementType, // Ensure this field exists
|
||||||
|
title: widget.widgetName,
|
||||||
|
panel: widget.widgetside,
|
||||||
|
data: {
|
||||||
|
duration: "1h",
|
||||||
|
measurements: {}, // Add actual data if available
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
const widgetData1 = {
|
||||||
|
widgetDeleteDatas: formattedWidgets, zoneId: zoneId, zoneName: existingZone.zoneName
|
||||||
|
|
||||||
|
}
|
||||||
|
// console.log("formattedWidgets",widgetData1);
|
||||||
|
return { success: true, message: "Widget deleted successfully", data: widgetData1, organization: organization }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
return { success: false, message: error?.message || "An unknown error occurred.", error ,organization: organization}
|
return { success: false, message: error?.message || "An unknown error occurred.", error, organization: organization }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -618,7 +618,7 @@ const widgetHandleEvent = async (event: string, socket: Socket, data: any, names
|
|||||||
// console.log(`👀 Active sockets in room:`, namespace.adapter.rooms.get(organization));
|
// console.log(`👀 Active sockets in room:`, namespace.adapter.rooms.get(organization));
|
||||||
// console.log('emitTarget: ', emitTarget);
|
// console.log('emitTarget: ', emitTarget);
|
||||||
if (organization) {
|
if (organization) {
|
||||||
socket.emit(responseEvent, {
|
socket.to(organization).emit(responseEvent, {
|
||||||
success: result.success,
|
success: result.success,
|
||||||
message: result.message,
|
message: result.message,
|
||||||
data: result.data,
|
data: result.data,
|
||||||
|
|||||||
Reference in New Issue
Block a user