blob: f74322698467f5a09633715341fd8e867c459749 [file] [log] [blame]
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
angular.module('zeppelinWebApp').service('websocketMsgSrv', WebsocketMessageService);
function WebsocketMessageService($rootScope, websocketEvents) {
'ngInject';
return {
getHomeNote: function() {
websocketEvents.sendNewEvent({op: 'GET_HOME_NOTE'});
},
createNotebook: function(noteName, defaultInterpreterGroup) {
websocketEvents.sendNewEvent({
op: 'NEW_NOTE',
data: {
name: noteName,
defaultInterpreterGroup: defaultInterpreterGroup,
},
});
},
moveNoteToTrash: function(noteId) {
websocketEvents.sendNewEvent({op: 'MOVE_NOTE_TO_TRASH', data: {id: noteId}});
},
moveFolderToTrash: function(folderPath) {
websocketEvents.sendNewEvent({op: 'MOVE_FOLDER_TO_TRASH', data: {id: folderPath}});
},
restoreNote: function(noteId) {
websocketEvents.sendNewEvent({op: 'RESTORE_NOTE', data: {id: noteId}});
},
restoreFolder: function(folderPath) {
websocketEvents.sendNewEvent({op: 'RESTORE_FOLDER', data: {id: folderPath}});
},
restoreAll: function() {
websocketEvents.sendNewEvent({op: 'RESTORE_ALL'});
},
deleteNote: function(noteId) {
websocketEvents.sendNewEvent({op: 'DEL_NOTE', data: {id: noteId}});
},
removeFolder: function(folderPath) {
websocketEvents.sendNewEvent({op: 'REMOVE_FOLDER', data: {id: folderPath}});
},
emptyTrash: function() {
websocketEvents.sendNewEvent({op: 'EMPTY_TRASH'});
},
cloneNote: function(noteIdToClone, newNoteName) {
websocketEvents.sendNewEvent({op: 'CLONE_NOTE', data: {id: noteIdToClone, name: newNoteName}});
},
getNoteList: function() {
websocketEvents.sendNewEvent({op: 'LIST_NOTES'});
},
reloadAllNotesFromRepo: function() {
websocketEvents.sendNewEvent({op: 'RELOAD_NOTES_FROM_REPO'});
},
getNote: function(noteId) {
websocketEvents.sendNewEvent({op: 'GET_NOTE', data: {id: noteId}});
},
updateNote: function(noteId, noteName, noteConfig) {
websocketEvents.sendNewEvent({op: 'NOTE_UPDATE', data: {id: noteId, name: noteName, config: noteConfig}});
},
updatePersonalizedMode: function(noteId, modeValue) {
websocketEvents.sendNewEvent({op: 'UPDATE_PERSONALIZED_MODE', data: {id: noteId, personalized: modeValue}});
},
renameNote: function(noteId, noteName, relative) {
websocketEvents.sendNewEvent({op: 'NOTE_RENAME', data: {id: noteId, name: noteName, relative: relative}});
},
renameFolder: function(folderId, folderPath) {
websocketEvents.sendNewEvent({op: 'FOLDER_RENAME', data: {id: folderId, name: folderPath}});
},
moveParagraph: function(paragraphId, newIndex) {
websocketEvents.sendNewEvent({op: 'MOVE_PARAGRAPH', data: {id: paragraphId, index: newIndex}});
},
insertParagraph: function(newIndex) {
websocketEvents.sendNewEvent({op: 'INSERT_PARAGRAPH', data: {index: newIndex}});
},
copyParagraph: function(newIndex, paragraphTitle, paragraphData,
paragraphConfig, paragraphParams) {
websocketEvents.sendNewEvent({
op: 'COPY_PARAGRAPH',
data: {
index: newIndex,
title: paragraphTitle,
paragraph: paragraphData,
config: paragraphConfig,
params: paragraphParams,
},
});
},
updateAngularObject: function(noteId, paragraphId, name, value, interpreterGroupId) {
websocketEvents.sendNewEvent({
op: 'ANGULAR_OBJECT_UPDATED',
data: {
noteId: noteId,
paragraphId: paragraphId,
name: name,
value: value,
interpreterGroupId: interpreterGroupId,
},
});
},
clientBindAngularObject: function(noteId, name, value, paragraphId) {
websocketEvents.sendNewEvent({
op: 'ANGULAR_OBJECT_CLIENT_BIND',
data: {
noteId: noteId,
name: name,
value: value,
paragraphId: paragraphId,
},
});
},
clientUnbindAngularObject: function(noteId, name, paragraphId) {
websocketEvents.sendNewEvent({
op: 'ANGULAR_OBJECT_CLIENT_UNBIND',
data: {
noteId: noteId,
name: name,
paragraphId: paragraphId,
},
});
},
cancelParagraphRun: function(paragraphId) {
websocketEvents.sendNewEvent({op: 'CANCEL_PARAGRAPH', data: {id: paragraphId}});
},
paragraphExecutedBySpell: function(paragraphId, paragraphTitle,
paragraphText, paragraphResultsMsg,
paragraphStatus, paragraphErrorMessage,
paragraphConfig, paragraphParams,
paragraphDateStarted, paragraphDateFinished) {
websocketEvents.sendNewEvent({
op: 'PARAGRAPH_EXECUTED_BY_SPELL',
data: {
id: paragraphId,
title: paragraphTitle,
paragraph: paragraphText,
results: {
code: paragraphStatus,
msg: paragraphResultsMsg.map((dataWithType) => {
let serializedData = dataWithType.data;
return {type: dataWithType.type, data: serializedData};
}),
},
status: paragraphStatus,
errorMessage: paragraphErrorMessage,
config: paragraphConfig,
params: paragraphParams,
dateStarted: paragraphDateStarted,
dateFinished: paragraphDateFinished,
},
});
},
runParagraph: function(paragraphId, paragraphTitle, paragraphData, paragraphConfig, paragraphParams) {
websocketEvents.sendNewEvent({
op: 'RUN_PARAGRAPH',
data: {
id: paragraphId,
title: paragraphTitle,
paragraph: paragraphData,
config: paragraphConfig,
params: paragraphParams,
},
});
},
runAllParagraphs: function(noteId, paragraphs) {
websocketEvents.sendNewEvent({
op: 'RUN_ALL_PARAGRAPHS',
data: {
noteId: noteId,
paragraphs: JSON.stringify(paragraphs),
},
});
},
removeParagraph: function(paragraphId) {
websocketEvents.sendNewEvent({op: 'PARAGRAPH_REMOVE', data: {id: paragraphId}});
},
clearParagraphOutput: function(paragraphId) {
websocketEvents.sendNewEvent({op: 'PARAGRAPH_CLEAR_OUTPUT', data: {id: paragraphId}});
},
clearAllParagraphOutput: function(noteId) {
websocketEvents.sendNewEvent({op: 'PARAGRAPH_CLEAR_ALL_OUTPUT', data: {id: noteId}});
},
completion: function(paragraphId, buf, cursor) {
websocketEvents.sendNewEvent({
op: 'COMPLETION',
data: {
id: paragraphId,
buf: buf,
cursor: cursor,
},
});
},
commitParagraph: function(paragraphId, paragraphTitle, paragraphData, paragraphConfig, paragraphParams, noteId) {
return websocketEvents.sendNewEvent({
op: 'COMMIT_PARAGRAPH',
data: {
id: paragraphId,
noteId: noteId,
title: paragraphTitle,
paragraph: paragraphData,
config: paragraphConfig,
params: paragraphParams,
},
});
},
patchParagraph: function(paragraphId, noteId, patch) {
// javascript add "," if change contains several patches
// but java library requires patch list without ","
patch = patch.replace(/,@@/g, '@@');
return websocketEvents.sendNewEvent({
op: 'PATCH_PARAGRAPH',
data: {
id: paragraphId,
noteId: noteId,
patch: patch,
},
});
},
importNote: function(note) {
websocketEvents.sendNewEvent({
op: 'IMPORT_NOTE',
data: {
note: note,
},
});
},
checkpointNote: function(noteId, commitMessage) {
websocketEvents.sendNewEvent({
op: 'CHECKPOINT_NOTE',
data: {
noteId: noteId,
commitMessage: commitMessage,
},
});
},
setNoteRevision: function(noteId, revisionId) {
websocketEvents.sendNewEvent({
op: 'SET_NOTE_REVISION',
data: {
noteId: noteId,
revisionId: revisionId,
},
});
},
listRevisionHistory: function(noteId) {
websocketEvents.sendNewEvent({
op: 'LIST_REVISION_HISTORY',
data: {
noteId: noteId,
},
});
},
getNoteByRevision: function(noteId, revisionId) {
websocketEvents.sendNewEvent({
op: 'NOTE_REVISION',
data: {
noteId: noteId,
revisionId: revisionId,
},
});
},
getNoteByRevisionForCompare: function(noteId, revisionId, position) {
websocketEvents.sendNewEvent({
op: 'NOTE_REVISION_FOR_COMPARE',
data: {
noteId: noteId,
revisionId: revisionId,
position: position,
},
});
},
getEditorSetting: function(paragraphId, magic) {
websocketEvents.sendNewEvent({
op: 'EDITOR_SETTING',
data: {
paragraphId: paragraphId,
magic: magic,
},
});
},
isConnected: function() {
return websocketEvents.isConnected();
},
getJobs: function() {
websocketEvents.sendNewEvent({op: 'LIST_NOTE_JOBS'});
},
disconnectJobEvent: function() {
websocketEvents.sendNewEvent({op: 'UNSUBSCRIBE_UPDATE_NOTE_JOBS'});
},
getUpdateNoteJobsList: function(lastUpdateServerUnixTime) {
websocketEvents.sendNewEvent(
{op: 'LIST_UPDATE_NOTE_JOBS', data: {lastUpdateUnixTime: lastUpdateServerUnixTime * 1}}
);
},
getInterpreterBindings: function(noteId) {
websocketEvents.sendNewEvent({op: 'GET_INTERPRETER_BINDINGS', data: {noteId: noteId}});
},
saveInterpreterBindings: function(noteId, selectedSettingIds) {
// websocketEvents.sendNewEvent({op: 'SAVE_INTERPRETER_BINDINGS',
// data: {noteId: noteId, selectedSettingIds: selectedSettingIds}});
},
listConfigurations: function() {
websocketEvents.sendNewEvent({op: 'LIST_CONFIGURATIONS'});
},
getInterpreterSettings: function() {
websocketEvents.sendNewEvent({op: 'GET_INTERPRETER_SETTINGS'});
},
saveNoteForms: function(note) {
websocketEvents.sendNewEvent({op: 'SAVE_NOTE_FORMS',
data: {
noteId: note.id,
noteParams: note.noteParams,
},
});
},
removeNoteForms: function(note, formName) {
websocketEvents.sendNewEvent({op: 'REMOVE_NOTE_FORMS',
data: {
noteId: note.id,
formName: formName,
},
});
},
};
}