@reldens/cms 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -662,10 +662,10 @@ class AdminManager
662
662
  async generateEditRouteContent(req, driverResource, entityPath)
663
663
  {
664
664
  let idProperty = this.fetchEntityIdPropertyKey(driverResource);
665
- let idValue = (req?.query[idProperty] || '').toString();
666
- let templateTitle = ('' === idValue ? 'Create' : 'Edit')+' '+this.translations.labels[driverResource.id()];
667
- let loadedEntity = '' === idValue ? null :await this.loadEntityById(driverResource, idValue);
668
- let entityViewRoute = '' === idValue
665
+ let idValue = String(sc.get(req?.query, idProperty, ''));
666
+ let templateTitle = (!idValue ? 'Create' : 'Edit')+' '+this.translations.labels[driverResource.id()];
667
+ let loadedEntity = !idValue ? null :await this.loadEntityById(driverResource, idValue);
668
+ let entityViewRoute = !idValue
669
669
  ? this.rootPath+'/'+driverResource.entityPath
670
670
  : this.generateEntityRoute('viewPath', driverResource, idProperty, loadedEntity);
671
671
  let renderedEditProperties = {
@@ -677,32 +677,29 @@ class AdminManager
677
677
  };
678
678
  let propertiesKeys = Object.keys(driverResource.options.properties);
679
679
  for(let propertyKey of propertiesKeys){
680
- let resourceProperty = driverResource.options.properties[propertyKey];
680
+ let property = driverResource.options.properties[propertyKey];
681
681
  let fieldDisabled = -1 === driverResource.options.editProperties.indexOf(propertyKey);
682
- let isRequired = resourceProperty.isRequired ? ' required="required"' : '';
683
- if(resourceProperty.isUpload && loadedEntity){
684
- isRequired = '';
685
- }
686
- let inputType = this.getInputType(resourceProperty, fieldDisabled);
687
682
  renderedEditProperties[propertyKey] = await this.render(
688
- this.adminFilesContents.fields.edit[this.propertyType(resourceProperty, 'edit')],
683
+ this.adminFilesContents.fields.edit[this.propertyType(property, 'edit')],
689
684
  {
690
685
  fieldName: propertyKey,
691
686
  fieldValue: await this.generatePropertyEditRenderedValue(
692
687
  loadedEntity,
693
688
  propertyKey,
694
- resourceProperty,
689
+ property,
695
690
  fieldDisabled
696
691
  ),
697
692
  fieldDisabled: fieldDisabled ? ' disabled="disabled"' : '',
698
- required: isRequired,
699
- multiple: resourceProperty.isArray ? ' multiple="multiple"' : '',
700
- inputType
693
+ required: (!property.isUpload || !loadedEntity) && property.isRequired ? ' required="required"' : '',
694
+ multiple: property.isArray ? ' multiple="multiple"' : '',
695
+ inputType: this.getInputType(property, fieldDisabled)
701
696
  }
702
697
  );
703
698
  }
704
- let renderedView = await this.render(this.adminContents.entities[entityPath].edit, renderedEditProperties);
705
- return await this.renderRoute(renderedView, this.adminContents.sideBar);
699
+ return await this.renderRoute(
700
+ await this.render(this.adminContents.entities[entityPath].edit, renderedEditProperties),
701
+ this.adminContents.sideBar
702
+ );
706
703
  }
707
704
 
708
705
  getInputType(resourceProperty, fieldDisabled)
@@ -710,12 +707,18 @@ class AdminManager
710
707
  if('datetime' === resourceProperty.type && !fieldDisabled){
711
708
  return 'datetime-local';
712
709
  }
710
+ if('number' === resourceProperty.type){
711
+ return 'number';
712
+ }
713
713
  return 'text';
714
714
  }
715
715
 
716
716
  async loadEntityById(driverResource, id)
717
717
  {
718
718
  let entityRepository = this.dataServer.getEntity(driverResource.entityKey);
719
+ if(!entityRepository){
720
+ return false;
721
+ }
719
722
  return await entityRepository.loadByIdWithRelations(id);
720
723
  }
721
724
 
@@ -735,24 +738,23 @@ class AdminManager
735
738
  };
736
739
  let entitySerializedData = {};
737
740
  for(let propertyKey of driverResource.options.showProperties){
738
- let resourceProperty = driverResource.options.properties[propertyKey];
741
+ let property = driverResource.options.properties[propertyKey];
739
742
  let {fieldValue, fieldName} = this.generatePropertyRenderedValueWithLabel(
740
743
  loadedEntity,
741
744
  propertyKey,
742
- resourceProperty
745
+ property
743
746
  );
744
747
  entitySerializedData[fieldName] = fieldValue;
745
- let renderedFieldValue = await this.generatePropertyRenderedValue(
746
- fieldValue,
747
- fieldName,
748
- resourceProperty,
749
- 'view'
750
- );
751
748
  renderedViewProperties[propertyKey] = await this.render(
752
- this.adminFilesContents.fields.view[this.propertyType(resourceProperty)],
749
+ this.adminFilesContents.fields.view[this.propertyType(property)],
753
750
  {
754
751
  fieldName: propertyKey,
755
- fieldValue: renderedFieldValue,
752
+ fieldValue: await this.generatePropertyRenderedValue(
753
+ fieldValue,
754
+ fieldName,
755
+ property,
756
+ 'view'
757
+ ),
756
758
  fieldOriginalValue: fieldValue,
757
759
  target: ' target="_blank"'
758
760
  }
@@ -762,13 +764,15 @@ class AdminManager
762
764
  await this.events.emit('adminEntityExtraData', extraDataEvent);
763
765
  entitySerializedData = extraDataEvent.entitySerializedData;
764
766
  renderedViewProperties.entitySerializedData = JSON.stringify(entitySerializedData).replace(/"/g, '"');
765
- let renderedView = await this.render(this.adminContents.entities[entityPath].view, renderedViewProperties);
766
- return await this.renderRoute(renderedView, this.adminContents.sideBar);
767
+ return await this.renderRoute(
768
+ await this.render(this.adminContents.entities[entityPath].view, renderedViewProperties),
769
+ this.adminContents.sideBar
770
+ );
767
771
  }
768
772
 
769
773
  propertyType(resourceProperty, templateType)
770
774
  {
771
- let propertyType = resourceProperty.type || 'text';
775
+ let propertyType = sc.get(resourceProperty, 'type', 'text');
772
776
  if('reference' === propertyType && 'edit' === templateType){
773
777
  return 'select';
774
778
  }
@@ -805,7 +809,8 @@ class AdminManager
805
809
  });
806
810
  let entitiesRows = await this.loadEntitiesForList(driverResource, pageSize, page, req, filters);
807
811
  let listRawContent = this.adminContents.entities[entityPath].list.toString();
808
- let totalPages = Math.ceil(await this.countTotalEntities(driverResource, filters) / pageSize);
812
+ let totalEntities = await this.countTotalEntities(driverResource, filters);
813
+ let totalPages = totalEntities <= pageSize ? 1 : Math.ceil(totalEntities / pageSize);
809
814
  let pages = PageRangeProvider.fetch(page, totalPages);
810
815
  let renderedPagination = '';
811
816
  for(let page of pages){
@@ -858,6 +863,9 @@ class AdminManager
858
863
  {
859
864
  /** @type {BaseDriver|ObjectionJsDriver} entityRepository **/
860
865
  let entityRepository = this.dataServer.getEntity(driverResource.entityKey);
866
+ if(!entityRepository){
867
+ return false;
868
+ }
861
869
  return await entityRepository.count(filters);
862
870
  }
863
871