Navigation

    Quasar Framework

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search

    QGrid v0.0.2 has been released!!

    Useful Tips (NEW)
    5
    14
    210
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • dobbel
      dobbel @Pratik Patel last edited by

      @Pratik-Patel Very useful and great additions!

      1 Reply Last reply Reply Quote 0
      • Pratik Patel
        Pratik Patel last edited by

        @dobbel Thanks.

        1 Reply Last reply Reply Quote 0
        • Pratik Patel
          Pratik Patel last edited by metalsadman

          QGrid v0.0.5 has been released!!

          New -

          • Added Grouping of the columns feature

          Demo - https://quasar-qgrid.netlify.app/examples

          *edit: modded typo - @metalsadman

          dobbel 1 Reply Last reply Reply Quote 1
          • dobbel
            dobbel @Pratik Patel last edited by

            @Pratik-Patel

            great update!

            1 Reply Last reply Reply Quote 1
            • Hawkeye64
              Hawkeye64 last edited by

              QGrid, not QGird – be careful

              1 Reply Last reply Reply Quote 1
              • Pratik Patel
                Pratik Patel last edited by

                Yes, @Hawkeye64 🙂

                1 Reply Last reply Reply Quote 0
                • G
                  gs86 last edited by gs86

                  @Pratik-Patel i have tried using your qgrid extension but there are a few quirks i found,

                  the filter_type: ‘select’ and pagination does not seem to work with data being requested from the server, i am pasting the demo i have built, its pretty straight forward with the ajax request i am doing.

                  can you please review

                  @Hawkeye64 if you can also advise, thanks!

                  <template>
                    <div>
                      <q-grid
                        :title="`${pageTitle}s`"
                        :pagination.sync="pagination"
                        :data="data"
                        :columns="columns"
                        :columns_filter="true"
                        :draggable="true"
                        :fullscreen="true"
                        :csv_download="true"
                        :global_search="true"
                        :no-data-label="$utils.noResultsLabel"
                        :no-results-label="$utils.filterNoResultsLabel"
                        row-key="id"
                        :loading="loading"
                        :filter="filter"
                        @request="onRequest"
                        binary-state-sort
                      >
                        <template v-slot:body="props">
                          <q-tr :props="props">
                            <q-td key="id">
                              {{ props.row.id }}
                            </q-td>
                            <q-td key="roll_no">
                              {{ props.row.roll_no }}
                            </q-td>
                            <q-td key="color">
                              {{ props.row.color }}
                            </q-td>
                            <q-td key="gsm">
                              {{ props.row.gsm }}
                            </q-td>
                            <q-td key="length">
                              {{ props.row.length }}
                            </q-td>
                            <q-td key="roll_size">
                              {{ props.row.roll_size }}
                            </q-td>
                            <q-td key="gross_weight">
                              {{ props.row.gross_weight }}
                            </q-td>
                            <q-td key="net_weight">
                              {{ props.row.net_weight }}
                            </q-td>
                            <q-td key="createdAt">
                              {{ $utils.formatDate(props.row.createdAt) }}
                            </q-td>
                            <q-td key="updatedAt">
                              {{ $utils.formatDate(props.row.updatedAt) }}
                            </q-td>
                          </q-tr>
                        </template>
                      </q-grid>
                    </div>
                  </template>
                  
                  <script>
                  const strPage = "Roll";
                  
                  import { mapActions, mapState, mapGetters } from "vuex";
                  
                  export default {
                    async mounted() {
                      this.refresh();
                    },
                    computed: {
                      ...mapState("enquiry", ["arrColor"]),
                  
                      arrColorMapped() {
                        let arr = this.arrColor.map(str => {
                          return { id: str, name: str };
                        });
                        return arr;
                      },
                      pageUri() {
                        return this.pageTitle.toLowerCase().replace(" ", "_");
                      }
                    },
                    methods: {
                      async onRequest(props) {
                        const { page, rowsPerPage, sortBy, descending } = props.pagination;
                        const strFilter = props.filter;
                  
                        this.loading = true;
                  
                        let objParams = Object.assign({}, props.pagination);
                        objParams.search = strFilter;
                  
                        let objResponse;
                        try {
                          //pass status as params
                          if (this.status) {
                            objParams.status = this.status;
                          }
                          objResponse = await this.$myAxios.execute(
                            "GET",
                            `/${this.pageUri}`,
                            objParams
                          );
                        } catch (e) {
                          this.$utils.showErrorNotice(e.message);
                        } finally {
                          this.loading = false;
                        }
                  
                        if (objResponse) {
                          this.pagination.rowsNumber = objResponse.obj.count;
                          this.pagination.page = page;
                          this.pagination.rowsPerPage = rowsPerPage;
                          this.pagination.sortBy = sortBy;
                          this.pagination.descending = descending;
                          this.data = objResponse.obj.rows;
                        }
                      },
                      async refresh() {
                        this.onRequest({
                          pagination: this.pagination,
                          filter: undefined
                        });
                      }
                    },
                  
                    data() {
                      return {
                        pageTitle: strPage,
                        breadcrumbs: [
                          { id: 1, label: "Home", icon: "home", to: "/admin/dashboard" },
                          { id: 2, label: strPage, icon: "folder" }
                        ],
                        columns: [
                          {
                            name: "id",
                            required: true,
                            label: "Id",
                            align: "left",
                            field: "id",
                  
                            sort: (a, b) => parseInt(a, 10) - parseInt(b, 10),
                            sortable: true
                          },
                          {
                            name: "roll_no",
                            required: true,
                            label: "Roll #",
                            align: "left",
                            field: "roll_no",
                  
                            sort: (a, b) => parseInt(a, 10) - parseInt(b, 10),
                            sortable: true
                          },
                          {
                            name: "color",
                            label: "Color",
                            align: "left",
                            field: "color",
                            sortable: true,
                            filter_type: "select",
                            sort: (a, b) => parseInt(a, 10) - parseInt(b, 10)
                          },
                          {
                            name: "gsm",
                            label: "GSM",
                            align: "left",
                            field: "gsm",
                            sortable: true,
                            sort: (a, b) => parseInt(a, 10) - parseInt(b, 10)
                          },
                          {
                            name: "length",
                            label: "Length",
                            align: "left",
                            field: "length",
                            sortable: true,
                            filter_type: "select",
                            sort: (a, b) => parseInt(a, 10) - parseInt(b, 10)
                          },
                          {
                            name: "roll_size",
                            label: "Roll Size",
                            align: "left",
                            field: "roll_size",
                            sortable: true,
                            sort: (a, b) => parseInt(a, 10) - parseInt(b, 10)
                          },
                          {
                            name: "gross_weight",
                            label: "Gross Weight",
                            align: "left",
                            field: "gross_weight",
                            sortable: true,
                            sort: (a, b) => parseInt(a, 10) - parseInt(b, 10)
                          },
                          {
                            name: "net_weight",
                            label: "Net Weight",
                            align: "left",
                            field: "net_weight",
                            sortable: true,
                            sort: (a, b) => parseInt(a, 10) - parseInt(b, 10)
                          },
                          {
                            name: "createdAt",
                            label: "Date Created",
                            align: "left",
                            field: "createdAt",
                            sortable: true,
                            sort: (a, b) => parseInt(a, 10) - parseInt(b, 10)
                          },
                          {
                            name: "updatedAt",
                            label: "Date Updated",
                            align: "left",
                            field: "updatedAt",
                            sortable: true,
                            sort: (a, b) => parseInt(a, 10) - parseInt(b, 10)
                          }
                        ],
                        objModel: {},
                        editMode: false,
                        dialog: false,
                        printDialog: false,
                        loading: false,
                        filter: "",
                        data: [],
                        pagination: {
                          sortBy: "id",
                          descending: true,
                          page: 1,
                          rowsPerPage: 10,
                          rowsNumber: 10
                        },
                        rollsToPrint: []
                      };
                    }
                  };
                  </script>
                  
                  <style lang="scss" scoped></style>
                   
                  
                  1 Reply Last reply Reply Quote 0
                  • Hawkeye64
                    Hawkeye64 last edited by

                    @gs86 My advice is to not use anything less than v1.0.0 in production. If you’re playing with it, fine, otherwise you’re just testing.

                    1 Reply Last reply Reply Quote 0
                    • G
                      gs86 last edited by

                      @Hawkeye64 thanks for the advice, lets see if @Pratik-Patel has this working and is an easy fix we can use. i will give it a try.

                      Thanks

                      1 Reply Last reply Reply Quote 0
                      • Pratik Patel
                        Pratik Patel last edited by

                        Hi @gs86,

                        I never worked on server side pagination and filter with QTable. I have tried to implement in QGrid but no luck yet.

                        Thanks

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post