Our pure JavaScript Scheduler component


Post by irfani »

Hi Support ,

I want to Know who i sorted my data on the basis of date will you please tell me who i can do this

sort: {
field: 'date',
direction: 'ASC'
},

i am using this in my code but with this it never work so i remove it for now

here is my code format


const gridConfig = {
  selectionMode: {
    cell: false
  },
  cls: "b-unplannedgrid",
  flex: '0 1 450px',
  // rowHeight: 85,
  //rowWidth: 450,
  // minWidth: 450,
  disableGridRowModelWarning: true,
  stripeFeature: true,
  rowCopyPasteFeature: true,
  cellMenuFeature: {
    processItems({ items, record }) {
      if (record.serviceType === WS_TYPES.SERVICE_TYPE_TRANSFER) {

    if (record.status.id !== 18) {
      items.shareItem = {
        weight: 3,
        cls: 'b-separator',
        text: 'Share',
        icon: 'b-fa-share-alt',
        async onItem({ source: grid, record: record, index: index, event: event }) {
          const selectedRows = grid.selectedRecords;
          if (selectedRows.length === 0) {
            await generalMethods.schedulerShareTransfer([record])
          } else {
            await generalMethods.schedulerShareTransfer(selectedRows);
          }
        },
      };

      items.assignOperator = {
        weight: 4,
        text: 'Assign Operator',
        icon: 'b-fa-share-square',
        async onItem({ source: grid, record, index, event }) {
          grid.trigger('mmp_assignOperator', record)
        },
      };
    }


    if (!record.isOutsourced) {
      items.requestInOrder = {
        weight: 5,
        cls: 'b-separator',
        text: 'Search In Order',
        icon: 'b-fa-search',
        async onItem({ source: grid, record: record, index: index, event: event }) {
          const selectedRows = grid.selectedRecords;
          if (!selectedRows.length) {
            grid.trigger('mmp_inOrderRequest', { record })
          } else {
            grid.trigger('mmp_inOrderRequest', { selectedRows })
          }
        },
      };

      // items.requestInstant = {
      //   weight: 6,
      //   text: 'Instant Search',
      //   icon: 'b-fa-bolt',
      //   async onItem({source: grid, record: record, index: index, event: event}) {
      //     const selectedRows = grid.selectedRecords;
      //     if (!selectedRows.length) {
      //       grid.trigger('mmp_instantRequest', {record})
      //     } else {
      //       grid.trigger('mmp_instantRequest', {selectedRows})
      //     }
      //   },
      // };

      items.cancelRequest = {
        weight: 10,
        text: 'Cancel Request',
        icon: 'b-fa-times',
        async onItem({ source: grid, record: record, index: index, event: event }) {
          const selectedRows = grid.selectedRecords;
          if (!selectedRows.length) {
            grid.trigger('mmp_cancelRequest', { record })
          } else {
            grid.trigger('mmp_cancelRequest', { selectedRows })
          }
        },
      };
    } else if (record.status.id === 14) {
      items.acceptUpdateFromOwner = {
        weight: 1,
        icon: 'b-fa-check',
        text: 'Accept Update',
        async onItem({ source: grid, record: eventRecord, index: index, event: event }) {
          grid.trigger('mmp_acceptUpdateFromOwner', eventRecord)
        },
        // onItem({source, item, menu, domEvent, record, column, columnRecord, taskRecord, eventRecord, resourceRecord, assignmentRecord, checked }) {
        //   source.trigger('mmp_acceptUpdateFromOwner', null)
        // },
      };

      items.declineUpdateFromOwner = {
        weight: 2,
        text: 'Decline Update',
        icon: 'b-fa-ban',
        async onItem({ source: sch, record }) {
          sch.trigger('mmp_rejectUpdateFromOwner', record)
        },
      };

    }

    items.deleteItem = {
      text: record.isOutsourced && record.status.id !== 18 ? 'Reject' : "Delete",
      icon: 'b-fa-trash',
      cls: 'b-separator',
      async onItem({ source: grid, record: eventRecord, index: index, event: event }) {
        const selectedRows = grid.selectedRecords;
        //todo if id = 18 different delete
        if (!selectedRows.length) {
          grid.trigger('mmp_deleteTransfer', eventRecord)
        } else {
          grid.trigger('mmp_deleteTransfer', selectedRows)
        }
      },
    };

  } else if (record.serviceType === WS_TYPES.SERVICE_TYPE_REQUEST) {
    items.acceptRequest = {
      text: 'Accept',
      icon: 'b-fa-check',
      async onItem({ source: grid, record: record, index: index, event: event }) {
        const selectedRows = grid.selectedRecords;
        if (!selectedRows.length) {
          grid.trigger('mmp_acceptRequest', { record })
        } else {
          grid.trigger('mmp_acceptRequest', { selectedRows })
        }
      },
    };

    items.rejectRequest = {
      text: 'Reject',
      icon: 'b-fa-ban',
      async onItem({ source: grid, record: record, index: index, event: event }) {
        const selectedRows = grid.selectedRecords;
        if (!selectedRows.length) {
          grid.trigger('mmp_rejectRequest', { record })
        } else {
          grid.trigger('mmp_rejectRequest', { selectedRows })
        }
      },
    };
  }

},
items: {
  cut: false,
  paste: false,
  copy: false,
  removeRow: false
}
  },
  filterBarFeature: {
    compactMode: true
  },
  groupFeature: {
    headerHeight: 50,
    field: 'serviceType',
    renderer({ groupRowFor, column }) {
      if (column.parentIndex === 0) {
        return `${groupRowFor}`;
      }
      return '';
    }
  },
  listeners: {
    cellMenuBeforeShow({ record }) {
      // Blocks right click on Group Headers (Request, Transfer etc)
      if (record.isSpecialRow) {
        return false;
      }
    },

// Add a listener for row clicks
cellDblClick({ record, source }) {
  if (record.serviceType === WS_TYPES.SERVICE_TYPE_TRANSFER) {
    showPopupComponent(source, record, "scheduler")
  }
}
  },
  cellTooltipFeature: {
    // Time that mouse needs to be over cell before tooltip is shown
    hoverDelay: 500,
    // Time after mouse out to hide the tooltip, 0 = instantly
    hideDelay: 0,
    tooltipRenderer({ record, tip }) {
      return gridTransferToolTip(record);
    }
  },
  // Columns
  columns: [
    {
      type: 'template',
      flex: 0.7,
      text: 'Services',
      filterable: false,
      autoHeight: true,
      minWidth: 250,
      readOnly: true,
      template: ({ record }) => {
        if (record.serviceType === WS_TYPES.SERVICE_TYPE_TRANSFER) {
          return gridTransferItem(record)
        } else if (record.serviceType === WS_TYPES.SERVICE_TYPE_REQUEST) {
          return gridTransferRequestItem(record);
        }
      },
    },
    {
      text: 'Vehicle',
      field: 'vehicleCategory.name',
      flex: .3,
      minWidth: 100,
      align: 'center',
      autoHeight: true,
      readOnly: true,
      filterable: true,
      sortable: false,
    },
    {
      text: 'Client',
      field: 'client.name',
      flex: .3,
      minWidth: 100,
      align: 'center',
      autoHeight: true,
      readOnly: true,
      filterable: true,
      sortable: false,
    },
    {
      text: 'Status',
      field: 'status.name',
      flex: .3,
      minWidth: 100,
      align: 'center',
      autoHeight: true,
      readOnly: true,
      filterable: true,
      sortable: false,
    },
  ],
}


