ধাপে ধাপে কনফিগারেশন

স্টেপড কনফিগারেশন ব্যবহারকারীর দেওয়া উত্তরের উপর ভিত্তি করে কানেক্টরের কনফিগারেশনকে গতিশীলভাবে পূরণ করার সুযোগ দেয়। উদাহরণস্বরূপ, একটি 'State' ড্রপডাউন নির্বাচন করার পর একটি 'City' ড্রপডাউন পূরণ করা।

প্রয়োজনীয়তা

এই নির্দেশিকাটি ধরে নেয় যে আপনি কমিউনিটি কানেক্টর কনফিগারেশনের সাথে আগে থেকেই পরিচিত। বিষয়টি পুনরায় ঝালিয়ে নেওয়ার জন্য `getConfig`-এর মাধ্যমে কনফিগারেশন নির্ধারণ দেখুন।

সংক্ষিপ্ত বিবরণ

স্টেপড কনফিগারেশনে ডেটা স্টুডিও একাধিকবার getConfig() কল করে এবং আপনার কানেক্টর প্রতিবার আরও কনফিগারেশন প্রশ্ন ফেরত পাঠায়। getConfig() এর প্রতিটি কলে শেষ getConfig() প্রতিক্রিয়ার প্রতি ব্যবহারকারীর উত্তরগুলো অন্তর্ভুক্ত থাকবে। যতক্ষণ আপনি setIsSteppedConfig(true) সহ একটি প্রতিক্রিয়া ফেরত দেবেন, ততক্ষণ এই প্রক্রিয়াটি চলতে থাকবে।

নির্দেশিকা

কনফিগারেশন সম্পূর্ণ না হওয়া পর্যন্ত setIsSteppedConfig(true) সেট করুন।
যতক্ষণ setIsSteppedConfig(true) সেট করা থাকবে, ততক্ষণ ডেটা স্টুডিও বারবার getConfig() কল করবে। কনফিগারেশন সম্পূর্ণ হয়ে গেলে, চূড়ান্ত getConfig() রেসপন্সে setIsSteppedConfig(false) সেট করা উচিত।
যেসব কনফিগারেশন প্রশ্ন পরবর্তী প্রশ্ন নির্ধারণ করে, সেগুলোর জন্য isDynamic(true) সেট করুন।
যদি ব্যবহারকারী isDynamic হিসেবে চিহ্নিত কোনো ফিল্ড পরিবর্তন করেন, তাহলে UI-তে থাকা পরবর্তী কনফিগারেশন এন্ট্রিগুলো মুছে যাবে এবং ব্যবহারকারীকে পরবর্তী সমস্ত ধাপ পুনরায় কনফিগার করতে হবে। এটি নিশ্চিত করতে সাহায্য করে যে ব্যবহারকারীরা আপনাকে কোনো অবৈধ কনফিগারেশন পাঠাচ্ছেন না।
ব্যবহারকারীর দেওয়া উত্তরগুলো request.configParams এর মাধ্যমে পাঠানো হবে।

আপনার কানেক্টরে প্রথম getConfig() অনুরোধের জন্য request.configParams undefined থাকবে। পরবর্তী অনুরোধগুলিতে ব্যবহারকারীর দেওয়া উত্তরগুলি কনফিগারেশন আইডি দ্বারা কী করা একটি অবজেক্ট হিসাবে অন্তর্ভুক্ত থাকবে, অথবা ব্যবহারকারী কোনো উত্তর না দিলে undefined

উদাহরণ:

{
  state: 'CA',
  city: 'mountain_view'
}
কনফিগারেশনগুলি সংযোজনযোগ্য

নতুন কনফিগারেশন প্রশ্নগুলো বিদ্যমান প্রশ্নগুলোর পরে যোগ করা উচিত।

কনফিগারেশন পরিবর্তন করা যাবে না

