Removed extraneous container element

This commit is contained in:
2020-04-13 23:03:12 +00:00
parent 8dfd5e213a
commit b25af47cdd
11 changed files with 879 additions and 1114 deletions

View File

@@ -51,89 +51,6 @@ CURRENT TODOs
todo: Translate all ayatypes not translated
"data": [
{
"id": 0,
"name": "NoType"
},
{
"id": 1,
"name": "Général"
},
{
"id": 2,
"name": "Widget"
},
{
"id": 3,
"name": "Utilisateur"
},
{
"id": 4,
"name": "État du serveur"
},
{
"id": 5,
"name": "License"
},
{
"id": 6,
"name": "LogFile"
},
{
"id": 7,
"name": "PickListTemplate"
},
{
"id": 8,
"name": "DEPRECATED_REUSELATER_8"
},
{
"id": 9,
"name": "ServerJob"
},
{
"id": 10,
"name": "AyaNova7Import"
},
{
"id": 11,
"name": "TrialSeeder"
},
{
"id": 12,
"name": "Metrics"
},
{
"id": 13,
"name": "Traduction"
},
{
"id": 14,
"name": "UserOptions"
},
{
"id": 15,
"name": "DEPRECATED_REUSELATER_15"
},
{
"id": 16,
"name": "DEPRECATED_REUSELATER_16"
},
{
"id": 17,
"name": "FileAttachment"
},
{
"id": 18,
"name": "Affichage de la liste des données"
},
{
"id": 19,
"name": "FormCustom"
}
todo: do I have too many containers in my UI, like some unnecessary ones in the views where the parent already has a container?
todo: ADDITIONAL EDIT FORM BUTTONS FUNCTIONALITY STUBBED OUT OR MADE INTO TODO'S

View File

@@ -1,33 +1,32 @@
<template>
<v-container fluid>
<v-row v-if="formState.ready">
<v-col>
<v-form ref="form">
<!-- Prevent implicit submission of the form on enter key, this is not necessary on a form with a text area which is why I never noticed it with the other forms -->
<button
type="submit"
disabled
style="display: none"
aria-hidden="true"
></button>
<v-row>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12">
<v-select
v-model="templateId"
:items="selectLists.pickListTemplates"
item-text="name"
item-value="id"
:label="$ay.t('PickListTemplates')"
@input="templateSelected"
:data-cy="!!$ay.dev ? 'SelectTemplate' : false"
:disabled="formState.dirty"
>
</v-select>
</v-col>
<!-- <div>WORKING ARRAY: {{ workingArray }}</div> -->
<v-row v-if="formState.ready">
<v-col>
<v-form ref="form">
<!-- Prevent implicit submission of the form on enter key, this is not necessary on a form with a text area which is why I never noticed it with the other forms -->
<button
type="submit"
disabled
style="display: none"
aria-hidden="true"
></button>
<v-row>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12">
<v-select
v-model="templateId"
:items="selectLists.pickListTemplates"
item-text="name"
item-value="id"
:label="$ay.t('PickListTemplates')"
@input="templateSelected"
:data-cy="!!$ay.dev ? 'SelectTemplate' : false"
:disabled="formState.dirty"
>
</v-select>
</v-col>
<!-- <div>WORKING ARRAY: {{ workingArray }}</div> -->
<!-- <div>
<!-- <div>
TEMPLATE:
{{ obj }}
</div>
@@ -36,49 +35,48 @@
available fields:
{{ availableFields }}
</div> -->
<template v-for="(item, index) in workingArray">
<v-col :key="item.key" cols="12" sm="6" lg="4" xl="3" px-2>
<v-card>
<v-card-title>
{{ item.title }}
</v-card-title>
<v-card-subtitle>
{{ item.key }}
</v-card-subtitle>
<v-card-text>
<v-checkbox
v-model="item.include"
:readOnly="formState.readOnly"
:label="$ay.t('Include')"
:ref="item.key"
:disabled="item.required"
@change="includeChanged(item)"
:data-cy="!!$ay.dev ? item.key + 'Include' : false"
></v-checkbox>
<!-- RE-ORDER CONTROL -->
<div class="d-flex justify-space-between">
<v-btn large icon @click="move('start', index)"
><v-icon large>fa-step-backward</v-icon></v-btn
>
<v-btn large icon @click="move('left', index)"
><v-icon large>fa-backward</v-icon></v-btn
>
<v-btn large icon @click="move('right', index)"
><v-icon large>fa-forward</v-icon></v-btn
>
<v-btn large icon @click="move('end', index)"
><v-icon large>fa-step-forward</v-icon></v-btn
>
</div>
</v-card-text>
</v-card>
</v-col>
</template>
</v-row>
</v-form>
</v-col>
</v-row>
</v-container>
<template v-for="(item, index) in workingArray">
<v-col :key="item.key" cols="12" sm="6" lg="4" xl="3" px-2>
<v-card>
<v-card-title>
{{ item.title }}
</v-card-title>
<v-card-subtitle>
{{ item.key }}
</v-card-subtitle>
<v-card-text>
<v-checkbox
v-model="item.include"
:readOnly="formState.readOnly"
:label="$ay.t('Include')"
:ref="item.key"
:disabled="item.required"
@change="includeChanged(item)"
:data-cy="!!$ay.dev ? item.key + 'Include' : false"
></v-checkbox>
<!-- RE-ORDER CONTROL -->
<div class="d-flex justify-space-between">
<v-btn large icon @click="move('start', index)"
><v-icon large>fa-step-backward</v-icon></v-btn
>
<v-btn large icon @click="move('left', index)"
><v-icon large>fa-backward</v-icon></v-btn
>
<v-btn large icon @click="move('right', index)"
><v-icon large>fa-forward</v-icon></v-btn
>
<v-btn large icon @click="move('end', index)"
><v-icon large>fa-step-forward</v-icon></v-btn
>
</div>
</v-card-text>
</v-card>
</v-col>
</template>
</v-row>
</v-form>
</v-col>
</v-row>
</template>
<script>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@@ -1,58 +1,56 @@
<template>
<v-container fluid>
<v-row v-if="formState.ready">
<v-col>
<v-form ref="form">
<v-row>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<template v-for="item in obj">
<v-col :key="item.key" cols="12" sm="6" lg="4" xl="3" px-2>
<v-card :data-cy="!!$ay.dev ? item.key : false">
<v-card-title>
{{ item.title }}
</v-card-title>
<v-card-subtitle>
{{ item.key }}
</v-card-subtitle>
<v-card-text>
<v-checkbox
v-model="item.visible"
:readOnly="formState.readOnly"
:label="$ay.t('FormFieldVisible')"
:ref="item.key"
:disabled="item.stockRequired"
@change="visibleChanged(item)"
:data-cy="!!$ay.dev ? item.key + 'Visible' : false"
></v-checkbox>
<v-checkbox
v-model="item.required"
:readOnly="formState.readOnly"
:label="$ay.t('FormFieldEntryRequired')"
:disabled="item.stockRequired"
@change="requiredChanged(item)"
></v-checkbox>
<v-select
v-if="item.custom"
v-model="item.type"
:readOnly="formState.readOnly"
:items="selectLists.uiFieldDataTypes"
item-text="name"
item-value="id"
:label="$ay.t('UiFieldDataType')"
@input="dataTypeChanged(item)"
:data-cy="!!$ay.dev ? item.key + 'SelectType' : false"
></v-select>
<!-- <v-divider></v-divider>
<v-row v-if="formState.ready">
<v-col>
<v-form ref="form">
<v-row>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<template v-for="item in obj">
<v-col :key="item.key" cols="12" sm="6" lg="4" xl="3" px-2>
<v-card :data-cy="!!$ay.dev ? item.key : false">
<v-card-title>
{{ item.title }}
</v-card-title>
<v-card-subtitle>
{{ item.key }}
</v-card-subtitle>
<v-card-text>
<v-checkbox
v-model="item.visible"
:readOnly="formState.readOnly"
:label="$ay.t('FormFieldVisible')"
:ref="item.key"
:disabled="item.stockRequired"
@change="visibleChanged(item)"
:data-cy="!!$ay.dev ? item.key + 'Visible' : false"
></v-checkbox>
<v-checkbox
v-model="item.required"
:readOnly="formState.readOnly"
:label="$ay.t('FormFieldEntryRequired')"
:disabled="item.stockRequired"
@change="requiredChanged(item)"
></v-checkbox>
<v-select
v-if="item.custom"
v-model="item.type"
:readOnly="formState.readOnly"
:items="selectLists.uiFieldDataTypes"
item-text="name"
item-value="id"
:label="$ay.t('UiFieldDataType')"
@input="dataTypeChanged(item)"
:data-cy="!!$ay.dev ? item.key + 'SelectType' : false"
></v-select>
<!-- <v-divider></v-divider>
<div>{{ item }}</div> -->
</v-card-text>
</v-card>
</v-col>
</template>
</v-row>
</v-form>
</v-col>
</v-row>
</v-container>
</v-card-text>
</v-card>
</v-col>
</template>
</v-row>
</v-form>
</v-col>
</v-row>
</template>
<script>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@@ -1,421 +1,403 @@
<template>
<v-container fluid>
<!-- <div>
READY: {{ formState.ready }}
<br />
LOADING: {{ formState.loading }}
<br />
DIRTY: {{ formState.dirty }}
<br />
VALID: {{ formState.valid }}
<br />
READONLY: {{ formState.readOnly }}
<br />
</div>
-->
<v-row v-if="this.formState.ready">
<v-col>
<v-form ref="form">
<v-row>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12">
<v-row>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
v-model="obj.name"
:readonly="this.formState.readOnly"
clearable
@click:clear="fieldValueChanged('name')"
:counter="255"
:label="$ay.t('Name')"
:rules="[
form().max255(this, 'name'),
form().required(this, 'name')
]"
:error-messages="form().serverErrors(this, 'name')"
ref="name"
@input="fieldValueChanged('name')"
:data-cy="!!$ay.dev ? 'name' : false"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-checkbox
v-model="obj.public"
:readonly="this.formState.readOnly"
:label="$ay.t('AnyUser')"
ref="public"
@change="fieldValueChanged('public')"
></v-checkbox>
</v-col>
</v-row>
</v-col>
<template v-for="(item, index) in obj.editView">
<v-col :key="item.key" cols="12" sm="6" lg="4" xl="3" px-2>
<v-card :data-cy="!!$ay.dev ? 'columncard:' + item.key : false">
<v-card-title>
{{ item.title }}
</v-card-title>
<v-row v-if="this.formState.ready">
<v-col>
<v-form ref="form">
<v-row>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12">
<v-row>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
v-model="obj.name"
:readonly="this.formState.readOnly"
clearable
@click:clear="fieldValueChanged('name')"
:counter="255"
:label="$ay.t('Name')"
:rules="[
form().max255(this, 'name'),
form().required(this, 'name')
]"
:error-messages="form().serverErrors(this, 'name')"
ref="name"
@input="fieldValueChanged('name')"
:data-cy="!!$ay.dev ? 'name' : false"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-checkbox
v-model="obj.public"
:readonly="this.formState.readOnly"
:label="$ay.t('AnyUser')"
ref="public"
@change="fieldValueChanged('public')"
></v-checkbox>
</v-col>
</v-row>
</v-col>
<template v-for="(item, index) in obj.editView">
<v-col :key="item.key" cols="12" sm="6" lg="4" xl="3" px-2>
<v-card :data-cy="!!$ay.dev ? 'columncard:' + item.key : false">
<v-card-title>
{{ item.title }}
</v-card-title>
<v-card-text>
<!-- INCLUDE CONTROL -->
<v-switch
v-if="!item.rid"
v-model="item.include"
:label="$ay.t('Include')"
:ref="item.key"
:disabled="
item.sort != null || item.filter.items.length > 0
"
@change="includeChanged(item)"
></v-switch>
<div v-if="item.rid" class="v-label mb-8 mt-6">
{{ $ay.t("Include") }}
</div>
<!-- RE-ORDER CONTROL -->
<div class="d-flex justify-space-between">
<v-btn large icon @click="move('start', index)"
><v-icon
large
:data-cy="!!$ay.dev ? 'movestart' : false"
>fa-step-backward</v-icon
<v-card-text>
<!-- INCLUDE CONTROL -->
<v-switch
v-if="!item.rid"
v-model="item.include"
:label="$ay.t('Include')"
:ref="item.key"
:disabled="
item.sort != null || item.filter.items.length > 0
"
@change="includeChanged(item)"
></v-switch>
<div v-if="item.rid" class="v-label mb-8 mt-6">
{{ $ay.t("Include") }}
</div>
<!-- RE-ORDER CONTROL -->
<div class="d-flex justify-space-between">
<v-btn large icon @click="move('start', index)"
><v-icon large :data-cy="!!$ay.dev ? 'movestart' : false"
>fa-step-backward</v-icon
></v-btn
>
<v-btn large icon @click="move('left', index)"
><v-icon large>fa-backward</v-icon></v-btn
>
<v-btn large icon @click="move('right', index)"
><v-icon large>fa-forward</v-icon></v-btn
>
<v-btn large icon @click="move('end', index)"
><v-icon large>fa-step-forward</v-icon></v-btn
>
</div>
<!-- SORT CONTROL -->
<template v-if="item.isSortable">
<div @click="toggleSort(item)" class="pt-6">
<v-btn x-large v-if="item.sort == null" icon>
<v-icon x-large>fa-sort</v-icon></v-btn
>
<v-btn
v-if="item.sort != null && item.sort == '-'"
icon
x-large
><v-icon color="primary" x-large
>fa-sort-amount-down</v-icon
></v-btn
>
<v-btn large icon @click="move('left', index)"
><v-icon large>fa-backward</v-icon></v-btn
<v-btn
v-if="item.sort != null && item.sort == '+'"
icon
x-large
><v-icon color="primary" x-large
>fa-sort-amount-up</v-icon
></v-btn
>
<v-btn large icon @click="move('right', index)"
><v-icon large>fa-forward</v-icon></v-btn
>
<v-btn large icon @click="move('end', index)"
><v-icon large>fa-step-forward</v-icon></v-btn
<label class="v-label theme--light"
>&nbsp;{{ $ay.t("Sort") }}</label
>
</div>
<!-- SORT CONTROL -->
<template v-if="item.isSortable">
<div @click="toggleSort(item)" class="pt-6">
<v-btn x-large v-if="item.sort == null" icon>
<v-icon x-large>fa-sort</v-icon></v-btn
>
<v-btn
v-if="item.sort != null && item.sort == '-'"
icon
x-large
><v-icon color="primary" x-large
>fa-sort-amount-down</v-icon
></v-btn
>
<v-btn
v-if="item.sort != null && item.sort == '+'"
icon
x-large
><v-icon color="primary" x-large
>fa-sort-amount-up</v-icon
></v-btn
>
<label class="v-label theme--light"
>&nbsp;{{ $ay.t("Sort") }}</label
>
</div>
</template>
</template>
<!-- FILTER CONTROL -->
<template v-if="item.isFilterable">
<div class="pt-6">
<!-- ******** BUILDER FOR EACH TYPE Tag, decimal,currency, bool, integer, string, datetime ******** -->
<!-- DATETIME BUILDER -->
<div v-if="item.uiFieldDataType === 1">
<!-- FILTER CONTROL -->
<template v-if="item.isFilterable">
<div class="pt-6">
<!-- ******** BUILDER FOR EACH TYPE Tag, decimal,currency, bool, integer, string, datetime ******** -->
<!-- DATETIME BUILDER -->
<div v-if="item.uiFieldDataType === 1">
<v-select
v-model="item.tempFilterToken"
:items="selectLists.dateFilterTokens"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<div v-if="item.tempFilterToken == '*select*'">
<v-select
v-model="item.tempFilterToken"
:items="selectLists.dateFilterTokens"
v-model="item.tempFilterOperator"
:items="selectLists.dateFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<div v-if="item.tempFilterToken == '*select*'">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.dateFilterOperators"
item-text="name"
item-value="id"
></v-select>
<gz-date-time-picker
v-if="
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
></gz-date-time-picker>
</div>
<v-btn
large
block
v-if="item.tempFilterToken != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
<gz-date-time-picker
v-if="
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
></gz-date-time-picker>
</div>
<v-btn
large
block
v-if="item.tempFilterToken != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
<!-- STRING(text-4, emailaddress-11, http-12) BUILDER -->
<div
<!-- STRING(text-4, emailaddress-11, http-12) BUILDER -->
<div
v-if="
item.uiFieldDataType === 4 ||
item.uiFieldDataType === 11 ||
item.uiFieldDataType === 12
"
>
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.stringFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<v-text-field
v-if="
item.uiFieldDataType === 4 ||
item.uiFieldDataType === 11 ||
item.uiFieldDataType === 12
item.tempFilterOperator != null &&
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
clearable
></v-text-field>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.stringFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<v-text-field
v-if="
item.tempFilterOperator != null &&
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
clearable
></v-text-field>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
<!-- INTEGER BUILDER -->
<div v-if="item.uiFieldDataType === 5">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.integerFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<v-text-field
v-if="
item.tempFilterOperator != null &&
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
clearable
type="number"
></v-text-field>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
<!-- BOOL BUILDER -->
<div v-if="item.uiFieldDataType === 6">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.boolFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<v-radio-group
v-model="item.tempFilterValue"
v-if="
item.tempFilterOperator != null &&
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
row
>
<v-radio
:label="$ay.t('False')"
:value="false"
></v-radio>
<v-radio
:label="$ay.t('True')"
:value="true"
></v-radio>
</v-radio-group>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
<!-- DECIMAL BUILDER -->
<div v-if="item.uiFieldDataType === 7">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.decimalFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<gz-decimal
v-if="
item.tempFilterOperator != null &&
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
clearable
></gz-decimal>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
<!-- CURRENCY BUILDER -->
<div v-if="item.uiFieldDataType === 8">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.decimalFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<gz-currency
v-if="
item.tempFilterOperator != null &&
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
clearable
></gz-currency>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
<!-- TAG BUILDER -->
<div v-if="item.uiFieldDataType === 9">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.tagFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<gz-tag-picker
v-if="item.tempFilterOperator != null"
v-model="item.tempFilterValue"
></gz-tag-picker>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
<!-- ENUM BUILDER -->
<div v-if="item.uiFieldDataType === 10">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.enumFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<v-select
v-if="
item.tempFilterOperator != null &&
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
:items="enumSelectionList(item.enumType)"
item-text="name"
item-value="id"
></v-select>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
</div>
<div class="pt-6">
<!-- FILTER LIST -->
<template v-if="item.filter.items.length > 0">
<v-list elevation="2">
<v-subheader v-if="item.filter.items.length > 1">
<!-- AND / OR FILTER CONDITIONS -->
<v-radio-group v-model="item.filter.any" row>
<v-radio
:label="$ay.t('GridFilterDialogAndRadioText')"
:value="false"
></v-radio>
<v-radio
:label="$ay.t('GridFilterDialogOrRadioText')"
:value="true"
></v-radio> </v-radio-group
></v-subheader>
<v-list-item
v-for="(filterItem, index) in item.filter.items"
:key="index"
>
<v-list-item-content>
<v-list-item-title v-text="filterItem.display">
</v-list-item-title>
</v-list-item-content>
<v-list-item-action>
<v-btn
icon
@click="removeFilterCondition(item, index)"
>
<v-icon>fa-trash-alt</v-icon>
</v-btn>
</v-list-item-action>
</v-list-item>
</v-list>
</template>
<!-- <v-divider></v-divider>
<!-- INTEGER BUILDER -->
<div v-if="item.uiFieldDataType === 5">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.integerFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<v-text-field
v-if="
item.tempFilterOperator != null &&
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
clearable
type="number"
></v-text-field>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
<!-- BOOL BUILDER -->
<div v-if="item.uiFieldDataType === 6">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.boolFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<v-radio-group
v-model="item.tempFilterValue"
v-if="
item.tempFilterOperator != null &&
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
row
>
<v-radio
:label="$ay.t('False')"
:value="false"
></v-radio>
<v-radio
:label="$ay.t('True')"
:value="true"
></v-radio>
</v-radio-group>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
<!-- DECIMAL BUILDER -->
<div v-if="item.uiFieldDataType === 7">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.decimalFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<gz-decimal
v-if="
item.tempFilterOperator != null &&
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
clearable
></gz-decimal>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
<!-- CURRENCY BUILDER -->
<div v-if="item.uiFieldDataType === 8">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.decimalFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<gz-currency
v-if="
item.tempFilterOperator != null &&
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
clearable
></gz-currency>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
<!-- TAG BUILDER -->
<div v-if="item.uiFieldDataType === 9">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.tagFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<gz-tag-picker
v-if="item.tempFilterOperator != null"
v-model="item.tempFilterValue"
></gz-tag-picker>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
<!-- ENUM BUILDER -->
<div v-if="item.uiFieldDataType === 10">
<v-select
v-model="item.tempFilterOperator"
:items="selectLists.enumFilterOperators"
item-text="name"
item-value="id"
:label="$ay.t('Filter')"
prepend-icon="fa-filter"
></v-select>
<v-select
v-if="
item.tempFilterOperator != null &&
item.tempFilterOperator != '*NOVALUE*' &&
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
:items="enumSelectionList(item.enumType)"
item-text="name"
item-value="id"
></v-select>
<v-btn
large
block
v-if="item.tempFilterOperator != null"
@click="addFilterCondition(item)"
><v-icon large>fa-plus</v-icon></v-btn
>
</div>
</div>
<div class="pt-6">
<!-- FILTER LIST -->
<template v-if="item.filter.items.length > 0">
<v-list elevation="2">
<v-subheader v-if="item.filter.items.length > 1">
<!-- AND / OR FILTER CONDITIONS -->
<v-radio-group v-model="item.filter.any" row>
<v-radio
:label="$ay.t('GridFilterDialogAndRadioText')"
:value="false"
></v-radio>
<v-radio
:label="$ay.t('GridFilterDialogOrRadioText')"
:value="true"
></v-radio> </v-radio-group
></v-subheader>
<v-list-item
v-for="(filterItem, index) in item.filter.items"
:key="index"
>
<v-list-item-content>
<v-list-item-title v-text="filterItem.display">
</v-list-item-title>
</v-list-item-content>
<v-list-item-action>
<v-btn
icon
@click="removeFilterCondition(item, index)"
>
<v-icon>fa-trash-alt</v-icon>
</v-btn>
</v-list-item-action>
</v-list-item>
</v-list>
</template>
<!-- <v-divider></v-divider>
{{ item }} -->
</div>
</template>
</v-card-text>
</v-card>
</v-col>
</template>
</v-row>
</v-form>
</v-col>
</v-row>
</v-container>
</div>
</template>
</v-card-text>
</v-card>
</v-col>
</template>
</v-row>
</v-form>
</v-col>
</v-row>
</template>
<script>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@@ -1,87 +1,85 @@
<template>
<v-container fluid>
<v-row v-if="formState.ready">
<v-col>
<v-form ref="form">
<v-row>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12">
<v-text-field
name="username"
id="username"
v-model="obj.loginName"
:readonly="formState.readOnly"
prepend-icon="fa-user"
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
v-focus
:label="$ay.t('UserLogin')"
:rules="[form().required(this, 'loginName')]"
:error-messages="form().serverErrors(this, 'loginName')"
ref="loginName"
@input="fieldValueChanged('loginName')"
></v-text-field>
</v-col>
<v-row v-if="formState.ready">
<v-col>
<v-form ref="form">
<v-row>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12">
<v-text-field
name="username"
id="username"
v-model="obj.loginName"
:readonly="formState.readOnly"
prepend-icon="fa-user"
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
v-focus
:label="$ay.t('UserLogin')"
:rules="[form().required(this, 'loginName')]"
:error-messages="form().serverErrors(this, 'loginName')"
ref="loginName"
@input="fieldValueChanged('loginName')"
></v-text-field>
</v-col>
<v-col cols="12">
<v-text-field
name="password"
id="password"
v-model="obj.oldPassword"
:readonly="formState.readOnly"
:append-outer-icon="reveal ? 'fa-eye' : 'fa-eye-slash'"
prepend-icon="fa-key"
:label="$ay.t('OldPassword')"
:type="reveal ? 'text' : 'password'"
:rules="[form().required(this, 'oldPassword')]"
:error-messages="form().serverErrors(this, 'oldPassword')"
ref="oldPassword"
@input="fieldValueChanged('oldPassword')"
@click:append-outer="reveal = !reveal"
></v-text-field>
</v-col>
<v-col cols="12">
<v-text-field
name="password"
id="password"
v-model="obj.oldPassword"
:readonly="formState.readOnly"
:append-outer-icon="reveal ? 'fa-eye' : 'fa-eye-slash'"
prepend-icon="fa-key"
:label="$ay.t('OldPassword')"
:type="reveal ? 'text' : 'password'"
:rules="[form().required(this, 'oldPassword')]"
:error-messages="form().serverErrors(this, 'oldPassword')"
ref="oldPassword"
@input="fieldValueChanged('oldPassword')"
@click:append-outer="reveal = !reveal"
></v-text-field>
</v-col>
<v-col cols="12">
<v-text-field
v-model="obj.newPassword"
:readonly="formState.readOnly"
:append-outer-icon="reveal ? 'fa-eye' : 'fa-eye-slash'"
prepend-icon="fa-key"
:label="$ay.t('NewPassword')"
:type="reveal ? 'text' : 'password'"
:rules="[form().required(this, 'newPassword')]"
:error-messages="form().serverErrors(this, 'newPassword')"
ref="newPassword"
@input="fieldValueChanged('newPassword')"
@click:append-outer="reveal = !reveal"
></v-text-field>
</v-col>
<v-col cols="12">
<v-text-field
v-model="obj.newPassword"
:readonly="formState.readOnly"
:append-outer-icon="reveal ? 'fa-eye' : 'fa-eye-slash'"
prepend-icon="fa-key"
:label="$ay.t('NewPassword')"
:type="reveal ? 'text' : 'password'"
:rules="[form().required(this, 'newPassword')]"
:error-messages="form().serverErrors(this, 'newPassword')"
ref="newPassword"
@input="fieldValueChanged('newPassword')"
@click:append-outer="reveal = !reveal"
></v-text-field>
</v-col>
<v-col cols="12">
<v-text-field
v-model="obj.confirmPassword"
:readonly="formState.readOnly"
:append-outer-icon="reveal ? 'fa-eye' : 'fa-eye-slash'"
prepend-icon="fa-key"
:label="$ay.t('ConfirmPassword')"
:type="reveal ? 'text' : 'password'"
:rules="[
form().required(this, 'confirmPassword'),
form().confirmMatch(this, 'newPassword', 'confirmPassword')
]"
:error-messages="form().serverErrors(this, 'confirmPassword')"
ref="confirmPassword"
@input="fieldValueChanged('confirmPassword')"
@click:append-outer="reveal = !reveal"
></v-text-field>
</v-col>
</v-row>
</v-form>
</v-col>
</v-row>
</v-container>
<v-col cols="12">
<v-text-field
v-model="obj.confirmPassword"
:readonly="formState.readOnly"
:append-outer-icon="reveal ? 'fa-eye' : 'fa-eye-slash'"
prepend-icon="fa-key"
:label="$ay.t('ConfirmPassword')"
:type="reveal ? 'text' : 'password'"
:rules="[
form().required(this, 'confirmPassword'),
form().confirmMatch(this, 'newPassword', 'confirmPassword')
]"
:error-messages="form().serverErrors(this, 'confirmPassword')"
ref="confirmPassword"
@input="fieldValueChanged('confirmPassword')"
@click:append-outer="reveal = !reveal"
></v-text-field>
</v-col>
</v-row>
</v-form>
</v-col>
</v-row>
</template>
<script>

