This commit is contained in:
@@ -25,6 +25,8 @@ todo: ability to mass tag items from list CLIENT UI
|
|||||||
- ACROSS MULTIPLE TYPES?
|
- ACROSS MULTIPLE TYPES?
|
||||||
tricky, maybe only from main lists
|
tricky, maybe only from main lists
|
||||||
|
|
||||||
|
todo: make grid selection list sticky?
|
||||||
|
|
||||||
todo: notification
|
todo: notification
|
||||||
it's time, this is a big deal and it's tied to infrastructure shit so qualifies as an early thing to be done
|
it's time, this is a big deal and it's tied to infrastructure shit so qualifies as an early thing to be done
|
||||||
add CLIENT long polling notification route check
|
add CLIENT long polling notification route check
|
||||||
|
|||||||
@@ -1,12 +1,79 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-expansion-panel>
|
<v-expansion-panel v-if="available()">
|
||||||
<v-expansion-panel-header>MASS TAG</v-expansion-panel-header>
|
<v-expansion-panel-header>{{ $ay.t("Tags") }}</v-expansion-panel-header>
|
||||||
<v-expansion-panel-content>content here</v-expansion-panel-content>
|
<v-expansion-panel-content>
|
||||||
|
<v-radio-group v-model="action">
|
||||||
|
<v-radio label="Add" value="Add"></v-radio>
|
||||||
|
<v-radio label="Remove" value="Remove"></v-radio>
|
||||||
|
<v-radio label="Replace" value="Replace"></v-radio>
|
||||||
|
</v-radio-group>
|
||||||
|
<v-row>
|
||||||
|
<v-col cols="12">
|
||||||
|
<v-text-field
|
||||||
|
:value="tag"
|
||||||
|
:label="$ay.t('Find')"
|
||||||
|
required
|
||||||
|
@input="normalizeTag"
|
||||||
|
></v-text-field>
|
||||||
|
</v-col>
|
||||||
|
|
||||||
|
<v-col cols="12" v-if="action == 'Replace'">
|
||||||
|
<v-text-field
|
||||||
|
:value="replace"
|
||||||
|
:label="$ay.t('Replace')"
|
||||||
|
@input="normalizeReplace"
|
||||||
|
required
|
||||||
|
></v-text-field>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
<v-btn color="blue darken-1" text @click="doAction()">{{
|
||||||
|
$ay.t("OK")
|
||||||
|
}}</v-btn>
|
||||||
|
</v-expansion-panel-content>
|
||||||
</v-expansion-panel>
|
</v-expansion-panel>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
data: () => ({}),
|
data: () => ({
|
||||||
|
action: "Add",
|
||||||
|
tag: null,
|
||||||
|
replace: null
|
||||||
|
}),
|
||||||
|
methods: {
|
||||||
|
available() {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
doAction() {},
|
||||||
|
normalize(value) {
|
||||||
|
if (!value) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Must be lowercase per rules
|
||||||
|
//This may be naive when we get international cust omers but for now supporting utf-8 and it appears it's safe to do this with unicode
|
||||||
|
value = value.toLowerCase();
|
||||||
|
//No spaces in tags, replace with dashes
|
||||||
|
|
||||||
|
value = value.split(" ").join("-");
|
||||||
|
//Remove multiple dash sequences
|
||||||
|
value = value.replace(/-+/g, "-");
|
||||||
|
|
||||||
|
//Ensure doesn't start or end with a dash
|
||||||
|
value = value.replace(/^\-+-\-+$/g, "");
|
||||||
|
// inObj = inObj.Trim("-");
|
||||||
|
//No longer than 255 characters
|
||||||
|
// inObj = StringUtil.MaxLength(inObj, 255);
|
||||||
|
return value;
|
||||||
|
},
|
||||||
|
normalizeTag(value) {
|
||||||
|
value = this.normalize(value);
|
||||||
|
this.tag = value;
|
||||||
|
},
|
||||||
|
normalizeReplace(value) {
|
||||||
|
value = this.normalize(value);
|
||||||
|
this.replace = value;
|
||||||
|
}
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
ayaType: {
|
ayaType: {
|
||||||
type: Number,
|
type: Number,
|
||||||
|
|||||||
@@ -12,26 +12,11 @@
|
|||||||
>{{ $ay.t("SelectedItems") }}
|
>{{ $ay.t("SelectedItems") }}
|
||||||
{{ selectedItems.length }}</v-card-subtitle
|
{{ selectedItems.length }}</v-card-subtitle
|
||||||
>
|
>
|
||||||
<!-- <v-divider></v-divider> -->
|
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<v-expansion-panels focusable>
|
<v-expansion-panels focusable>
|
||||||
<v-expansion-panel v-for="(item, i) in 5" :key="i">
|
<ExtensionTags :ayaType="ayaType" :selectedItems="selectedItems" />
|
||||||
<v-expansion-panel-header
|
|
||||||
>Plugin / utility name here</v-expansion-panel-header
|
|
||||||
>
|
|
||||||
<v-expansion-panel-content>
|
|
||||||
Plugin utility component here, it will decide if it's visible or
|
|
||||||
not in a way that doesn't take up dom space (v-if I guess in an
|
|
||||||
expansion panel?) Lorem ipsum dolor sit amet, consectetur
|
|
||||||
adipiscing elit, sed do eiusmod tempor incididunt ut labore et
|
|
||||||
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
|
|
||||||
exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
||||||
consequat.
|
|
||||||
</v-expansion-panel-content>
|
|
||||||
</v-expansion-panel>
|
|
||||||
</v-expansion-panels>
|
</v-expansion-panels>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
<!-- <v-divider></v-divider> -->
|
|
||||||
<v-card-actions>
|
<v-card-actions>
|
||||||
<v-btn text @click="close()" color="primary">{{
|
<v-btn text @click="close()" color="primary">{{
|
||||||
$ay.t("Close")
|
$ay.t("Close")
|
||||||
@@ -41,7 +26,11 @@
|
|||||||
</v-dialog>
|
</v-dialog>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import ExtensionTags from "./extension-tags-control.vue";
|
||||||
export default {
|
export default {
|
||||||
|
components: {
|
||||||
|
ExtensionTags
|
||||||
|
},
|
||||||
data: () => ({
|
data: () => ({
|
||||||
isVisible: false,
|
isVisible: false,
|
||||||
resolve: null,
|
resolve: null,
|
||||||
@@ -58,17 +47,6 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
open() {
|
open() {
|
||||||
// //get report list from server
|
|
||||||
// //for now we'll fake it
|
|
||||||
// let fakeReportList = [];
|
|
||||||
// for (let i = 0; i < 25; i++) {
|
|
||||||
// fakeReportList.push({
|
|
||||||
// name: "Fake report with the number " + i,
|
|
||||||
// id: i
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// this.reportList = fakeReportList;
|
|
||||||
|
|
||||||
this.isVisible = true;
|
this.isVisible = true;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.resolve = resolve;
|
this.resolve = resolve;
|
||||||
|
|||||||
Reference in New Issue
Block a user