private function buildPropertySection(PhabricatorCalendarImport $import)
 {
     $viewer = $this->getViewer();
     $properties = id(new PHUIPropertyListView())->setViewer($viewer);
     $engine = $import->getEngine();
     $properties->addProperty(pht('Source Type'), $engine->getImportEngineTypeName());
     if ($import->getIsDisabled()) {
         $auto_updates = phutil_tag('em', array(), pht('Import Disabled'));
         $has_trigger = false;
     } else {
         $frequency = $import->getTriggerFrequency();
         $frequency_map = PhabricatorCalendarImport::getTriggerFrequencyMap();
         $frequency_names = ipull($frequency_map, 'name');
         $auto_updates = idx($frequency_names, $frequency, $frequency);
         if ($frequency == PhabricatorCalendarImport::FREQUENCY_ONCE) {
             $has_trigger = false;
             $auto_updates = phutil_tag('em', array(), $auto_updates);
         } else {
             $has_trigger = true;
         }
     }
     $properties->addProperty(pht('Automatic Updates'), $auto_updates);
     if ($has_trigger) {
         $trigger = id(new PhabricatorWorkerTriggerQuery())->setViewer($viewer)->withPHIDs(array($import->getTriggerPHID()))->needEvents(true)->executeOne();
         if (!$trigger) {
             $next_trigger = phutil_tag('em', array(), pht('Invalid Trigger'));
         } else {
             $now = PhabricatorTime::getNow();
             $next_epoch = $trigger->getNextEventPrediction();
             $next_trigger = pht('%s (%s)', phabricator_datetime($next_epoch, $viewer), phutil_format_relative_time($next_epoch - $now));
         }
         $properties->addProperty(pht('Next Update'), $next_trigger);
     }
     $engine->appendImportProperties($viewer, $import, $properties);
     return $properties;
 }