View File

@@ -1,95 +1,85 @@
<template>
<v-container fluid>
<v-row v-if="formState.ready">
<v-col>
<v-form ref="form">
<v-row justify="start">
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12" sm="4" lg="4" xl="3">
<v-text-field
v-model="searchPhrase"
clearable
:label="$ay.t('Search')"
ref="searchPhrase"
@change="getDataFromApi()"
hint="text, *xt, te*"
:data-cy="!!$ay.dev ? 'phrase' : false"
></v-text-field>
</v-col>
<v-col cols="12" sm="4" lg="4" xl="3">
<v-select
v-model="searchObjectType"
:items="selectLists.objectTypes"
item-text="name"
item-value="id"
:label="$ay.t('Object')"
></v-select>
</v-col>
<v-col cols="12" sm="4" lg="4" xl="3">
<v-btn
color="primary"
v-on:click="getDataFromApi()"
value="SEARCH"
<v-row v-if="formState.ready">
<v-col>
<v-form ref="form">
<v-row justify="start">
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12" sm="4" lg="4" xl="3">
<v-text-field
v-model="searchPhrase"
clearable
:label="$ay.t('Search')"
ref="searchPhrase"
@change="getDataFromApi()"
hint="text, *xt, te*"
:data-cy="!!$ay.dev ? 'phrase' : false"
></v-text-field>
</v-col>
<v-col cols="12" sm="4" lg="4" xl="3">
<v-select
v-model="searchObjectType"
:items="selectLists.objectTypes"
item-text="name"
item-value="id"
:label="$ay.t('Object')"
></v-select>
</v-col>
<v-col cols="12" sm="4" lg="4" xl="3">
<v-btn color="primary" v-on:click="getDataFromApi()" value="SEARCH">
<v-icon :data-cy="!!$ay.dev ? 'btnsearch' : false"
>fa-search</v-icon
>
<v-icon :data-cy="!!$ay.dev ? 'btnsearch' : false"
>fa-search</v-icon
>
</v-btn>
</v-col>
</v-btn>
</v-col>
<v-col cols="12">
<p v-if="!items.length">{{ $ay.t("NoResults") }}</p>
<v-card v-if="items.length" max-width="900">
<v-list>
<v-subheader v-if="maxResultsReturned">
<span>({{ $ay.t("TooManyResults") }})</span>
</v-subheader>
<v-col cols="12">
<p v-if="!items.length">{{ $ay.t("NoResults") }}</p>
<v-card v-if="items.length" max-width="900">
<v-list>
<v-subheader v-if="maxResultsReturned">
<span>({{ $ay.t("TooManyResults") }})</span>
</v-subheader>
<template v-for="item in items">
<!-- KEY MUST BE UNIQUE INSIDE v-for OR LIST ITEM GOES SNAKEY -->
<v-subheader :key="'s' + item.index" v-if="item.subheader"
><v-icon large class="mr-2">{{ item.icon }}</v-icon
><span class="title">{{
item.subheader
}}</span></v-subheader
<template v-for="item in items">
<!-- KEY MUST BE UNIQUE INSIDE v-for OR LIST ITEM GOES SNAKEY -->
<v-subheader :key="'s' + item.index" v-if="item.subheader"
><v-icon large class="mr-2">{{ item.icon }}</v-icon
><span class="title">{{
item.subheader
}}</span></v-subheader
>
<v-list-item link :key="item.index">
<v-list-item-content
@click="openItem(item)"
:data-cy="!!$ay.dev ? 'btnopenitem' + item.index : false"
>
<v-list-item link :key="item.index">
<v-list-item-content
@click="openItem(item)"
:data-cy="
!!$ay.dev ? 'btnopenitem' + item.index : false
"
>
<v-list-item-title
v-text="item.name"
></v-list-item-title>
<v-list-item-subtitle
v-html="item.info"
></v-list-item-subtitle>
</v-list-item-content>
<v-list-item-action>
<v-btn icon @click="getExcerpt(item)">
<v-icon
color="grey lighten-1"
large
:data-cy="
!!$ay.dev ? 'btnexcerpt' + item.index : false
"
>fa-info-circle</v-icon
>
</v-btn>
</v-list-item-action>
</v-list-item>
</template>
</v-list>
</v-card>
</v-col>
</v-row>
</v-form>
</v-col>
</v-row>
</v-container>
<v-list-item-title v-text="item.name"></v-list-item-title>
<v-list-item-subtitle
v-html="item.info"
></v-list-item-subtitle>
</v-list-item-content>
<v-list-item-action>
<v-btn icon @click="getExcerpt(item)">
<v-icon
color="grey lighten-1"
large
:data-cy="
!!$ay.dev ? 'btnexcerpt' + item.index : false
"
>fa-info-circle</v-icon
>
</v-btn>
</v-list-item-action>
</v-list-item>
</template>
</v-list>
</v-card>
</v-col>
</v-row>
</v-form>
</v-col>
</v-row>
</template>
<script>

