La procédure bloque tous les modèles de données de sauvegarde de référence qui définissent la signature la procédure (nom, paramètres et retour). Les modèles de données fournis par Le plug-in @blockly/block-shareable-procedures est conçu pour reproduire le comportement des anciens blocs de procédures intégrés de Blockly.
Cela inclut certains comportements que vous ne souhaitez peut-être pas adopter pour votre procédure personnalisée y compris:
- Les types de retour ne sont pas acceptés
- Tous les paramètres sont associés à une variable globale
Si vous souhaitez un comportement différent, vous pouvez créer vos propres données de procédure personnalisée des modèles de ML.
Implémentation du modèle de procédure
Votre modèle de données de procédure doit implémenter IProcedureModel.
class MyProcedureModel {
constructor(workspace, name, id) {
this.workspace = workspace;
this.name = name;
this.id = id;
// Note: construction should not add the model to the procedure map.
},
// Other methods are omitted for brevity...
}
Implémentation du modèle de paramètres
Votre modèle de données de paramètres doit implémenter IParameterModel.
class MyParameterModel {
constructor(workspace, name, id) {
this.workspace = workspace;
this.name = name;
this.id = id;
},
setProcedureModel(model) {
this.model = model;
return this;
}
// Other methods are omitted for brevity...
}
Déclencher des modifications
Toutes les méthodes qui déclenchent des modifications du modèle de procédure doivent également appeler
triggerProceduresUpdate
dans le
Plug-in @blockly/block-shareable-procedures. Cela permettra
appelez doProcedureUpdate
sur tous les blocs de procédure, ce qui entraîne un nouveau rendu.
import {triggerProceduresUpdate} from '@blockly/block-shareable-procedures';
class MyProcedureModel {
setName(name) {
this.name = name;
triggerProcedureUpdate();
return this;
}
// Other methods are omitted for brevity...
}
class MyParameterModel {
setName(name) {
this.name = name;
triggerProcedureUpdate();
return this;
}
// Other methods are omitted for brevity...
}
Événements
Les modèles de procédure Le plug-in @blockly/block-shareable-procedures se déclenche également des événements lorsque les procédures sont modifiées. Cela permet d'utiliser plusieurs espaces de travail garder synchronisés et les modèles de procédure à partager entre eux. Vous pouvez également choisir déclencher des événements si vous le souhaitez.
Désérialisation
Vos classes ont aussi chacune besoin d'une méthode static loadState
pour prendre en charge
désérialisation.
class MyProcedureModel {
static loadState(state, workspace) {
// Note that the procedure model should not deserialize parameters.
// The deserializer will handle that.
return new MyProcedureModel(workspace, state.name, state.id);
}
// Other methods are omitted for brevity...
}
class MyParameterModel {
static loadState(state, workspace) {
return new MyParameterModel(workspace, state.name, state.id);
}
// Other methods are omitted for brevity...
}