90 lines
3.2 KiB
JavaScript
90 lines
3.2 KiB
JavaScript
import Shapes from '/imports/api/shapes/collection';
|
|
import { logger } from '/imports/startup/server/logger';
|
|
|
|
export function addShapeToCollection(meetingId, whiteboardId, shapeObject) {
|
|
let entry, id, removeTempTextShape;
|
|
if (shapeObject != null && shapeObject.shape_type === 'text') {
|
|
logger.info(`we are dealing with a text shape and the event is:${shapeObject.status}`);
|
|
entry = {
|
|
meetingId: meetingId,
|
|
whiteboardId: whiteboardId,
|
|
shape: {
|
|
type: shapeObject.shape.type,
|
|
textBoxHeight: shapeObject.shape.textBoxHeight,
|
|
backgroundColor: shapeObject.shape.backgroundColor,
|
|
fontColor: shapeObject.shape.fontColor,
|
|
status: shapeObject.shape.status,
|
|
dataPoints: shapeObject.shape.dataPoints,
|
|
x: shapeObject.shape.x,
|
|
textBoxWidth: shapeObject.shape.textBoxWidth,
|
|
whiteboardId: shapeObject.shape.whiteboardId,
|
|
fontSize: shapeObject.shape.fontSize,
|
|
id: shapeObject.shape.id,
|
|
y: shapeObject.shape.y,
|
|
calcedFontSize: shapeObject.shape.calcedFontSize,
|
|
text: shapeObject.shape.text,
|
|
background: shapeObject.shape.background,
|
|
},
|
|
};
|
|
if (shapeObject.status === 'textEdited' || shapeObject.status === 'textPublished') {
|
|
// only keep the final version of the text shape
|
|
removeTempTextShape = function (callback) {
|
|
Shapes.remove({
|
|
'shape.id': shapeObject.shape.id,
|
|
});
|
|
return callback();
|
|
};
|
|
|
|
return removeTempTextShape(() => {
|
|
// display as the prestenter is typing
|
|
let id;
|
|
id = Shapes.insert(entry);
|
|
return logger.info(`${shapeObject.status} substituting the temp shapes with the newer one`);
|
|
});
|
|
}
|
|
|
|
// the mouse button was released - the drawing is complete
|
|
// TODO: pencil messages currently don't send draw_end and are labeled all as DRAW_START
|
|
} else if (shapeObject != null && (shapeObject.status === 'DRAW_START' ||
|
|
shapeObject.status === 'DRAW_UPDATE' || shapeObject.status === 'DRAW_END')) {
|
|
shape = Shapes.findOne({
|
|
'shape.id': shapeObject.shape.id,
|
|
});
|
|
if (shape != null) {
|
|
return id = Shapes.update({
|
|
'shape.id': shapeObject.shape.id,
|
|
}, {
|
|
$set: {
|
|
'shape.shape.points': shapeObject.shape.points,
|
|
},
|
|
});
|
|
} else {
|
|
entry = {
|
|
meetingId: meetingId,
|
|
whiteboardId: whiteboardId,
|
|
shape: {
|
|
wb_id: shapeObject.wb_id,
|
|
shape_type: shapeObject.shape_type,
|
|
status: shapeObject.status,
|
|
id: shapeObject.id,
|
|
shape: {
|
|
type: shapeObject.shape.type,
|
|
status: shapeObject.shape.status,
|
|
points: shapeObject.shape.points,
|
|
whiteboardId: shapeObject.shape.whiteboardId,
|
|
id: shapeObject.shape.id,
|
|
square: shapeObject.shape.square,
|
|
transparency: shapeObject.shape.transparency,
|
|
thickness: shapeObject.shape.thickness,
|
|
color: shapeObject.shape.color,
|
|
result: shapeObject.shape.result,
|
|
num_respondents: shapeObject.shape.num_respondents,
|
|
num_responders: shapeObject.shape.num_responders,
|
|
},
|
|
},
|
|
};
|
|
return id = Shapes.insert(entry);
|
|
}
|
|
}
|
|
};
|