PHP Classes

File: resources/js/pages/History.vue

Recommend this page to a friend!
  Classes of Naif Alshaye   Laravel ChatGPT   resources/js/pages/History.vue   Download  
File: resources/js/pages/History.vue
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Laravel ChatGPT
Integrate ChatGPT in a Laravel Nova panel
Author: By
Last change:
Date: 11 months ago
Size: 4,959 bytes
 

Contents

Class file image Download
<template> <div class="md:w-full"> <div class="mb-2 text-xl text-center">Ask ChatGPT</div> <div class="mb-2 text-md flex justify-center" v-if="this.history.length > 0"> <table class="table-auto mt-6 bg-white dark:bg-gray-800 rounded-lg shadow p-6"> <thead> <tr class="text-xs"> <th class="border border-gray-300 dark:border-gray-600 bg-gray-100 dark:bg-gray-700 px-4 py-3"> ID </th> <th class="border border-gray-300 dark:border-gray-600 bg-gray-100 dark:bg-gray-700 px-4 py-3"> Question </th> <th class="border border-gray-300 dark:border-gray-600 bg-gray-100 dark:bg-gray-700 px-4 py-3"> Date </th> <th class="border border-gray-300 dark:border-gray-600 bg-gray-100 dark:bg-gray-700 px-4 py-3"> Tokens </th> <th class="border border-gray-300 dark:border-gray-600 bg-gray-100 dark:bg-gray-700 px-4 py-3"> View </th> <th class="border border-gray-300 dark:border-gray-600 bg-gray-100 dark:bg-gray-700 px-4 py-3"> Delete </th> </tr> </thead> <tbody class="text-center"> <tr v-for="record in this.history" class="hover:bg-gray-100 dark:hover:bg-gray-600"> <td class="border border-gray-300 dark:border-gray-700 px-4 py-1"> {{ record.id }} </td> <td class="border border-gray-300 dark:border-gray-700 px-4 py-1"> {{ record.question.substring(0, 90) }}... </td> <td class="border border-gray-300 dark:border-gray-700 px-4 py-1"> {{ this.formatDate(record.created_at) }} </td> <td class="border border-gray-300 dark:border-gray-700 px-4 py-1"> {{ record.total_tokens }} </td> <td class="border border-gray-300 dark:border-gray-700 px-4 py-1"> <a :href="'/nova/chatgpt/view-questions-history/view/'+record.id"> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/> </svg> </a> </td> <td class="border border-gray-300 dark:border-gray-700 px-4 py-1 flex justify-center items-center"> <a :href="'#'" @click="deleteRecord(record.id)"> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"/> </svg> </a> </td> </tr> </tbody> </table> </div> <div v-show="this.history.length === 0" class="text-center mt-3 text-md text-red-600"> No history records found! </div> </div> </template> <script> export default { components: {}, data() { return { history: [], }; }, mounted() { this.getHistory(); }, methods: { async getHistory() { Nova.request().get('/nova-vendor/chatgpt/history/get-questions', {}).then(({data}) => { this.history = data.history.data }) }, formatDate(date) { var now = new Date(date); var year = now.getFullYear(); var month = (now.getMonth() + 1).toString().padStart(2, '0'); // Adding 1 to the month, as it is zero-based var day = now.getDate().toString().padStart(2, '0'); return year + '-' + month + '-' + day; }, async deleteRecord(id) { Nova.request().post('/nova-vendor/chatgpt/history/delete-question', {id:id}).then(({data}) => { if (data){ this.getHistory(); } }) }, } } </script>