View File

@@ -1,109 +1,107 @@
<template>
<v-container fluid>
<v-row v-if="formState.ready">
<v-col>
<v-form ref="form">
<v-row>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-select
v-model="obj.translationId"
:items="selectLists.translations"
item-text="name"
item-value="id"
:readonly="formState.readOnly"
:label="$ay.t('Translation')"
ref="translationId"
:error-messages="form().serverErrors(this, 'translationId')"
@input="fieldValueChanged('translationId')"
></v-select>
</v-col>
<v-row v-if="formState.ready">
<v-col>
<v-form ref="form">
<v-row>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-select
v-model="obj.translationId"
:items="selectLists.translations"
item-text="name"
item-value="id"
:readonly="formState.readOnly"
:label="$ay.t('Translation')"
ref="translationId"
:error-messages="form().serverErrors(this, 'translationId')"
@input="fieldValueChanged('translationId')"
></v-select>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
v-model="obj.emailAddress"
:readonly="formState.readOnly"
clearable
@click:clear="fieldValueChanged('emailAddress')"
:label="$ay.t('UserEmailAddress')"
:error-messages="form().serverErrors(this, 'emailAddress')"
ref="emailAddress"
@input="fieldValueChanged('emailAddress')"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
v-model="obj.emailAddress"
:readonly="formState.readOnly"
clearable
@click:clear="fieldValueChanged('emailAddress')"
:label="$ay.t('UserEmailAddress')"
:error-messages="form().serverErrors(this, 'emailAddress')"
ref="emailAddress"
@input="fieldValueChanged('emailAddress')"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
v-model="obj.currencyName"
hint="e.g. USD, EUR, GBP, AUD, CAD etc"
:readonly="formState.readOnly"
clearable
@click:clear="fieldValueChanged('currencyName')"
:label="$ay.t('CurrencyCode')"
:rules="[form().required(this, 'currencyName')]"
:error-messages="form().serverErrors(this, 'currencyName')"
ref="currencyName"
@input="fieldValueChanged('currencyName')"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-checkbox
v-model="obj.hour12"
:readonly="formState.readOnly"
:label="$ay.t('Hour12')"
ref="hour12"
:error-messages="form().serverErrors(this, 'hour12')"
@change="fieldValueChanged('hour12')"
></v-checkbox>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<!-- https://vuetifyjs.com/en/components/color-pickers -->
<span class="v-label v-label--active theme--light">
{{ $ay.t("UserColor") }}
</span>
<v-color-picker
v-model="obj.uiColor"
:readonly="formState.readOnly"
hide-mode-switch
mode="hexa"
:error-messages="form().serverErrors(this, 'uiColor')"
ref="uiColor"
@input="fieldValueChanged('uiColor')"
></v-color-picker>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
v-model="obj.currencyName"
hint="e.g. USD, EUR, GBP, AUD, CAD etc"
:readonly="formState.readOnly"
clearable
@click:clear="fieldValueChanged('currencyName')"
:label="$ay.t('CurrencyCode')"
:rules="[form().required(this, 'currencyName')]"
:error-messages="form().serverErrors(this, 'currencyName')"
ref="currencyName"
@input="fieldValueChanged('currencyName')"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-checkbox
v-model="obj.hour12"
:readonly="formState.readOnly"
:label="$ay.t('Hour12')"
ref="hour12"
:error-messages="form().serverErrors(this, 'hour12')"
@change="fieldValueChanged('hour12')"
></v-checkbox>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<!-- https://vuetifyjs.com/en/components/color-pickers -->
<span class="v-label v-label--active theme--light">
{{ $ay.t("UserColor") }}
</span>
<v-color-picker
v-model="obj.uiColor"
:readonly="formState.readOnly"
hide-mode-switch
mode="hexa"
:error-messages="form().serverErrors(this, 'uiColor')"
ref="uiColor"
@input="fieldValueChanged('uiColor')"
></v-color-picker>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
v-model="obj.languageOverride"
:placeholder="locale().getBrowserFirstLanguage()"
:readonly="formState.readOnly"
clearable
@click:clear="fieldValueChanged('languageOverride')"
:label="$ay.t('LanguageCode')"
:error-messages="form().serverErrors(this, 'languageOverride')"
ref="languageOverride"
@input="fieldValueChanged('languageOverride')"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
v-model="obj.languageOverride"
:placeholder="locale().getBrowserFirstLanguage()"
:readonly="formState.readOnly"
clearable
@click:clear="fieldValueChanged('languageOverride')"
:label="$ay.t('LanguageCode')"
:error-messages="form().serverErrors(this, 'languageOverride')"
ref="languageOverride"
@input="fieldValueChanged('languageOverride')"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
v-model="obj.timeZoneOverride"
:placeholder="locale().getBrowserTimeZoneName()"
:readonly="formState.readOnly"
clearable
@click:clear="fieldValueChanged('timeZoneOverride')"
:label="$ay.t('TimeZone')"
:error-messages="form().serverErrors(this, 'timeZoneOverride')"
ref="timeZoneOverride"
@input="fieldValueChanged('timeZoneOverride')"
></v-text-field>
</v-col>
</v-row>
</v-form>
</v-col>
</v-row>
</v-container>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
v-model="obj.timeZoneOverride"
:placeholder="locale().getBrowserTimeZoneName()"
:readonly="formState.readOnly"
clearable
@click:clear="fieldValueChanged('timeZoneOverride')"
:label="$ay.t('TimeZone')"
:error-messages="form().serverErrors(this, 'timeZoneOverride')"
ref="timeZoneOverride"
@input="fieldValueChanged('timeZoneOverride')"
></v-text-field>
</v-col>
</v-row>
</v-form>
</v-col>
</v-row>
</template>
<script>