যদি পূর্বে কোনো কনফিগারেশন প্রশ্ন জিজ্ঞাসা করা হয়ে থাকে, তবে পরবর্তী সমস্ত কলে সেটি উপস্থিত থাকা উচিত। উদাহরণস্বরূপ, যদি getConfig() এর প্রথম কলে কনফিগারেশন প্রশ্ন A জিজ্ঞাসা করা হয়ে থাকে, তবে A ভবিষ্যতের সমস্ত উত্তরে অন্তর্ভুক্ত থাকা উচিত।

কনফিগারেশনগুলি আইডম্পোটেন্ট

একই configParams ব্যবহার করে getConfig() কল করলে একই কনফিগারেশন ফেরত আসা উচিত।

ডাইনামিক প্যারামিটার ওভাররাইড করা যাবে না।

ডেটা স্টুডিও ডায়নামিক কনফিগারেশন প্যারামিটার ওভাররাইড করার অনুমতি দেবে না।

উদাহরণ কনফিগারেশন

ডাইনামিক ড্রপডাউন

এই প্রথম প্রশ্নটি ব্যবহারকারীকে একটি রাজ্য নির্বাচন করতে বলে, তারপর নির্বাচিত রাজ্যের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে একটি শহরের ড্রপডাউন তালিকা প্রদান করে।

var cc = DataStudioApp.createCommunityConnector();

function optionsForState(state) {
  switch (state) {
    case "IL": {
      return [["Chicago", "chicago"], ["Springfield", "springfield"]];
    }
    case "CA": {
      return [["Mountain View", "mountain_view"], ["Los Angeles", "los_angeles"]];
    }
    default: {
      cc.newUserError()
          .setText('You must either select "IL" or "CA"')
          .throwException();
    }
  }
}

function getConfig(request) {
  var configParams = request.configParams;
  var isFirstRequest = configParams === undefined;
  var config = cc.getConfig();
  if (isFirstRequest) {
    config.setIsSteppedConfig(true);
  }

  config.newSelectSingle()
      .setId("state")
      .setName("State")
  // Set isDynamic to true so any changes to State will clear the city
  // selections.
      .setIsDynamic(true)
      .addOption(config.newOptionBuilder().setLabel("Illinois").setValue("IL"))
      .addOption(config.newOptionBuilder().setLabel("California").setValue("CA"));

  if (!isFirstRequest) {
    var city = config.newSelectSingle()
        .setId("city")
        .setName("City");
    var cityOptions = optionsForState(configParams.state);
    cityOptions.forEach(function(labelAndValue) {
      var cityLabel = labelAndValue[0];
      var cityValue = labelAndValue[1];
      city.addOption(config.newOptionBuilder().setLabel(cityLabel).setValue(cityValue));
    });
  }
  return config.build();
}

শাখা পথ

নির্বাচিত 'দেশ' 'USA' হলে এটি একটি অতিরিক্ত প্রশ্ন জিজ্ঞাসা করবে।

var cc = DataStudioApp.createCommunityConnector();

function getConfig(request) {
  var configParams = request.configParams;
  var isFirstRequest = configParams === undefined;
  var config = cc.getConfig();
  if (isFirstRequest) {
    config.setIsSteppedConfig(true);
  }

  config
      .newSelectSingle()
      .setId('country')
      .setName('Country')
  // Set isDynamic to true so any changes to Country will clear the state
  // selections.
      .setIsDynamic(true)
      .addOption(config.newOptionBuilder().setLabel('United States').setValue('USA'))
      .addOption(config.newOptionBuilder().setLabel('Canada').setValue('CA'));

  if (!isFirstRequest) {
    // validate a valid value was selected for configParams.country
    if (configParams.country === undefined) {
      cc.newUserError().setText('You must choose a country.').throwException();
    }
    switch (configParams.country) {
      case 'USA': {
        config
            .newSelectSingle()
            .setId('state')
            .setName('State')
            .addOption(config.newOptionBuilder().setLabel('New York').setValue('NY'))
            .addOption(config.newOptionBuilder().setLabel('Calfornia').setValue('CA'));
        break;
      }
      case 'CA': {
        // No additional configuration is needed for Canada.
        break;
      }
      default: {
        cc.newUserError()
            .setText('You must either select "CA" or "USA"')
            .throwException();
      }
    }
  }
  return config.build();
}