Post by ghulam.ghous »

It is working, just tried this here:

    features : {
        sort     : {field : 'start', ascending: false},
    },

https://bryntum.com/products/grid/examples/celledit/

And everything works great.

https://bryntum.com/products/grid/docs/api/Core/data/Store#function-sort


Post by irfani »

Hi Support,

the solution you provided is just sort on the basis of field name the ascending is not working too in it will please provide me another solution

const gridConfig = {
  selectionMode: {
    cell: false
  },
  cls: "b-unplannedgrid",
  flex: '0 1 450px',
  // rowHeight: 85,
  //rowWidth: 450,
  // minWidth: 450,
  disableGridRowModelWarning: true,
  stripeFeature: true,
  rowCopyPasteFeature: true,
  
[b] features: { sort: { field: 'date'}, }[/b]
cellMenuFeature: { processItems({ items, record }) { if (record.serviceType === WS_TYPES.SERVICE_TYPE_TRANSFER) { if (record.status.id !== 18) { items.shareItem = { weight: 3, cls: 'b-separator', text: 'Share', icon: 'b-fa-share-alt', async onItem({ source: grid, record: record, index: index, event: event }) { const selectedRows = grid.selectedRecords; if (selectedRows.length === 0) { await generalMethods.schedulerShareTransfer([record]) } else { await generalMethods.schedulerShareTransfer(selectedRows); } }, }; items.assignOperator = { weight: 4, text: 'Assign Operator', icon: 'b-fa-share-square', async onItem({ source: grid, record, index, event }) { grid.trigger('mmp_assignOperator', record) }, }; } if (!record.isOutsourced) { items.requestInOrder = { weight: 5, cls: 'b-separator', text: 'Search In Order', icon: 'b-fa-search', async onItem({ source: grid, record: record, index: index, event: event }) { const selectedRows = grid.selectedRecords; if (!selectedRows.length) { grid.trigger('mmp_inOrderRequest', { record }) } else { grid.trigger('mmp_inOrderRequest', { selectedRows }) } }, }; // items.requestInstant = { // weight: 6, // text: 'Instant Search', // icon: 'b-fa-bolt', // async onItem({source: grid, record: record, index: index, event: event}) { // const selectedRows = grid.selectedRecords; // if (!selectedRows.length) { // grid.trigger('mmp_instantRequest', {record}) // } else { // grid.trigger('mmp_instantRequest', {selectedRows}) // } // }, // }; items.cancelRequest = { weight: 10, text: 'Cancel Request', icon: 'b-fa-times', async onItem({ source: grid, record: record, index: index, event: event }) { const selectedRows = grid.selectedRecords; if (!selectedRows.length) { grid.trigger('mmp_cancelRequest', { record }) } else { grid.trigger('mmp_cancelRequest', { selectedRows }) } }, }; } else if (record.status.id === 14) { items.acceptUpdateFromOwner = { weight: 1, icon: 'b-fa-check', text: 'Accept Update', async onItem({ source: grid, record: eventRecord, index: index, event: event }) { grid.trigger('mmp_acceptUpdateFromOwner', eventRecord) }, // onItem({source, item, menu, domEvent, record, column, columnRecord, taskRecord, eventRecord, resourceRecord, assignmentRecord, checked }) { // source.trigger('mmp_acceptUpdateFromOwner', null) // }, }; items.declineUpdateFromOwner = { weight: 2, text: 'Decline Update', icon: 'b-fa-ban', async onItem({ source: sch, record }) { sch.trigger('mmp_rejectUpdateFromOwner', record) }, }; } items.deleteItem = { text: record.isOutsourced && record.status.id !== 18 ? 'Reject' : "Delete", icon: 'b-fa-trash', cls: 'b-separator', async onItem({ source: grid, record: eventRecord, index: index, event: event }) { const selectedRows = grid.selectedRecords; //todo if id = 18 different delete if (!selectedRows.length) { grid.trigger('mmp_deleteTransfer', eventRecord) } else { grid.trigger('mmp_deleteTransfer', selectedRows) } }, }; } else if (record.serviceType === WS_TYPES.SERVICE_TYPE_REQUEST) { items.acceptRequest = { text: 'Accept', icon: 'b-fa-check', async onItem({ source: grid, record: record, index: index, event: event }) { const selectedRows = grid.selectedRecords; if (!selectedRows.length) { grid.trigger('mmp_acceptRequest', { record }) } else { grid.trigger('mmp_acceptRequest', { selectedRows }) } }, }; items.rejectRequest = { text: 'Reject', icon: 'b-fa-ban', async onItem({ source: grid, record: record, index: index, event: event }) { const selectedRows = grid.selectedRecords; if (!selectedRows.length) { grid.trigger('mmp_rejectRequest', { record }) } else { grid.trigger('mmp_rejectRequest', { selectedRows }) } }, }; } }, items: { cut: false, paste: false, copy: false, removeRow: false } }, filterBarFeature: { compactMode: true }, groupFeature: { headerHeight: 50, field: 'serviceType', renderer({ groupRowFor, column }) { if (column.parentIndex === 0) { return `${groupRowFor}`; } return ''; } }, listeners: { cellMenuBeforeShow({ record }) { // Blocks right click on Group Headers (Request, Transfer etc) if (record.isSpecialRow) { return false; } }, // Add a listener for row clicks cellDblClick({ record, source }) { if (record.serviceType === WS_TYPES.SERVICE_TYPE_TRANSFER) { showPopupComponent(source, record, "scheduler") } } }, cellTooltipFeature: { // Time that mouse needs to be over cell before tooltip is shown hoverDelay: 500, // Time after mouse out to hide the tooltip, 0 = instantly hideDelay: 0, tooltipRenderer({ record, tip }) { return gridTransferToolTip(record); } }, // Columns columns: [ { type: 'template', flex: 0.7, text: 'Services', filterable: false, autoHeight: true, minWidth: 250, readOnly: true, template: ({ record }) => { if (record.serviceType === WS_TYPES.SERVICE_TYPE_TRANSFER) { return gridTransferItem(record) } else if (record.serviceType === WS_TYPES.SERVICE_TYPE_REQUEST) { return gridTransferRequestItem(record); } }, }, { text: 'Vehicle', field: 'vehicleCategory.name', flex: .3, minWidth: 100, align: 'center', autoHeight: true, readOnly: true, filterable: true, sortable: false, }, { text: 'Client', field: 'client.name', flex: .3, minWidth: 100, align: 'center', autoHeight: true, readOnly: true, filterable: true, sortable: false, }, { text: 'Status', field: 'status.name', flex: .3, minWidth: 100, align: 'center', autoHeight: true, readOnly: true, filterable: true, sortable: false, }, ], }

Post by irfani »

Hi support,

When i apply the ascending :true or ascending : false it never works not how any changes in the grid data


Post by ghulam.ghous »

Are you able to reproduce the issue in this example https://bryntum.com/products/grid/examples/celledit/?


Post by irfani »

Feature 'ascending' not available, make sure you have imported it

this the error when i used the ascending false or true in the upper example when i try to edit the code

here is the part of code from the upper example:

  features : {
        cellEdit : true,
        sort     : 'date',
        stripe   : true,
        ascending: true
    },

Post by ghulam.ghous »

Ascending is not a feature rather it is part of the config. Have you read the docs?

So it should be:

  features : {
        cellEdit : true,
        sort     : {'date', ascending : true },
        stripe   : true,
    },

Pleasee read the docs


Post by irfani »

ok thanks


Post Reply