Exemplo n.º 1
0
 /**
  * @param \Cti\Storage\Component\Model $linkModel
  */
 public function getOppositeModel($linkModel)
 {
     foreach ($linkModel->getReferences() as $reference) {
         if ($reference->getDestination() != $this->model->getName()) {
             return $this->schema->getModel($reference->getDestination());
         }
     }
 }
Exemplo n.º 2
0
Arquivo: Id.php Projeto: cti/storage
 public function init(Model $model)
 {
     $this->name = 'id_' . $model->getName();
     $this->properties = array($this->name => new Property(array('behaviour' => $this, 'name' => $this->name, 'comment' => 'Identifier', 'type' => 'integer', 'primary' => true, 'required' => true, 'sequence' => true)));
     if (!$model->getSequence()) {
         $model->createSequence();
     }
 }
Exemplo n.º 3
0
 public function getCode()
 {
     $fields = array();
     foreach ($this->model->getProperties() as $property) {
         $fields[] = $property->getName();
     }
     $code = $this->fenom->render('repository', array('model' => $this->model, 'fields' => $fields, 'schema' => $this->schema));
     return $code;
 }
Exemplo n.º 4
0
Arquivo: Link.php Projeto: cti/storage
 function init(Model $model)
 {
     $model->removeBehaviour('id');
     $model->removeSequence();
     foreach ($this->list as $foreign) {
         if ($foreign->hasBehaviour('log') && !$model->hasBehaviour('log')) {
             $model->addBehaviour('log');
         }
     }
 }
Exemplo n.º 5
0
Arquivo: Grid.php Projeto: cti/sencha
    protected function getAdditionalStoresAfterConstructor()
    {
        $code = "\n";
        $references = $this->model->getOutReferences();
        foreach ($references as $reference) {
            $code .= <<<COFFEE
    Storage.getList '{$reference->getDestination()}', (records) =>
      @additionalStores.{$reference->getDestination()}.loadData records.data

COFFEE;
        }
        return $code;
    }
Exemplo n.º 6
0
 protected function modelAsArray(Model $model)
 {
     $result = array('pk' => $model->getPk(), 'has_log' => (bool) $model->getBehaviour('log'), 'is_link' => (bool) $model->getBehaviour('link'), 'properties' => array(), 'references' => array());
     foreach ($model->getProperties() as $property) {
         $result['properties'][$property->getName()] = $this->propertyAsArray($property);
     }
     foreach ($model->getOutReferences() as $reference) {
         $result['references'][] = $this->referenceAsArray($reference);
     }
     return $result;
 }
Exemplo n.º 7
0
 public function getConditionDefinition()
 {
     /**
      * @var \Cti\Storage\Component\Reference[] $references
      */
     $references = array_values($this->model->getOutReferences());
     /**
      * @var \Cti\Storage\Component\Model[] $referencesModels
      */
     $referencesModels = array();
     $referenceProperties = array();
     $referencesModels[] = $this->schema->getModel($references[0]->getDestination());
     $referenceProperties[] = $references[0]->getProperties();
     $referencesModels[] = $this->schema->getModel($references[1]->getDestination());
     $referenceProperties[] = $references[1]->getProperties();
     $referenceProperties[0] = array_shift($referenceProperties[0]);
     $referenceProperties[1] = array_shift($referenceProperties[1]);
     return "    if @record instanceof Model." . $referencesModels[0]->getClassName() . "\r\n      condition =\r\n        " . $referenceProperties[0]->getName() . ": record.data.id_" . $referencesModels[0]->getName() . "\r\n    else if @record instanceof Model." . $referencesModels[1]->getClassName() . "\r\n      condition =\r\n        " . $referenceProperties[1]->getName() . ": record.data.id_" . $referencesModels[1]->getName() . "\r\n";
 }
Exemplo n.º 8
0
Arquivo: Form.php Projeto: cti/sencha
    public function getGeneratedCode()
    {
        $class = $this->model->getClassName();
        $name = $this->model->getName();
        $pk = $this->model->getPk();
        $idProperty = json_encode(count($pk) == 1 ? $pk[0] : $pk);
        $items = array();
        // @todo References only by 1 field
        /**
         * @var \Cti\Storage\Component\Reference[] $referenceByField
         */
        $referenceByField = array();
        foreach ($this->model->getOutReferences() as $reference) {
            if (count($reference->getProperties()) == 1) {
                $properties = $reference->getProperties();
                $property = array_shift($properties);
                $referenceByField[$property->getName()] = $reference;
            }
        }
        $item_list = $behaviours = array();
        foreach ($this->model->getProperties() as $property) {
            $reference = isset($referenceByField[$property->getName()]) ? $referenceByField[$property->getName()] : null;
            $item = array('name' => $property->getName(), 'allowBlank' => !!$property->getRequired(), 'fieldLabel' => $property->getComment());
            if ($reference) {
                $item['xtype'] = 'ctipicker';
                $item['model'] = $reference->getDestination();
                $item['displayField'] = 'name';
                $item['valueField'] = 'id_' . $reference->getDestination();
            } else {
                switch ($property->getJavascriptType()) {
                    case 'date':
                        $item['xtype'] = 'datefield';
                        break;
                    case 'numeric':
                        $item['xtype'] = 'numberfield';
                        break;
                    default:
                        $item['xtype'] = 'textfield';
                        break;
                }
            }
            if ($property->getBehaviour()) {
                $item['readOnly'] = true;
                $item['disabled'] = true;
                if (!in_array($property->getName(), $pk)) {
                    $behaviours[] = $property->getName();
                }
            } else {
                $item_list[] = $property->getName();
            }
            if ($property->getJavascriptType() == 'numeric') {
                $item['xtype'] = 'numberfield';
            }
            $items[$property->getName()] = $item;
        }
        $item_list = json_encode(array_merge($item_list, $pk, $behaviours));
        $items = json_encode($items);
        $pk_getter = array();
        foreach ($pk as $key) {
            $pk_getter[] = $key . ": @" . $key;
        }
        $pk_getter = implode(', ', $pk_getter);
        return <<<COFFEE
Ext.define 'Generated.Form.{$class}',

  requires: ['Cti.Picker'],
  extend: 'Ext.form.Panel'
  bodyPadding: 10
  monitorValid: true
  border: false

  getPk: -> {$pk_getter}

  getItemsConfig: -> {$items}
  getItemsList: -> {$item_list}

  modelExists: -> !Ext.Array.contains(Ext.Object.getValues(@getPk()), undefined)

  initComponent: ->
    @items = []
    config = @getItemsConfig()
    for item in @getItemsList()
      @items.push config[item]

    @callParent arguments

    if @modelExists()
      Storage.getModel '{$name}', @getPk(), (response) =>
        model = Ext.create 'Model.{$class}', response.data
        @getForm().loadRecord model
        @fireEvent 'recordloaded', model
COFFEE;
    }