module);
jsVar('lang', array(
'saveFailed' => $lang->ai->saveFail
));
/* 构建选项列表 */
function buildOptions($lang, $prompt, $config)
{
$optionGroups = array();
foreach ($config->ai->targetForm as $name => $forms)
{
$options = array();
foreach (array_keys($forms) as $form)
{
if(isset($forms[$form]->for) && strpos(',' . $forms[$form]->for . ',', ',' . $prompt->module . ',') === false) continue;
$value = "$name.$form";
$isChecked = $value == $prompt->targetForm;
$options[] = radio(
set::primary(true),
set::typeClass('radio'),
set::name('targetForm'),
set::value($value),
set::checked($isChecked),
set::text($lang->ai->targetForm[$name][$form])
);
}
if(empty($options)) continue;
$optionGroups[] = div(
setClass('option-group'),
h5(setClass('group-name'), span($lang->ai->targetForm[$name]['common'])),
div(
setClass('options'),
...$options
)
);
}
return $optionGroups;
}
/* 构建预览列表 */
function buildPreviewList($lang, $prompt, $dataPreview)
{
return ul(
setClass('preview-list'),
li(h5($lang->ai->prompts->dataPreview), p
(
setClass('pre'),
$dataPreview
)),
li(
h5($lang->ai->prompts->rolePreview),
p($prompt->role),
p($prompt->characterization)
),
li(
h5($lang->ai->prompts->promptPreview),
p($prompt->purpose),
p($prompt->elaboration)
)
);
}
div(
setClass('prompt-set-target'),
formPanel(set::id('mainForm'), set::actions(
array(
array('text' => $lang->ai->nextStep, 'class' => 'btn primary', 'id' => 'submit', 'btnType' => 'button'),
array('text' => $lang->ai->goTesting, 'class' => 'btn btn-secondary', 'id' => 'go-test-btn', 'btnType' => 'submit', 'name' => 'goTesting', 'value' => '1')
)
), div(
setClass('panel-container'),
div(setClass('form-panel'), div(
setClass('section-header'),
h4(setClass('text-md'), $lang->ai->prompts->selectTargetForm),
small(setClass('text-gray'), $lang->ai->prompts->selectTargetFormTip)
), div(
setClass('section-content'),
buildOptions($lang, $prompt, $config),
div
(
setClass('pl-4 py-3'),
radio
(
set::name('targetForm'),
set::value('empty.empty'),
set::checked(empty($prompt->targetForm) || $prompt->targetForm == 'empty.empty'),
set::text($lang->ai->prompts->noRedirect)
)
)
)),
div(
setClass('preview-panel'),
div(
setClass('section-header'),
h4(setClass('text-md'), $lang->ai->prompts->inputPreview)
),
div(
setClass('section-content'),
buildPreviewList($lang, $prompt, $dataPreview)
)
)
))
);