in web_ui/src/applications/bistro/prefs/BistroJobListPrefs.php [96:233]
protected function createSchemata() {
return array_merge(
parent::createSchemata(),
array(
// SEC_FETCHER
self::PREF_JOBS => array(
self::LABEL => 'Only fetch job IDs:',
self::CAPTION =>
'JSON list or space-separated; blank for "all jobs".',
self::DEFAULT_VALUE => '',
self::SECTION => self::SEC_FETCHER,
self::TYPE => self::TYPE_STR),
self::PREF_DEPRECATED_JOB_IDS => array( // Use JOBS instead
// IMPORTANT: I extend get() and below to use JOB_IDS as a
// fallback for JOBS. Delete that code when deleting JOB_IDS.
self::LABEL => 'DEPRECATED: Only fetch job IDs:',
self::CAPTION =>
'DEPRECATED: Comma-separated; blank for "all jobs".',
self::DEFAULT_VALUE => '',
self::SECTION => self::SEC_FETCHER,
self::TYPE => self::TYPE_STR,
// Hide the query form control for this deprecated field.
self::CONTROL => array('bistro_make_hidden_text_control', array())),
self::PREF_JOB_ID_REGEX => array(
self::LABEL => 'Regex for job IDs',
self::CAPTION => 'Use ".*" for "all jobs". If blank, falls back '.
'to the "'.self::PREF_DEFAULT_JOB_ID_REGEX.'" pref.',
self::DEFAULT_VALUE => '',
self::SECTION => self::SEC_FETCHER,
self::TYPE => self::TYPE_STR),
self::PREF_SAMPLE_SHARDS => array(
self::LABEL => 'Sample Node Names',
self::DEFAULT_VALUE => 2,
self::UNITS => ' nodes',
self::SECTION => self::SEC_FETCHER,
self::TYPE => self::TYPE_INT),
self::PREF_SEGMENT_NODES => array(
self::LABEL => 'Segment Node Names',
self::DEFAULT_VALUE => '{}',
self::CAPTION =>
'Sample usage: {"level_name": {"pcre": "/_(.[0-9])$/", '.
'"render": "timestamp"}}. Segment nodes of certain levels '.
'using a parenthesized subpattern of a PCRE regex. Each '.
'segment is shown as a separate bar. Only works if '.
'sample_shards is high enough.',
self::SECTION => self::SEC_FETCHER,
self::TYPE => self::TYPE_STR),
self::PREF_SORT_BY => $this->createDropdownSchema(array(
self::LABEL => 'Sort by',
self::CAPTION =>
// TODO: Make paging work better.
'Only sorts the jobs that were fetched on the current page -- '.
'does not page jobs in the order requested.',
self::SECTION => self::SEC_FETCHER,
self::TYPE => self::TYPE_STR,
self::ALLOWED_VALUES => $this->makeSortOrders())),
// SEC_VALIDATION
self::PREF_MAX_RUNTIME => array(
self::LABEL => 'Max Task Runtime',
self::DEFAULT_VALUE => 3600,
self::UNITS => ' seconds',
self::SECTION => self::SEC_VALIDATION,
self::TYPE => self::TYPE_INT),
self::PREF_WARN_STALENESS => array(
self::LABEL => 'Warning Instance Staleness',
self::DEFAULT_VALUE => 600,
self::UNITS => ' seconds',
self::SECTION => self::SEC_VALIDATION,
self::TYPE => self::TYPE_INT),
self::PREF_ERR_STALENESS => array(
self::LABEL => 'Error Instance Staleness',
self::DEFAULT_VALUE => 900,
self::UNITS => ' seconds',
self::SECTION => self::SEC_VALIDATION,
self::TYPE => self::TYPE_INT),
self::PREF_NODE_COUNT_RANGES => array(
self::LABEL => 'Per-Level Node Count Ranges',
self::CAPTION =>
'A JSON object of {"level_name": [min, max number of nodes]}.',
self::DEFAULT_VALUE => '{}',
self::SECTION => self::SEC_VALIDATION,
self::TYPE => self::TYPE_STR),
// SEC_PAGINATION
self::PREF_PAGE_SIZE => array(
self::LABEL => 'Jobs Per Page',
self::DEFAULT_VALUE => 250,
self::UNITS => ' jobs',
self::SECTION => self::SEC_PAGINATION,
self::TYPE => self::TYPE_INT),
self::PREF_PAGE_OFFSET => array(
self::LABEL => 'Page #',
self::CAPTION => '0-base index of the job to show.',
self::DEFAULT_VALUE => 0,
self::SECTION => self::SEC_PAGINATION,
self::TYPE => self::TYPE_INT),
// SEC_TWEAKS
self::PREF_GET_NODE_NAMES => $this->createBooleanSchema(array(
self::LABEL => 'Get node names',
self::CAPTION =>
'A nonzero value makes us fetch node names, which are essential '.
'for several sanity checks, but cause some perf overhead.',
self::DEFAULT_VALUE => 1,
self::SECTION => self::SEC_TWEAKS)),
self::PREF_HIDE_LEVELS => array(
self::LABEL => 'Hide levels',
self::CAPTION => 'A JSON array of ["level to hide", ...].',
self::DEFAULT_VALUE => '[]',
self::SECTION => self::SEC_TWEAKS,
self::TYPE => self::TYPE_STR),
self::PREF_HIDE_RUNNING_TASK_SUMMARIES => $this->createBooleanSchema(
array(
self::LABEL => 'Hide running task summaries',
self::CAPTION =>
'If you have many jobs with few tasks, these summary bars are '.
'not very informative',
self::DEFAULT_VALUE => 0,
self::SECTION => self::SEC_TWEAKS)),
self::PREF_JOB_ACTIONS => array(
self::LABEL => 'Job Action Menu',
self::CAPTION =>
'Custom entires for the [Job Actions] menu. A JSON array of '.
'[{"name": "Foo", "url": "https://bar/{{job_id}}/view", '.
'"type": "iframe or link"}, ...]',
self::DEFAULT_VALUE => '[]',
self::SECTION => self::SEC_TWEAKS,
self::TYPE => self::TYPE_STR),
self::PREF_DEFAULT_JOB_ID_REGEX => array(
self::LABEL => 'Default job ID regex',
self::CAPTION => 'Replaces pref "'.self::PREF_JOB_ID_REGEX.'" if '.
'that is left blank. In this default, the magic string '.
'%%%PHABRICATOR_USERNAME%%% is replaced by the current username.',
self::DEFAULT_VALUE => '.*',
self::SECTION => self::SEC_TWEAKS,
self::TYPE => self::TYPE_STR)));
}