mirror of
https://github.com/Fabio286/antares.git
synced 2025-02-08 15:58:45 +01:00
feat: export table content or query results as PHP array, closes #575
This commit is contained in:
parent
2c0b4ffe1f
commit
8968179c11
11
package-lock.json
generated
11
package-lock.json
generated
@ -23,6 +23,7 @@
|
||||
"electron-window-state": "~5.0.3",
|
||||
"encoding": "~0.1.13",
|
||||
"floating-vue": "~2.0.0-beta.20",
|
||||
"json2php": "~0.0.7",
|
||||
"leaflet": "~1.7.1",
|
||||
"marked": "~4.0.19",
|
||||
"moment": "~2.29.4",
|
||||
@ -8642,6 +8643,11 @@
|
||||
"devOptional": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/json2php": {
|
||||
"version": "0.0.7",
|
||||
"resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.7.tgz",
|
||||
"integrity": "sha512-dnSoUiLAoVaMXxFsVi4CrPVYMKOuDBXTghXSmMINX44RZ8WM9cXlY7UqrQnlAcODCVO7FV3+8t/5nDKAjimLfg=="
|
||||
},
|
||||
"node_modules/json5": {
|
||||
"version": "2.2.1",
|
||||
"dev": true,
|
||||
@ -19965,6 +19971,11 @@
|
||||
"version": "5.0.1",
|
||||
"devOptional": true
|
||||
},
|
||||
"json2php": {
|
||||
"version": "0.0.7",
|
||||
"resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.7.tgz",
|
||||
"integrity": "sha512-dnSoUiLAoVaMXxFsVi4CrPVYMKOuDBXTghXSmMINX44RZ8WM9cXlY7UqrQnlAcODCVO7FV3+8t/5nDKAjimLfg=="
|
||||
},
|
||||
"json5": {
|
||||
"version": "2.2.1",
|
||||
"dev": true
|
||||
|
@ -130,6 +130,7 @@
|
||||
"electron-window-state": "~5.0.3",
|
||||
"encoding": "~0.1.13",
|
||||
"floating-vue": "~2.0.0-beta.20",
|
||||
"json2php": "~0.0.7",
|
||||
"leaflet": "~1.7.1",
|
||||
"marked": "~4.0.19",
|
||||
"moment": "~2.29.4",
|
||||
|
@ -103,6 +103,9 @@
|
||||
<li class="menu-item">
|
||||
<a class="c-hand" @click="downloadTable('csv')">CSV</a>
|
||||
</li>
|
||||
<li class="menu-item">
|
||||
<a class="c-hand" @click="downloadTable('php')">{{ t('message.phpArray') }}</a>
|
||||
</li>
|
||||
<li class="menu-item">
|
||||
<a class="c-hand" @click="downloadTable('sql')">SQL INSERT</a>
|
||||
</li>
|
||||
@ -446,7 +449,7 @@ const clear = () => {
|
||||
clearTabData();
|
||||
};
|
||||
|
||||
const downloadTable = (format: 'csv' | 'json' | 'sql') => {
|
||||
const downloadTable = (format: 'csv' | 'json' | 'sql' | 'php') => {
|
||||
queryTable.value.downloadTable(format, `${props.tab.type}-${props.tab.index}`);
|
||||
};
|
||||
|
||||
|
@ -711,7 +711,7 @@ const selectResultset = (index: number) => {
|
||||
resultsetIndex.value = index;
|
||||
};
|
||||
|
||||
const downloadTable = (format: 'csv' | 'json' | 'sql', table: string, chunks = false) => {
|
||||
const downloadTable = (format: 'csv' | 'json' | 'sql' | 'php', table: string, chunks = false) => {
|
||||
if (!sortedResults.value) return;
|
||||
|
||||
if (format === 'sql' && !chunks && customizations.value.exportByChunks) {
|
||||
|
@ -105,6 +105,9 @@
|
||||
<li class="menu-item">
|
||||
<a class="c-hand" @click="downloadTable('csv')">CSV</a>
|
||||
</li>
|
||||
<li class="menu-item">
|
||||
<a class="c-hand" @click="downloadTable('php')">{{ t('message.phpArray') }}</a>
|
||||
</li>
|
||||
<li class="menu-item">
|
||||
<a class="c-hand" @click="downloadTable('sql')">SQL INSERT</a>
|
||||
</li>
|
||||
@ -373,7 +376,7 @@ const setRefreshInterval = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const downloadTable = (format: 'csv' | 'json' | 'sql') => {
|
||||
const downloadTable = (format: 'csv' | 'json' | 'sql' | 'php') => {
|
||||
queryTable.value.downloadTable(format, props.table);
|
||||
};
|
||||
|
||||
|
@ -343,7 +343,8 @@ export const enUS = {
|
||||
switchSearchMethod: 'Switch search method',
|
||||
noResultsPresent: 'No results present',
|
||||
sqlExportOptions: 'SQL export options',
|
||||
targetTable: 'Target table'
|
||||
targetTable: 'Target table',
|
||||
phpArray: 'PHP array'
|
||||
},
|
||||
faker: {
|
||||
address: 'Address',
|
||||
|
@ -1,8 +1,9 @@
|
||||
import { ClientCode } from 'common/interfaces/antares';
|
||||
import { jsonToSqlInsert } from 'common/libs/sqlUtils';
|
||||
import * as json2php from 'json2php';
|
||||
|
||||
export const exportRows = (args: {
|
||||
type: 'csv' | 'json'| 'sql';
|
||||
type: 'csv' | 'json'| 'sql' | 'php';
|
||||
content: object[];
|
||||
table: string;
|
||||
client?: ClientCode;
|
||||
@ -48,6 +49,13 @@ export const exportRows = (args: {
|
||||
content = sql;
|
||||
break;
|
||||
}
|
||||
case 'php': {
|
||||
mime = 'application/x-httpd-php';
|
||||
const printer = json2php.make({ linebreak: '\n', indent: '\t', shortArraySyntax: true });
|
||||
content = printer(args.content);
|
||||
content = `<?php\n$${(args.sqlOptions?.targetTable || args.table).replaceAll('-', '_')} = ${content};`;
|
||||
break;
|
||||
}
|
||||
case 'json':
|
||||
mime = 'application/json';
|
||||
content = JSON.stringify(args.content, null, 3);
|
||||
|
3
src/renderer/untyped.d.ts
vendored
3
src/renderer/untyped.d.ts
vendored
@ -2,6 +2,9 @@
|
||||
/* eslint-disable @typescript-eslint/ban-types */
|
||||
declare module '@/App.vue';
|
||||
declare module 'v-mask';
|
||||
declare module 'json2php' {
|
||||
const make: (args: { linebreak: string; indent: string; shortArraySyntax: boolean }) => (json: any | any[]) => string;
|
||||
}
|
||||
declare module 'vuedraggable' {// <- to export as default
|
||||
const draggableComponent: import('vue').DefineComponent<{
|
||||
list: {
|
||||
|
Loading…
x
Reference in New Issue
Block a user