View File

@@ -1,88 +1,86 @@
<template>
<v-container fluid>
<v-row align="center" justify="center" class="mx-auto mt-sm-12 mb-8">
<v-col cols="12" offset-md="4">
<form>
<v-row>
<v-col cols="12" class="hidden-md-and-up">
<v-img
:src="require('../assets/logo.svg')"
contain
height="64"
></v-img>
</v-col>
<v-col cols="12" md="7" class="hidden-sm-and-down">
<v-img
:src="require('../assets/logo.svg')"
contain
height="128"
></v-img>
</v-col>
<v-col cols="12" md="7" v-if="formState.errorBoxMessage">
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
</v-col>
<v-col cols="12" md="7" v-if="trialMode">
<v-select
v-model="selectedTrialUserId"
:items="selectLists.trialUsers"
item-text="name"
item-value="l"
label="Trial mode example users"
prepend-icon="fa-question-circle"
@click:prepend="trialHelpClick"
@input="trialUserSelected"
return-object
:data-cy="!!$ay.dev ? 'selecttrialuser' : false"
>
</v-select>
</v-col>
<v-col cols="12" md="7">
<v-text-field
name="username"
id="username"
v-model="input.username"
prepend-icon="fa-user"
label="User"
autofocus
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
:error="errorBadCreds"
v-focus
v-on:keyup.enter="onEnterUserName"
></v-text-field>
</v-col>
<v-col cols="12" md="7">
<v-text-field
name="password"
id="password"
v-model="input.password"
:append-outer-icon="reveal ? 'fa-eye' : 'fa-eye-slash'"
prepend-icon="fa-key"
label="Password"
:type="reveal ? 'text' : 'password'"
:error="errorBadCreds"
v-on:keyup.enter="login"
@click:append-outer="reveal = !reveal"
></v-text-field>
</v-col>
<v-col cols="12" md="7" mt-1>
<v-btn color="primary" v-on:click="login()" value="LOGIN">
<v-icon>fa-sign-in-alt</v-icon>
</v-btn>
</v-col>
<v-row align="center" justify="center" class="mx-auto mt-sm-12 mb-8">
<v-col cols="12" offset-md="4">
<form>
<v-row>
<v-col cols="12" class="hidden-md-and-up">
<v-img
:src="require('../assets/logo.svg')"
contain
height="64"
></v-img>
</v-col>
<v-col cols="12" md="7" class="hidden-sm-and-down">
<v-img
:src="require('../assets/logo.svg')"
contain
height="128"
></v-img>
</v-col>
<v-col cols="12" md="7" v-if="formState.errorBoxMessage">
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
</v-col>
<v-col cols="12" md="7" v-if="trialMode">
<v-select
v-model="selectedTrialUserId"
:items="selectLists.trialUsers"
item-text="name"
item-value="l"
label="Trial mode example users"
prepend-icon="fa-question-circle"
@click:prepend="trialHelpClick"
@input="trialUserSelected"
return-object
:data-cy="!!$ay.dev ? 'selecttrialuser' : false"
>
</v-select>
</v-col>
<v-col cols="12" md="7">
<v-text-field
name="username"
id="username"
v-model="input.username"
prepend-icon="fa-user"
label="User"
autofocus
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
:error="errorBadCreds"
v-focus
v-on:keyup.enter="onEnterUserName"
></v-text-field>
</v-col>
<v-col cols="12" md="7">
<v-text-field
name="password"
id="password"
v-model="input.password"
:append-outer-icon="reveal ? 'fa-eye' : 'fa-eye-slash'"
prepend-icon="fa-key"
label="Password"
:type="reveal ? 'text' : 'password'"
:error="errorBadCreds"
v-on:keyup.enter="login"
@click:append-outer="reveal = !reveal"
></v-text-field>
</v-col>
<v-col cols="12" md="7" mt-1>
<v-btn color="primary" v-on:click="login()" value="LOGIN">
<v-icon>fa-sign-in-alt</v-icon>
</v-btn>
</v-col>
<template v-if="$ay.dev">
<v-col cols="12">
<span class="subtitle-2 secondary--text">DEVELOPMENT MODE</span>
</v-col>
</template>
</v-row>
</form>
</v-col>
</v-row>
</v-container>
<template v-if="$ay.dev">
<v-col cols="12">
<span class="subtitle-2 secondary--text">DEVELOPMENT MODE</span>
</v-col>
</template>
</v-row>
</form>
</v-col>
</v-row>
</template>
<script>

