on xenial help sign in
Move default layout and fullMapping into helpers.
7290e03Michał Sawicz
tests/qmltests/Dash/CardHelpers.js+45
@@ -18,6 +18,51 @@
18
18
19var components = ["title", "art", "subtitle", "mascot", "emblem", "old-price", "price", "alt-price", "rating", "alt-rating", "summary"]
19var components = ["title", "art", "subtitle", "mascot", "emblem", "old-price", "price", "alt-price", "rating", "alt-rating", "summary"]
20
20
21+var defaultLayout = ' \
22+{ \
23+ "schema-version": 1, \
24+ "template": { \
25+ "category-layout": "grid", \
26+ "card-layout": "vertical", \
27+ "card-size": "medium", \
28+ "overlay-mode": null, \
29+ "collapsed-rows": 2 \
30+ }, \
31+ "components": { \
32+ "title": null, \
33+ "art": { \
34+ "aspect-ratio": 1.0, \
35+ "fill-mode": "crop" \
36+ }, \
37+ "subtitle": null, \
38+ "mascot": null, \
39+ "emblem": null, \
40+ "old-price": null, \
41+ "price": null, \
42+ "alt-price": null, \
43+ "rating": { \
44+ "type": "stars", \
45+ "range": [0, 5], \
46+ "full": "image://theme/rating-star-full", \
47+ "half": "image://theme/rating-star-half", \
48+ "empty": "image://theme/rating-star-empty" \
49+ }, \
50+ "alt-rating": null, \
51+ "summary": null \
52+ }, \
53+ "resources": {} \
54+}'
55+
56+var fullMapping = ' \
57+{ \
58+ "title": "title", \
59+ "art": "art", \
60+ "subtitle": "subtitle", \
61+ "mascot": "mascot", \
62+ "summary": "summary" \
63+}'
64+
65+
21function tryParse(json, errorLabel) {
66function tryParse(json, errorLabel) {
22 var o = undefined;
67 var o = undefined;
23 if (errorLabel !== undefined) {
68 if (errorLabel !== undefined) {
tests/qmltests/Dash/tst_Card.qml+9−53
@@ -27,41 +27,6 @@ Rectangle {
27 height: units.gu(72)
27 height: units.gu(72)
28 color: "#88FFFFFF"
28 color: "#88FFFFFF"
29
29
30− property string defaultLayout: '
31− {
32− "schema-version": 1,
33− "template": {
34− "category-layout": "grid",
35− "card-layout": "vertical",
36− "card-size": "medium",
37− "overlay-mode": null,
38− "collapsed-rows": 2
39− },
40− "components": {
41− "title": null,
42− "art": {
43− "aspect-ratio": 1.0,
44− "fill-mode": "crop"
45− },
46− "subtitle": null,
47− "mascot": null,
48− "emblem": null,
49− "old-price": null,
50− "price": null,
51− "alt-price": null,
52− "rating": {
53− "type": "stars",
54− "range": [0, 5],
55− "full": "image://theme/rating-star-full",
56− "half": "image://theme/rating-star-half",
57− "empty": "image://theme/rating-star-empty"
58− },
59− "alt-rating": null,
60− "summary": null
61− },
62− "resources": {}
63− }'
64−
65 property string cardData: '
30 property string cardData: '
66 {
31 {
67 "art": "../../tests/qmltests/Dash/artwork/music-player-design.png",
32 "art": "../../tests/qmltests/Dash/artwork/music-player-design.png",
@@ -71,44 +36,35 @@ Rectangle {
71 "summary": "Lorem ipsum dolor sit amet, consectetur adipisicing 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
36 "summary": "Lorem ipsum dolor sit amet, consectetur adipisicing 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. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
72 }'
37 }'
73
38
74− property string fullMapping: '
75− {
76− "title": "title",
77− "art": "art",
78− "subtitle": "subtitle",
79− "mascot": "mascot",
80− "summary": "summary"
81− }'
82−
83 property var cardsModel: [
39 property var cardsModel: [
84 {
40 {
85 "name": "Art, header, summary",
41 "name": "Art, header, summary",
86− "layout": { "components": JSON.parse(fullMapping) }
42+ "layout": { "components": JSON.parse(Helpers.fullMapping) }
87 },
43 },
88 {
44 {
89 "name": "Art, header, summary - small",
45 "name": "Art, header, summary - small",
90− "layout": { "template": { "card-size": "small" }, "components": JSON.parse(fullMapping) }
46+ "layout": { "template": { "card-size": "small" }, "components": JSON.parse(Helpers.fullMapping) }
91 },
47 },
92 {
48 {
93 "name": "Art, header, summary - large",
49 "name": "Art, header, summary - large",
94− "layout": { "template": { "card-size": "large" }, "components": JSON.parse(fullMapping) }
50+ "layout": { "template": { "card-size": "large" }, "components": JSON.parse(Helpers.fullMapping) }
95 },
51 },
96 {
52 {
97 "name": "Art, header, summary - wide",
53 "name": "Art, header, summary - wide",
98− "layout": { "components": Helpers.update(JSON.parse(root.fullMapping), { "art": { "aspect-ratio": 2 } }) }
54+ "layout": { "components": Helpers.update(JSON.parse(Helpers.fullMapping), { "art": { "aspect-ratio": 2 } }) }
99 },
55 },
100 {
56 {
101 "name": "Art, title - fitted",
57 "name": "Art, title - fitted",
102− "layout": { "components": Helpers.update(JSON.parse(root.fullMapping), { "art": { "fill-mode": "fit" } }) }
58+ "layout": { "components": Helpers.update(JSON.parse(Helpers.fullMapping), { "art": { "fill-mode": "fit" } }) }
103 },
59 },
104 {
60 {
105 "name": "Art, header, summary - horizontal",
61 "name": "Art, header, summary - horizontal",
106 "layout": { "template": { "card-layout": "horizontal" },
62 "layout": { "template": { "card-layout": "horizontal" },
107− "components": JSON.parse(fullMapping) }
63+ "components": JSON.parse(Helpers.fullMapping) }
108 },
64 },
109 {
65 {
110 "name": "Art, header",
66 "name": "Art, header",
111− "layout": { "components": Helpers.update(JSON.parse(root.fullMapping), { "summary": undefined }) }
67+ "layout": { "components": Helpers.update(JSON.parse(Helpers.fullMapping), { "summary": undefined }) }
112 },
68 },
113 {
69 {
114 "name": "Art, summary",
70 "name": "Art, summary",
@@ -133,8 +89,8 @@ Rectangle {
133 width: cardTool.cardWidth || implicitWidth
89 width: cardTool.cardWidth || implicitWidth
134 height: cardTool.cardHeight || implicitHeight
90 height: cardTool.cardHeight || implicitHeight
135
91
136− template: Helpers.update(JSON.parse(root.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['template'];
92+ template: Helpers.update(JSON.parse(Helpers.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['template'];
137− components: Helpers.update(JSON.parse(root.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['components'];
93+ components: Helpers.update(JSON.parse(Helpers.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['components'];
138 cardData: Helpers.mapData(dataArea.text, components, dataError)
94 cardData: Helpers.mapData(dataArea.text, components, dataError)
139 }
95 }
140
96
tests/qmltests/Dash/tst_CardTool.qml+6−50
@@ -27,66 +27,22 @@ Rectangle {
27 height: units.gu(72)
27 height: units.gu(72)
28 color: "#88FFFFFF"
28 color: "#88FFFFFF"
29
29
30− property string defaultLayout: '
31− {
32− "schema-version": 1,
33− "template": {
34− "category-layout": "grid",
35− "card-layout": "vertical",
36− "card-size": "medium",
37− "overlay-mode": null,
38− "collapsed-rows": 2
39− },
40− "components": {
41− "title": null,
42− "art": {
43− "aspect-ratio": 1.0,
44− "fill-mode": "crop"
45− },
46− "subtitle": null,
47− "mascot": null,
48− "emblem": null,
49− "old-price": null,
50− "price": null,
51− "alt-price": null,
52− "rating": {
53− "type": "stars",
54− "range": [0, 5],
55− "full": "image://theme/rating-star-full",
56− "half": "image://theme/rating-star-half",
57− "empty": "image://theme/rating-star-empty"
58− },
59− "alt-rating": null,
60− "summary": null
61− },
62− "resources": {}
63− }'
64−
65− property string fullMapping: '
66− {
67− "title": "title",
68− "art": "art",
69− "subtitle": "subtitle",
70− "mascot": "mascot",
71− "summary": "summary"
72− }'
73−
74 property var cardsModel: [
30 property var cardsModel: [
75 {
31 {
76 "name": "Art, header, summary",
32 "name": "Art, header, summary",
77− "layout": { "components": JSON.parse(fullMapping) }
33+ "layout": { "components": JSON.parse(Helpers.fullMapping) }
78 },
34 },
79 {
35 {
80 "name": "Art, header, summary - small",
36 "name": "Art, header, summary - small",
81− "layout": { "template": { "card-size": "small" }, "components": JSON.parse(fullMapping) }
37+ "layout": { "template": { "card-size": "small" }, "components": JSON.parse(Helpers.fullMapping) }
82 },
38 },
83 {
39 {
84 "name": "Art, header, summary - large",
40 "name": "Art, header, summary - large",
85− "layout": { "template": { "card-size": "large" }, "components": JSON.parse(fullMapping) }
41+ "layout": { "template": { "card-size": "large" }, "components": JSON.parse(Helpers.fullMapping) }
86 },
42 },
87 {
43 {
88 "name": "Art, header, summary - horizontal",
44 "name": "Art, header, summary - horizontal",
89− "layout": { "template": { "card-layout": "horizontal" }, "components": JSON.parse(fullMapping) }
45+ "layout": { "template": { "card-layout": "horizontal" }, "components": JSON.parse(Helpers.fullMapping) }
90 },
46 },
91 {
47 {
92 "name": "Header title only",
48 "name": "Header title only",
@@ -97,8 +53,8 @@ Rectangle {
97 CardTool {
53 CardTool {
98 id: cardTool
54 id: cardTool
99
55
100− template: Helpers.update(JSON.parse(root.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['template'];
56+ template: Helpers.update(JSON.parse(Helpers.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['template'];
101− components: Helpers.update(JSON.parse(root.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['components'];
57+ components: Helpers.update(JSON.parse(Helpers.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['components'];
102 }
58 }
103
59
104 Column {
60 Column {