Compare commits

...

19 Commits

Author SHA1 Message Date
wh1te909
68036f6837 Release 0.101.28 2023-08-14 06:39:49 +00:00
wh1te909
45ac82b1dd bump version 2023-08-14 06:39:31 +00:00
wh1te909
d94e5c7965 update reqs 2023-08-11 07:07:00 +00:00
wh1te909
e0c1b3199a update reqs 2023-08-06 23:01:46 +00:00
sadnub
fdbbdf7394 make it so the script manager doesn't close if escape is pressed on script editor 2023-08-05 09:54:14 -04:00
wh1te909
03fae45ac5 Release 0.101.25 2023-07-04 18:49:46 +00:00
wh1te909
346670e8ea bump version 2023-07-04 18:49:28 +00:00
wh1te909
e030efaecf bump dev ver 2023-07-03 23:32:40 +00:00
wh1te909
b8a4f9fe74 update reqs 2023-07-03 23:32:09 +00:00
wh1te909
f963b51d70 update quasar 2023-07-01 16:48:03 +00:00
wh1te909
feacb19cf9 bump dev version 2023-06-30 20:30:52 +00:00
wh1te909
7ce2c1e969 node 18 2023-06-30 20:26:30 +00:00
wh1te909
d1defcef4a update reqs 2023-06-30 20:26:21 +00:00
Dan
e674b4fa5d Merge pull request #9 from silversword411/develop
Adding customizable columns to script manager table
2023-06-07 11:59:29 -07:00
sadnub
b08a5a6c2d fix light mode colors 2023-06-06 16:17:09 -04:00
sadnub
9fa1d7209f fix duplicate columns on script manager close and open 2023-06-06 15:42:06 -04:00
Dan
2adfccfa1d Merge pull request #10 from dinger1986/develop
Update InitialSetup.vue
2023-06-06 11:51:01 -07:00
silversword411
04766efcd0 tactical-table and script manager table for column selection 2023-06-06 12:38:53 -04:00
dinger1986
4babb937f6 Update InitialSetup.vue 2023-06-01 21:37:06 +00:00
7 changed files with 1080 additions and 849 deletions

View File

@@ -15,7 +15,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 16
node-version: 18
- run: touch env-config.js
@@ -32,4 +32,3 @@ jobs:
uses: softprops/action-gh-release@v1
with:
files: trmm-web-${{github.ref_name}}.tar.gz

1727
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "web",
"version": "0.101.22",
"version": "0.101.28",
"private": true,
"productName": "Tactical RMM",
"scripts": {
@@ -10,31 +10,31 @@
"format": "prettier --write \"**/*.{js,ts,vue,,html,md,json}\" --ignore-path .gitignore"
},
"dependencies": {
"@quasar/extras": "1.16.4",
"apexcharts": "3.40.0",
"@quasar/extras": "1.16.5",
"apexcharts": "3.41.1",
"axios": "1.4.0",
"dotenv": "16.0.3",
"qrcode.vue": "3.4.0",
"quasar": "2.12.0",
"vue": "3.2.47",
"vue3-ace-editor": "2.2.2",
"vue3-apexcharts": "1.4.1",
"dotenv": "16.3.1",
"qrcode.vue": "3.4.1",
"quasar": "2.12.4",
"vue": "3.3.4",
"vue3-ace-editor": "2.2.3",
"vue3-apexcharts": "1.4.4",
"vuedraggable": "4.1.0",
"vue-router": "4.1.6",
"vue-router": "4.2.4",
"vuex": "4.1.0"
},
"devDependencies": {
"@quasar/cli": "^2.2.1",
"@intlify/unplugin-vue-i18n": "^0.10.0",
"@quasar/cli": "^2.2.2",
"@intlify/unplugin-vue-i18n": "^0.12.2",
"@quasar/app-vite": "^1.4.3",
"@types/node": "^20.2.4",
"@typescript-eslint/eslint-plugin": "^5.59.7",
"@typescript-eslint/parser": "^5.59.7",
"@types/node": "^20.4.8",
"@typescript-eslint/eslint-plugin": "^6.2.1",
"@typescript-eslint/parser": "^6.2.1",
"autoprefixer": "10.4.14",
"eslint": "8.41.0",
"eslint-config-prettier": "8.8.0",
"eslint": "8.46.0",
"eslint-config-prettier": "9.0.0",
"eslint-plugin-vue": "8.7.1",
"prettier": "2.8.8",
"typescript": "5.0.4"
"prettier": "3.0.1",
"typescript": "5.1.6"
}
}
}

View File

@@ -3,7 +3,7 @@
ref="dialogRef"
@hide="onDialogHide"
persistent
@keydown.esc="onDialogHide"
@keydown.esc.stop="onDialogHide"
:maximized="maximized"
>
<q-card

View File