View File

@@ -1,16 +1,14 @@
<template>
<v-container fluid>
<v-row justify-center>
<v-col cols="12">
<div class="text-center">
<v-icon color="red" size="100">fa-dragon</v-icon>
<div class="headline mt-8">
{{ msg }}
</div>
<v-row justify-center>
<v-col cols="12">
<div class="text-center">
<v-icon color="red" size="100">fa-dragon</v-icon>
<div class="headline mt-8">
{{ msg }}
</div>
</v-col>
</v-row>
</v-container>
</div>
</v-col>
</v-row>
</template>
<script>

View File

@@ -1,44 +1,39 @@
<template>
<v-container fluid>
<v-row v-if="formState.ready">
<v-col>
<v-form ref="form">
<v-row>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-radio-group
v-model="obj.serverState"
:mandatory="true"
:readonly="formState.readOnly"
>
<v-radio
:label="$ay.t('ServerStateOpen')"
value="Open"
></v-radio>
<v-radio
:label="$ay.t('ServerStateOps')"
value="OpsOnly"
></v-radio>
</v-radio-group>
</v-col>
<v-col cols="12">
<v-textarea
v-model="obj.reason"
:readonly="formState.readOnly"
:label="$ay.t('ServerStateReason')"
:error-messages="form().serverErrors(this, 'reason')"
ref="reason"
:data-cy="!!$ay.dev ? 'reason' : false"
@input="fieldValueChanged('reason')"
auto-grow
clearable
></v-textarea>
</v-col>
</v-row>
</v-form>
</v-col>
</v-row>
</v-container>
<v-row v-if="formState.ready">
<v-col>
<v-form ref="form">
<v-row>
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-radio-group
v-model="obj.serverState"
:mandatory="true"
:readonly="formState.readOnly"
>
<v-radio :label="$ay.t('ServerStateOpen')" value="Open"></v-radio>
<v-radio
:label="$ay.t('ServerStateOps')"
value="OpsOnly"
></v-radio>
</v-radio-group>
</v-col>
<v-col cols="12">
<v-textarea
v-model="obj.reason"
:readonly="formState.readOnly"
:label="$ay.t('ServerStateReason')"
:error-messages="form().serverErrors(this, 'reason')"
ref="reason"
:data-cy="!!$ay.dev ? 'reason' : false"
@input="fieldValueChanged('reason')"
auto-grow
clearable
></v-textarea>
</v-col>
</v-row>
</v-form>
</v-col>
</v-row>
</template>
<script>

