From 33b92143862e5cfef6b4a722bba052d16de0c336 Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Thu, 15 Jan 2015 21:59:03 -0800 Subject: [PATCH] Add a "report a problem" link in crafting plan --- src/css/templates/crafting_table.scss | 41 +++++++++++++------ .../crafting_table_controller.coffee | 19 ++++++++- src/scripts/models/inventory_parser.coffee | 24 ++++++++++- src/templates/crafting_table.jade | 2 + 4 files changed, 69 insertions(+), 17 deletions(-) diff --git a/src/css/templates/crafting_table.scss b/src/css/templates/crafting_table.scss index a7dd6d641..5d23bc2bf 100644 --- a/src/css/templates/crafting_table.scss +++ b/src/css/templates/crafting_table.scss @@ -14,19 +14,6 @@ All rights reserved. position: absolute; top: 5em; right: 2em; bottom: 0; left: 2em; background: $color-background-panel; - .prev { - background: url('/images/arrow-left-disabled.png'); - position: absolute; top: 50%; left: 1em; height: 8em; width: 4em; - @include transform(translateY(-50%)); - - &.enabled { - background: url('/images/arrow-left.png'); - cursor: pointer; - - &:hover { background: url('/images/arrow-left-hover.png'); } - } - } - .input { position: absolute; top: 50%; left: 33%; @include transform(translate(-50%, -50%)); @@ -85,5 +72,33 @@ All rights reserved. &:hover { background: url('/images/arrow-right-hover.png'); } } } + + .prev { + background: url('/images/arrow-left-disabled.png'); + position: absolute; top: 50%; left: 1em; height: 8em; width: 4em; + @include transform(translateY(-50%)); + + &.enabled { + background: url('/images/arrow-left.png'); + cursor: pointer; + + &:hover { background: url('/images/arrow-left-hover.png'); } + } + } + + .problem { + position: absolute; bottom: 1em; right: 1em; + + a { + color: $color-gray-light; + cursor: pointer; + font-size: $font-size-normal; + text-decoration: underline; + + &:hover { + color: $color-gray-medium; + } + } + } } } diff --git a/src/scripts/controllers/crafting_table_controller.coffee b/src/scripts/controllers/crafting_table_controller.coffee index 961eb9294..4cb21b489 100644 --- a/src/scripts/controllers/crafting_table_controller.coffee +++ b/src/scripts/controllers/crafting_table_controller.coffee @@ -9,6 +9,7 @@ BaseController = require './base_controller' CraftingGridController = require './crafting_grid_controller' {Duration} = require '../constants' ImageLoader = require './image_loader' +InventoryParser = require '../models/inventory_parser' ######################################################################################################################## @@ -32,6 +33,12 @@ module.exports = class CraftingTableController extends BaseController onPrevClicked: -> @model.step -= 1 + onReportProblem: -> + parser = new InventoryParser @modPack + itemList = parser.unparse @model.plan.want + message = "When I was on step #{@model.step + 1} of making:\n\n#{itemList}\nI noticed that...\n" + global.feedbackController.enterFeedback message + # BaseController Overrides ##################################################################### onDidRender: -> @@ -45,6 +52,7 @@ module.exports = class CraftingTableController extends BaseController @$outputLink = @$('.output a') @$outputQuantity = @$('.quantity') @$prev = @$('.prev') + @$problemControl = @$('.problem') @$title = @$('h2 p') @$tool = @$('.tool p') @@ -85,10 +93,17 @@ module.exports = class CraftingTableController extends BaseController @$multiplier.html '' @$el.tooltip show:{delay:Duration.slow, duration:Duration.fast} + + if not (@model.hasSteps and global.feedbackController?) + @$problemControl.hide duration:Duration.fast + else + @$problemControl.show duration:Duration.normal + super # Backbone.View Overrides ###################################################################### events: - 'click .next': 'onNextClicked' - 'click .prev': 'onPrevClicked' + 'click .next': 'onNextClicked' + 'click .prev': 'onPrevClicked' + 'click .problem a': 'onReportProblem' diff --git a/src/scripts/models/inventory_parser.coffee b/src/scripts/models/inventory_parser.coffee index 19c1ac4c2..9d97e3d39 100644 --- a/src/scripts/models/inventory_parser.coffee +++ b/src/scripts/models/inventory_parser.coffee @@ -5,15 +5,23 @@ Copyright (c) 2014-2015 by Redwood Labs All rights reserved. ### -Inventory = require './inventory' -Item = require './item' +Inventory = require './inventory' +Item = require './item' +StringBuilder = require './string_builder' ######################################################################################################################## module.exports = class InventoryParser + constructor: (modPack=null)-> + @modPack = modPack + + # Class Methods ################################################################################ + @ITEM_REGEX = /^([0-9]+)(.*)$/ + # Public Methods ############################################################################### + parse: (data, inventory=null)-> inventory ?= new Inventory return inventory if not data? or data.length is 0 @@ -28,3 +36,15 @@ module.exports = class InventoryParser inventory.add _.slugify(name), quantity return inventory + + unparse: (inventory)-> + if not @modPack? then throw new Error 'this.modPack is needed to unparse' + + builder = new StringBuilder + for item in inventory.toList() + if _.isString item + builder.line @modPack.findName item + else + builder.line item[0], ' ', @modPack.findName item[1] + + return builder.toString() \ No newline at end of file diff --git a/src/templates/crafting_table.jade b/src/templates/crafting_table.jade index 679f8f274..8a27ac949 100644 --- a/src/templates/crafting_table.jade +++ b/src/templates/crafting_table.jade @@ -21,3 +21,5 @@ p.quantity p.multiplier .next + .problem + a report a problem