@@ -286,15 +286,10 @@
</template>
</q-tree>
</div>
<q-table
<tactical-table
v-if="tableView"
dense
:table-class="{
'table-bgcolor': !$q.dark.isActive,
'table-bgcolor-dark': $q.dark.isActive,
}"
:style="{ 'max-height': `${$q.screen.height - 182}px` }"
class="tbl-sticky"
:rows="visibleScripts"
:columns="columns"
:loading="loading"
@@ -304,6 +299,7 @@
binary-state-sort
virtual-scroll
:rows-per-page-options="[0]"
column-select
>
<template v-slot:header-cell-favorite="props">
<q-th :props="props" auto-width>
@@ -425,7 +421,7 @@
</q-list>
</q-menu>
<!-- favorite -->
<q-td>
<q-td key="favorite" :props="props">
<q-icon
v-if="props.row.favorite"
color="yellow-8"
@@ -434,7 +430,7 @@
/>
</q-td>
<!-- shell icon -->
<q-td>
<q-td key="shell" :props="props">
<q-icon
v-if="props.row.shell === 'powershell'"
name="mdi-powershell"
@@ -469,7 +465,7 @@
</q-icon>
</q-td>
<!-- supported platforms -->
<q-td>
<q-td key="supported_platforms" :props="props">
<q-badge
v-if="
!props.row.supported_platforms ||
@@ -487,7 +483,11 @@
>
</q-td>
<!-- name -->
<q-td :style="{ color: props.row.hidden ? 'grey' : '' }">
<q-td
key="name"
:props="props"
:style="{ color: props.row.hidden ? 'grey' : '' }"
>
{{ truncateText(props.row.name, 50) }}
<q-tooltip
v-if="props.row.name.length >= 50"
@@ -497,7 +497,7 @@
</q-tooltip>
</q-td>
<!-- args -->
<q-td>
<q-td key="args" :props="props">
<span v-if="props.row.args.length > 0">
{{ truncateText(props.row.args.toString(), 30) }}
<q-tooltip
@@ -509,8 +509,8 @@
</span>
</q-td>
<q-td>{{ props.row.category }}</q-td>
<q-td>
<q-td key="category" :props="props">{{ props.row.category }}</q-td>
<q-td key="desc" :props="props">
{{ truncateText(props.row.description, 30) }}
<q-tooltip
v-if="props.row.description.length >= 30"
@@ -518,10 +518,13 @@
>{{ props.row.description }}</q-tooltip
>
</q-td>
<q-td>{{ props.row.default_timeout }}</q-td>
<q-td key="default_timeout" :props="props">{{
props.row.default_timeout
}}</q-td>
<q-td></q-td>
</q-tr>
</template>
</q-table>
</tactical-table>
</q-card>
</q-dialog>
</template>
@@ -545,12 +548,13 @@ import { notifySuccess } from "@/utils/notify";
import ScriptUploadModal from "@/components/scripts/ScriptUploadModal.vue";
import ScriptFormModal from "@/components/scripts/ScriptFormModal.vue";
import ScriptSnippets from "@/components/scripts/ScriptSnippets.vue";
import TacticalTable from "@/components/ui/TacticalTable.vue";
// static data
const columns = [
{
name: "favorite",
label: "",
label: "Favorites",
field: "favorite",
align: "left",
sortable: true,
@@ -608,6 +612,9 @@ const columns = [
export default {
name: "ScriptManager",
components: {
TacticalTable,
},
emits: [...useDialogPluginComponent.emits],
setup() {
// setup vuex store

View File

@@ -0,0 +1,107 @@
<template>
<q-table
:columns="localColumns"
:visible-columns="visibleColumns"
:table-class="{
'table-bgcolor': !$q.dark.isActive,
'table-bgcolor-dark': $q.dark.isActive,
'column-bgcolor-dark': $q.dark.isActive && columnSelect,
'column-bgcolor': !$q.dark.isActive && columnSelect,
'sticky-header-right-column': columnSelect,
'tbl-sticky': !columnSelect,
}"
v-bind="$attrs"
>
<template v-for="(_, slot) in $slots" v-slot:[slot]="scope">
<slot :name="slot" v-bind="scope || {}" />
</template>
<template v-slot:header-cell-columnSelect="props">
<q-th :props="props" auto-width>
<q-btn dense flat icon="more_horiz">
<q-menu>
<q-option-group
v-model="visibleColumns"
:options="columnOptions"
type="checkbox"
/>
</q-menu>
</q-btn>
</q-th>
</template>
</q-table>
</template>
<script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({
inheritAttrs: false,
});
</script>
<script setup lang="ts">
import { ref } from "vue";
import { type QTableColumn } from "quasar";
const props = withDefaults(
defineProps<{
columns: QTableColumn[];
columnSelect?: boolean;
excludeColumns?: string[];
}>(),
{ columnSelect: false, excludeColumns: () => ["columnSelect"] }
);
// save a non-reactive copy of columns to modify
const localColumns: QTableColumn[] = Object.assign([], props.columns);
if (props.columnSelect)
localColumns.push({
name: "columnSelect",
label: "Column Select",
field: "columnSelect",
});
const visibleColumns = ref(localColumns.map((column) => column.name));
const columnOptions = ref(
localColumns
.filter((column) => !props.excludeColumns.includes(column.name))
.map((column) => ({ label: column.label, value: column.name }))
);
</script>
<style lang="sass">
.column-bgcolor-dark
td:last-child
/* bg color is important for td; just specify one */
background-color: #1d1d1d
.column-bgcolor
td:last-child
/* bg color is important for td; just specify one */
background-color: #ffffff
.sticky-header-right-column
tr th
position: sticky
/* higher than z-index for td below */
z-index: 2
/* this will be the loading indicator */
thead tr:last-child th
/* height of all previous header rows */
top: 48px
/* highest z-index */
z-index: 3
thead tr:last-child th
top: 0
z-index: 1
tr:last-child th:last-child
/* highest z-index */
z-index: 3
td:last-child
z-index: 1
td:last-child, th:last-child
position: sticky
right: 0
/* prevent scrolling behind sticky top row on focus */
tbody
/* height of all previous header rows */
scroll-margin-top: 48px
</style>

View File

@@ -4,8 +4,17 @@
<div class="col"></div>
<div class="col">
<q-card>
<q-card-actions align="center">
<q-btn
label="Getting Started"
color="info"
class="full-width"
href="https://docs.tacticalrmm.com/guide_gettingstarted/"
target="_blank"
/>
</q-card-actions>
<q-card-section class="row items-center">
<div class="text-h6">Initial Setup</div>
<div class="text-h5 text-weight-bold">Initial Setup</div>
</q-card-section>
<q-form @submit.prevent="finish">
<q-card-section>