مدل های داده رویه سفارشی ایجاد کنید

Procedure تمام مدل‌های داده پشتیبان مرجع را که امضای رویه را تعریف می‌کنند (نام، پارامترها و بازگشت) مسدود می‌کند. مدل های داده ارائه شده توسط پلاگین @blockly/block-shareable-procedures برای تکرار رفتار بلوک های رویه داخلی قدیمی Blockly ساخته شده اند.

این شامل برخی رفتارها می شود که ممکن است برای بلوک های رویه سفارشی خود نخواهید، از جمله:

  • انواع بازگشت پشتیبانی نمی شود
  • همه پارامترها با یک متغیر سراسری مرتبط هستند

اگر رفتار متفاوتی می‌خواهید، می‌توانید مدل‌های داده رویه سفارشی خود را ایجاد کنید.

اجرای مدل رویه

مدل داده رویه شما باید رابط IPProcedureModel را پیاده سازی کند.

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...
}

اجرای مدل پارامتر

مدل داده پارامتری شما باید رابط 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...
}

تغییرات ماشه

هر یک از روش‌هایی که باعث ایجاد تغییرات در مدل رویه می‌شوند باید triggerProceduresUpdate از افزونه @blockly/block-shareable-procedures فراخوانی کنند. این کار doProcedureUpdate را روی هر بلوک رویه ای فراخوانی می کند و باعث می شود که آنها دوباره رندر شوند.

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...
}

رویدادها

مدل‌های رویه در افزونه @blockly/block-shareable-procedures همچنین هنگام تغییر رویه‌ها، رویدادها را فعال می‌کنند. این اجازه می دهد تا چندین فضای کاری در همگام نگه داشته شوند و مدل های رویه در بین آنها به اشتراک گذاشته شود. همچنین در صورت تمایل می‌توانید رویدادها را فعال کنید.

سریال زدایی

کلاس های شما همچنین برای پشتیبانی از deserialization به یک روش static loadState نیاز دارند.

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...
}
،

Procedure تمام مدل‌های داده پشتیبان مرجع را که امضای رویه را تعریف می‌کنند (نام، پارامترها و بازگشت) مسدود می‌کند. مدل های داده ارائه شده توسط پلاگین @blockly/block-shareable-procedures برای تکرار رفتار بلوک های رویه داخلی قدیمی Blockly ساخته شده اند.

این شامل برخی رفتارها می شود که ممکن است برای بلوک های رویه سفارشی خود نخواهید، از جمله:

  • انواع بازگشت پشتیبانی نمی شود
  • همه پارامترها با یک متغیر سراسری مرتبط هستند

اگر رفتار متفاوتی می‌خواهید، می‌توانید مدل‌های داده رویه سفارشی خود را ایجاد کنید.

اجرای مدل رویه

مدل داده رویه شما باید رابط IPProcedureModel را پیاده سازی کند.

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...
}

اجرای مدل پارامتر

مدل داده پارامتر شما باید رابط 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...
}

تغییرات ماشه

هر یک از روش‌هایی که باعث ایجاد تغییرات در مدل رویه می‌شوند باید triggerProceduresUpdate از افزونه @blockly/block-shareable-procedures فراخوانی کنند. این کار doProcedureUpdate را روی هر بلوک رویه ای فراخوانی می کند و باعث می شود که آنها دوباره رندر شوند.

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...
}

رویدادها

مدل‌های رویه در افزونه @blockly/block-shareable-procedures همچنین هنگام تغییر رویه‌ها، رویدادها را فعال می‌کنند. این اجازه می دهد تا چندین فضای کاری در همگام نگه داشته شوند و مدل های رویه در بین آنها به اشتراک گذاشته شود. همچنین در صورت تمایل می‌توانید رویدادها را فعال کنید.

سریال زدایی

کلاس های شما همچنین برای پشتیبانی از deserialization به یک روش static loadState نیاز دارند.

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...
}