Updated feedback form to Polymer 1

This commit is contained in:
Stefan Zermatten
2017-01-13 13:21:42 +02:00
parent c416adc85b
commit a67b13f659
9 changed files with 79 additions and 44 deletions

View File

@@ -17,8 +17,8 @@ Schemas.Report = new SimpleSchema({
},
type: {
type: String,
allowedValues: ["bug", "change", "feature", "general"],
defaultValue: "bug",
allowedValues: ["General Feedback", "Bug", "Suggested Change", "Feature Request"],
defaultValue: "General Feedback",
},
//the immediate impact of doing this action (eg. -1 rages)
severity: {

View File

@@ -1,4 +1,4 @@
paper-tabs, app-toolbar {
paper-tabs {
box-shadow: 0px 3px 2px rgba(0, 0, 0, 0.2);
}

View File

@@ -0,0 +1,7 @@
.feedback .form {
padding: 24px;
}
.feedback .buttons {
padding: 8px 8px 8px 24px;
}

View File

@@ -1,37 +1,43 @@
<template name="feedback">
<div class="feedback" style="min-width: 300px; min-height: 370px">
<div>
<paper-input id="feedbackTitle" label="Title" floatinglabel></paper-input>
<div class="fit layout vertical">
<app-header-layout has-scrolling-region class="feedback flex">
<app-header fixed effects="waterfall">
<app-toolbar>
<div main-title>Feedback</div>
</app-toolbar>
</app-header>
<div class="form flex">
<div>
<paper-input id="feedbackTitle" label="Title" floatinglabel required></paper-input>
</div>
<div>
<paper-dropdown-menu label="Type" class="typeMenu">
<paper-listbox class="dropdown-content" selected="0">
<paper-item label="General Feedback"> General Feedback </paper-item>
<paper-item label="Bug"> Bug </paper-item>
<paper-item label="Suggested Change"> Suggested Change </paper-item>
<paper-item label="Feature Request"> Feature Request </paper-item>
</paper-listbox>
</paper-dropdown-menu>
</div>
<div class="layout horizontal">
<div class="paper-font-caption">not important</div>
<paper-slider id="severity" class="flex" max=10 min=1 value=5 snap></paper-slider>
<div class="paper-font-caption">important</div>
</div>
<paper-textarea label="Description" id="feedbackDescription" required></paper-textarea>
</div>
</app-header-layout>
<div class="buttons layout horizontal end-justified">
<paper-button id="cancelButton"
affirmative>
Cancel
</paper-button>
<paper-button id="sendButton"
affirmative
disabled={{invalid}}>
Send
</paper-button>
</div>
<div>
<paper-dropdown-menu class="typeDropdown" label="Operation" flex>
<paper-dropdown layered class="dropdown">
<core-menu class="menu typeMenu" selected="general">
<paper-item name="general">General Feedback</paper-item>
<paper-item name="bug">Bug</paper-item>
<paper-item name="change">Suggested Change</paper-item>
<paper-item name="feature">Feature Request</paper-item>
</core-menu>
</paper-dropdown>
</paper-dropdown-menu>
</div>
<div layout horizontal center>
<div>Importance</div>
<paper-slider id="severity" max=10 min=1 value=5 snap></paper-slider>
</div>
<paper-input-decorator label="Description" floatinglabel layout vertical>
<paper-autogrow-textarea rows=10 maxRows=10>
<textarea id="feedbackDescription"></textarea>
</paper-autogrow-textarea>
</paper-input-decorator>
</div>
<paper-button id="cancelButton"
affirmative>
Cancel
</paper-button>
<paper-button id="sendButton"
affirmative
disabled={{invalid}}>
Send
</paper-button>
</template>
</template>

View File

@@ -18,16 +18,19 @@ Template.feedback.events({
"input #feedbackDescription": function(event, instance) {
instance.description.set(instance.find("#feedbackDescription").value);
},
"tap #sendButton": function(event, instance) {
"click #sendButton": function(event, instance) {
var report = {};
report.title = instance.find("#feedbackTitle").value;
report.severity = instance.find("#severity").value;
report.type = instance.find(".typeMenu").selected;
report.type = instance.find(".typeMenu").value;
report.description = instance.find("#feedbackDescription").value;
report.metaData = {
url: window.location.href,
session: _.pairs(Session.keys),
};
Meteor.call("insertReport", report);
}
popDialogStack(report);
},
"click #cancelButton": function(event, template){
popDialogStack();
},
});

View File

@@ -16,6 +16,10 @@
padding: 16px;
}
#navPanel paper-icon-item {
background: white;
}
.layout > core-header-panel {
height: 100%;
}

View File

@@ -38,10 +38,17 @@ Template.layout.events({
closeDrawer(instance);
},
"tap #feedback": function(event, instance) {
GlobalUI.showDialog({
heading: "Feedback",
pushDialogStack({
template: "feedback",
fullOnMobile: true,
element: event.currentTarget,
callback: function(report){
if (!report) return;
Meteor.call("insertReport", report, function(e, result){
GlobalUI.toast({
text: e && e.details || "Feedback submitted"
});
});
}
});
closeDrawer(instance);
},

View File

@@ -7,6 +7,7 @@
};
</script>
<link rel="import" href="/components/app-layout/app-layout.html">
<link rel="import" href="/components/app-layout/app-scroll-effects/effects/waterfall.html">
<link rel="import" href="/components/iron-icon/iron-icon.html">
<!--<link rel="import" href="/components/iron-icons/av-icons.html">-->
@@ -24,11 +25,17 @@
<link rel="import" href="/components/neon-animation/neon-animation.html">
<link rel="import" href="/components/neon-animation/neon-animations.html">
<link rel="import" href="/components/paper-button/paper-button.html">
<link rel="import" href="/components/paper-dialog/paper-dialog.html">
<link rel="import" href="/components/paper-dropdown-menu/paper-dropdown-menu.html">
<link rel="import" href="/components/paper-icon-button/paper-icon-button.html">
<link rel="import" href="/components/paper-input/paper-input.html">
<link rel="import" href="/components/paper-input/paper-textarea.html">
<link rel="import" href="/components/paper-item/all-imports.html">
<link rel="import" href="/components/paper-listbox/paper-listbox.html">
<link rel="import" href="/components/paper-material/paper-material.html">
<link rel="import" href="/components/paper-menu-button/paper-menu-button.html">
<link rel="import" href="/components/paper-slider/paper-slider.html">
<link rel="import" href="/components/paper-tabs/paper-tabs.html">
<link rel="import" href="/components/paper-toast/paper-toast.html">

View File

@@ -1,5 +1,6 @@
<link rel="import" href="../components/polymer/polymer.html">
<link rel="import" href="../components/iron-flex-layout/iron-flex-layout-classes.html">
<link rel="import" href="../components/paper-styles/classes/typography.html">
<style is="custom-style" include="iron-flex iron-flex-alignment iron-positioning">