View File

@@ -1,118 +1,11 @@
<template>
<UnderConstruction />
<!-- <v-container fluid> -->
<!-- <v-data-table
:headers="headers"
:items="desserts"
:items-per-page="5"
class="elevation-1"
></v-data-table> -->
<!-- </v-container> -->
</template>
<script>
import UnderConstruction from "../components/underconstruction.vue";
export default {
// data() {
// return {
// headers: [
// {
// text: "Dessert (100g serving)",
// align: "left",
// sortable: false,
// value: "name"
// },
// { text: "Calories", value: "calories" },
// { text: "Fat (g)", value: "fat" },
// { text: "Carbs (g)", value: "carbs" },
// { text: "Protein (g)", value: "protein" },
// { text: "Iron (%)", value: "iron" }
// ],
// desserts: [
// {
// name: "Frozen Yogurt",
// calories: 159,
// fat: 6.0,
// carbs: 24,
// protein: 4.0,
// iron: "1%"
// },
// {
// name: "Ice cream sandwich",
// calories: 237,
// fat: 9.0,
// carbs: 37,
// protein: 4.3,
// iron: "1%"
// },
// {
// name: "Eclair",
// calories: 262,
// fat: 16.0,
// carbs: 23,
// protein: 6.0,
// iron: "7%"
// },
// {
// name: "Cupcake",
// calories: 305,
// fat: 3.7,
// carbs: 67,
// protein: 4.3,
// iron: "8%"
// },
// {
// name: "Gingerbread",
// calories: 356,
// fat: 16.0,
// carbs: 49,
// protein: 3.9,
// iron: "16%"
// },
// {
// name: "Jelly bean",
// calories: 375,
// fat: 0.0,
// carbs: 94,
// protein: 0.0,
// iron: "0%"
// },
// {
// name: "Lollipop",
// calories: 392,
// fat: 0.2,
// carbs: 98,
// protein: 0,
// iron: "2%"
// },
// {
// name: "Honeycomb",
// calories: 408,
// fat: 3.2,
// carbs: 87,
// protein: 6.5,
// iron: "45%"
// },
// {
// name: "Donut",
// calories: 452,
// fat: 25.0,
// carbs: 51,
// protein: 4.9,
// iron: "22%"
// },
// {
// name: "KitKat",
// calories: 518,
// fat: 26.0,
// carbs: 65,
// protein: 7,
// iron: "6%"
// }
// ]
// };
// },
components: {
UnderConstruction
},