fix(Community Permissions): Update `Who holds` add new item with always AND action
- Logic related to operators removed. - Dropdown `and/or` removed. - Updated `PermissionItem` to display only the tag and not the operator. - Updated `storybook` according to new changes. Fixes #8500
This commit is contained in:
parent
bfd5fe1446
commit
5676fb96ef
|
@ -13,8 +13,6 @@ ColumnLayout {
|
|||
property string icon
|
||||
property string amountText
|
||||
property bool isAmountVisible: false
|
||||
property bool isExpression: false
|
||||
property bool isAnd: true
|
||||
property bool isImageSelectorVisible: true
|
||||
property var iconsModel
|
||||
|
||||
|
@ -95,11 +93,4 @@ ColumnLayout {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
Switch {
|
||||
visible: root.isExpression
|
||||
text: "OR -- AND"
|
||||
checked: root.isAnd
|
||||
onToggled: root.isAnd = checked
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,16 +61,7 @@ Flickable {
|
|||
icon: model.imageSource
|
||||
amountText: model.amount
|
||||
isAmountVisible: true
|
||||
isExpression: model.operator !== OperatorsUtils.Operators.None
|
||||
isAnd: model.operator === OperatorsUtils.Operators.And
|
||||
iconsModel: TokensCollectiblesIconsModel {}
|
||||
onIsAndChanged: {
|
||||
if(model.operator !== OperatorsUtils.Operators.None)
|
||||
{
|
||||
if(isAnd) model.operator = OperatorsUtils.Operators.And
|
||||
else model.operator = OperatorsUtils.Operators.Or
|
||||
}
|
||||
}
|
||||
onNameChanged: model.name = name
|
||||
onIconChanged: model.imageSource = icon
|
||||
onAmountTextChanged: model.amount = parseFloat(amountText)
|
||||
|
@ -85,7 +76,6 @@ Flickable {
|
|||
amountText: d.newAmount
|
||||
isAmountVisible: true
|
||||
iconsModel: TokensCollectiblesIconsModel {}
|
||||
isExpression: false
|
||||
onNameChanged: d.newName = name
|
||||
onIconChanged: d.newImageSource = icon
|
||||
onAmountTextChanged: d.newAmount = parseFloat(amountText)
|
||||
|
@ -97,7 +87,6 @@ Flickable {
|
|||
text: "Add new holding"
|
||||
onClicked: {
|
||||
model.holdingsListModel.append([{
|
||||
operator: OperatorsUtils.Operators.And,
|
||||
type: 1,
|
||||
key: d.newName,
|
||||
name: d.newName,
|
||||
|
|
|
@ -24,11 +24,6 @@ Pane {
|
|||
onClicked: openFlow(HoldingsDropdown.FlowType.Add)
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "AddWithOperators"
|
||||
onClicked: openFlow(HoldingsDropdown.FlowType.AddWithOperators)
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "Update"
|
||||
onClicked: openFlow(HoldingsDropdown.FlowType.Update)
|
||||
|
|
|
@ -30,7 +30,9 @@ QtObject {
|
|||
case OperatorsUtils.Operators.Or:
|
||||
return root.orOperatorText
|
||||
case OperatorsUtils.Operators.None:
|
||||
default:
|
||||
return ""
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,9 +25,9 @@ StatusDropdown {
|
|||
property int ensType: EnsPanel.EnsType.Any
|
||||
property string ensDomainName: ""
|
||||
|
||||
signal addToken(string key, real amount, int operator)
|
||||
signal addCollectible(string key, real amount, int operator)
|
||||
signal addEns(bool any, string customDomain, int operator)
|
||||
signal addToken(string key, real amount)
|
||||
signal addCollectible(string key, real amount)
|
||||
signal addEns(bool any, string customDomain)
|
||||
|
||||
signal updateToken(string key, real amount)
|
||||
signal updateCollectible(string key, real amount)
|
||||
|
@ -37,7 +37,6 @@ StatusDropdown {
|
|||
|
||||
function reset() {
|
||||
d.currentHoldingType = HoldingTypes.Type.Token
|
||||
d.operator = OperatorsUtils.Operators.None
|
||||
d.tokenAmountText = ""
|
||||
d.collectibleAmountText = ""
|
||||
|
||||
|
@ -61,14 +60,11 @@ StatusDropdown {
|
|||
onClosed: root.reset()
|
||||
|
||||
enum FlowType {
|
||||
Add, AddWithOperators, Update
|
||||
Add, Update
|
||||
}
|
||||
|
||||
function openFlow(flowType) {
|
||||
switch (flowType) {
|
||||
case HoldingsDropdown.FlowType.AddWithOperators:
|
||||
statesStack.push(d.operatorsState)
|
||||
break
|
||||
case HoldingsDropdown.FlowType.Add:
|
||||
statesStack.push(d.addState)
|
||||
break
|
||||
|
@ -95,7 +91,6 @@ StatusDropdown {
|
|||
readonly property bool collectiblesReady: root.collectibleAmount > 0 && root.collectibleKey
|
||||
readonly property bool ensReady: root.ensType === EnsPanel.EnsType.Any || d.ensDomainNameValid
|
||||
|
||||
readonly property string operatorsState: "OPERATORS"
|
||||
readonly property string addState: "ADD"
|
||||
readonly property string updateState: "UPDATE"
|
||||
readonly property string extendedState: "EXTENDED"
|
||||
|
@ -108,7 +103,6 @@ StatusDropdown {
|
|||
|
||||
property int currentHoldingType: HoldingTypes.Type.Token
|
||||
|
||||
property int operator: OperatorsUtils.Operators.None
|
||||
property bool ensDomainNameValid: false
|
||||
|
||||
signal addClicked
|
||||
|
@ -117,9 +111,6 @@ StatusDropdown {
|
|||
// By design values:
|
||||
readonly property int padding: 8
|
||||
|
||||
readonly property int operatorsWidth: 159
|
||||
readonly property int operatorsHeight: 96
|
||||
|
||||
readonly property int defaultWidth: 289
|
||||
readonly property int extendedContentHeight: 380
|
||||
|
||||
|
@ -193,11 +184,6 @@ StatusDropdown {
|
|||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: d.operatorsState
|
||||
PropertyChanges {target: loader; sourceComponent: operatorsSelectorView}
|
||||
PropertyChanges {target: root; width: d.operatorsWidth; height: d.operatorsHeight }
|
||||
},
|
||||
State {
|
||||
name: d.addState
|
||||
PropertyChanges {target: loader; sourceComponent: tabsView}
|
||||
|
@ -216,17 +202,6 @@ StatusDropdown {
|
|||
]
|
||||
}
|
||||
|
||||
Component {
|
||||
id: operatorsSelectorView
|
||||
|
||||
OperatorsSelector {
|
||||
onOperatorSelected: {
|
||||
d.operator = operator
|
||||
statesStack.push(d.addState)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: tabsView
|
||||
|
||||
|
@ -325,7 +300,7 @@ StatusDropdown {
|
|||
target: d
|
||||
|
||||
function onAddClicked() {
|
||||
root.addToken(root.tokenKey, root.tokenAmount, d.operator)
|
||||
root.addToken(root.tokenKey, root.tokenAmount)
|
||||
}
|
||||
|
||||
function onUpdateClicked() {
|
||||
|
@ -370,7 +345,7 @@ StatusDropdown {
|
|||
target: d
|
||||
|
||||
function onAddClicked() {
|
||||
root.addCollectible(root.collectibleKey, collectiblesPanel.getAmount(), d.operator)
|
||||
root.addCollectible(root.collectibleKey, collectiblesPanel.getAmount())
|
||||
}
|
||||
|
||||
function onUpdateClicked() {
|
||||
|
@ -410,7 +385,7 @@ StatusDropdown {
|
|||
target: d
|
||||
|
||||
function onAddClicked() {
|
||||
root.addEns(root.ensType === EnsPanel.EnsType.Any, root.ensDomainName, d.operator)
|
||||
root.addEns(root.ensType === EnsPanel.EnsType.Any, root.ensDomainName)
|
||||
}
|
||||
|
||||
function onUpdateClicked() {
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
import QtQuick.Layouts 1.14
|
||||
import QtQuick 2.14
|
||||
|
||||
import StatusQ.Controls 0.1
|
||||
import StatusQ.Core.Theme 0.1
|
||||
import StatusQ.Core.Utils 0.1
|
||||
|
||||
import utils 1.0
|
||||
|
||||
ColumnLayout {
|
||||
id: root
|
||||
|
||||
signal operatorSelected(int operator)
|
||||
|
||||
spacing: 8
|
||||
|
||||
Repeater {
|
||||
model: [
|
||||
{
|
||||
icon: "add",
|
||||
text: qsTr("And..."),
|
||||
operator: OperatorsUtils.Operators.And
|
||||
},
|
||||
{
|
||||
icon: "condition-Or",
|
||||
text: qsTr("Or..."),
|
||||
operator: OperatorsUtils.Operators.Or
|
||||
}
|
||||
]
|
||||
|
||||
delegate: StatusPickerButton {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: 36
|
||||
horizontalPadding: 12
|
||||
spacing: 10
|
||||
bgColor: Theme.palette.primaryColor3
|
||||
contentColor: Theme.palette.primaryColor1
|
||||
asset.name: Style.svg(modelData.icon)
|
||||
asset.isImage: true
|
||||
asset.height: 12
|
||||
asset.width: 12
|
||||
text: modelData.text
|
||||
font.pixelSize: 13
|
||||
|
||||
onClicked: root.operatorSelected(modelData.operator)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -96,33 +96,19 @@ Control{
|
|||
Repeater {
|
||||
model: root.holdingsListModel
|
||||
|
||||
RowLayout {
|
||||
spacing: content.spacing
|
||||
|
||||
StatusBaseText {
|
||||
id: operatorText
|
||||
Layout.preferredHeight: d.flowRowHeight
|
||||
visible: model.operator !== OperatorsUtils.Operators.None
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
text: OperatorsUtils.setOperatorTextFormat(model.operator)
|
||||
font.pixelSize: d.itemTextPixelSize
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
}
|
||||
StatusListItemTag {
|
||||
Layout.preferredHeight: d.flowRowHeight
|
||||
Layout.maximumWidth: content.width - operatorText.width - spacing
|
||||
leftPadding: 2
|
||||
title: model.text
|
||||
asset.name: model.imageSource
|
||||
asset.isImage: true
|
||||
asset.bgColor: "transparent"
|
||||
asset.height: 28
|
||||
asset.width: asset.height
|
||||
closeButtonVisible: false
|
||||
titleText.color: Theme.palette.primaryColor1
|
||||
titleText.font.pixelSize: d.tagTextPixelSize
|
||||
}
|
||||
StatusListItemTag {
|
||||
height: d.flowRowHeight
|
||||
width: (implicitWidth > content.width) ? content.width : implicitWidth
|
||||
leftPadding: 2
|
||||
title: model.text
|
||||
asset.name: model.imageSource
|
||||
asset.isImage: true
|
||||
asset.bgColor: "transparent"
|
||||
asset.height: 28
|
||||
asset.width: asset.height
|
||||
closeButtonVisible: false
|
||||
titleText.color: Theme.palette.primaryColor1
|
||||
titleText.font.pixelSize: d.tagTextPixelSize
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -100,9 +100,8 @@ QtObject {
|
|||
// Setting HOLDINGS:
|
||||
for (var i = 0; i < holdings.count; i++ ) {
|
||||
var entry = holdings.get(i);
|
||||
// roles: type, key, name, amount, imageSource, operator
|
||||
// roles: type, key, name, amount, imageSource
|
||||
permission.holdingsListModel.push({
|
||||
operator: entry.operator,
|
||||
type: entry.type,
|
||||
key: entry.key,
|
||||
name: entry.name,
|
||||
|
|
|
@ -52,7 +52,7 @@ StatusScrollView {
|
|||
|
||||
property int permissionIndex
|
||||
|
||||
// roles: type, key, name, amount, imageSource, operator
|
||||
// roles: type, key, name, amount, imageSource
|
||||
property var holdingsModel: ListModel {}
|
||||
|
||||
// roles: key, text, imageSource
|
||||
|
@ -109,8 +109,7 @@ StatusScrollView {
|
|||
name: item.name,
|
||||
shortName: item.shortName,
|
||||
amount: item.amount,
|
||||
imageSource: item.imageSource,
|
||||
operator: item.operator
|
||||
imageSource: item.imageSource
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -119,8 +118,7 @@ StatusScrollView {
|
|||
key: item.key,
|
||||
name: item.name,
|
||||
amount: item.amount,
|
||||
imageSource: item.imageSource,
|
||||
operator: item.operator
|
||||
imageSource: item.imageSource
|
||||
}
|
||||
}
|
||||
d.dirtyValues.holdingsModel.append(initItem)
|
||||
|
@ -151,12 +149,11 @@ StatusScrollView {
|
|||
const item1 = root.holdingsModel.get(i)
|
||||
for(let j = 0; j < d.dirtyValues.holdingsModel.count; j++) {
|
||||
let item2 = d.dirtyValues.holdingsModel.get(j)
|
||||
// key, name, shortName, amount, operator
|
||||
// key, name, shortName, amount
|
||||
if((item1.key === item2.key) &&
|
||||
(item1.name === item2.name) &&
|
||||
(item1.shortName === item2.shortName) &&
|
||||
(item1.amount === item2.amount) &&
|
||||
(item1.operator === item2.operator)) {
|
||||
(item1.amount === item2.amount)) {
|
||||
equals = equals + 1
|
||||
}
|
||||
}
|
||||
|
@ -211,25 +208,25 @@ StatusScrollView {
|
|||
id: dropdown
|
||||
store: root.store
|
||||
|
||||
function addItem(type, item, amount, operator) {
|
||||
function addItem(type, item, amount) {
|
||||
const key = item.key
|
||||
const name = item.shortName ? item.shortName : item.name
|
||||
const imageSource = item.iconSource.toString()
|
||||
|
||||
d.dirtyValues.holdingsModel.append({ type, key, name, amount, imageSource, operator })
|
||||
d.dirtyValues.holdingsModel.append({ type, key, name, amount, imageSource })
|
||||
}
|
||||
|
||||
onAddToken: {
|
||||
const modelItem = CommunityPermissionsHelpers.getTokenByKey(
|
||||
store.tokensModel, key)
|
||||
addItem(HoldingTypes.Type.Token, modelItem, amount, operator)
|
||||
addItem(HoldingTypes.Type.Token, modelItem, amount)
|
||||
dropdown.close()
|
||||
}
|
||||
|
||||
onAddCollectible: {
|
||||
const modelItem = CommunityPermissionsHelpers.getCollectibleByKey(
|
||||
store.collectiblesModel, key)
|
||||
addItem(HoldingTypes.Type.Collectible, modelItem, amount, operator)
|
||||
addItem(HoldingTypes.Type.Collectible, modelItem, amount)
|
||||
dropdown.close()
|
||||
}
|
||||
|
||||
|
@ -238,7 +235,7 @@ StatusScrollView {
|
|||
const name = any ? "" : customDomain
|
||||
const icon = Style.svg("ensUsernames")
|
||||
|
||||
d.dirtyValues.holdingsModel.append({type: HoldingTypes.Type.Ens, key, name, amount: 1, imageSource: icon, operator })
|
||||
d.dirtyValues.holdingsModel.append({type: HoldingTypes.Type.Ens, key, name, amount: 1, imageSource: icon })
|
||||
dropdown.close()
|
||||
}
|
||||
|
||||
|
@ -276,11 +273,6 @@ StatusScrollView {
|
|||
|
||||
onRemoveClicked: {
|
||||
d.dirtyValues.holdingsModel.remove(tokensSelector.editedIndex)
|
||||
|
||||
if (d.dirtyValues.holdingsModel && d.dirtyValues.holdingsModel.count) {
|
||||
d.dirtyValues.holdingsModel.set(0, { operator: OperatorsUtils.Operators.None})
|
||||
}
|
||||
|
||||
dropdown.close()
|
||||
}
|
||||
}
|
||||
|
@ -289,11 +281,7 @@ StatusScrollView {
|
|||
dropdown.parent = tokensSelector.addButton
|
||||
dropdown.x = tokensSelector.addButton.width + d.dropdownHorizontalOffset
|
||||
dropdown.y = 0
|
||||
|
||||
if (d.dirtyValues.holdingsModel && d.dirtyValues.holdingsModel.count === 0)
|
||||
dropdown.openFlow(HoldingsDropdown.FlowType.Add)
|
||||
else
|
||||
dropdown.openFlow(HoldingsDropdown.FlowType.AddWithOperators)
|
||||
dropdown.openFlow(HoldingsDropdown.FlowType.Add)
|
||||
}
|
||||
|
||||
onItemClicked: {
|
||||
|
|
Loading…
Reference in New Issue