From 532c9372eaf1d065ea3ae8e9fc79c19649adb395 Mon Sep 17 00:00:00 2001 From: Dan Elbert Date: Thu, 13 Sep 2018 14:51:41 -0500 Subject: [PATCH] updates --- app/controllers/calculator_controller.rb | 41 +++-- app/javascript/components/App.vue | 9 +- .../components/AppExpandTransition.vue | 87 ++++++++--- app/javascript/components/AppIcon.vue | 1 + app/javascript/components/AppIconicIcon.vue | 2 + app/javascript/components/AppTextField.vue | 52 ++++++- app/javascript/components/FoodShow.vue | 6 +- app/javascript/components/TaskItemEdit.vue | 12 +- app/javascript/components/TaskItemList.vue | 146 +++++++++++++----- app/javascript/components/TheCalculator.vue | 116 +++++++------- app/javascript/components/TheTaskListList.vue | 69 ++------- app/javascript/styles/_transitions.scss | 4 +- app/javascript/styles/index.scss | 2 + app/models/ingredient.rb | 3 - lib/unit_conversion/conversions.rb | 4 +- lib/unit_conversion/parsed_unit.rb | 2 +- lib/unit_conversion/unitwise_patch.rb | 4 + package.json | 1 + yarn.lock | 4 + 19 files changed, 369 insertions(+), 196 deletions(-) diff --git a/app/controllers/calculator_controller.rb b/app/controllers/calculator_controller.rb index f2148af..a3a6ffd 100644 --- a/app/controllers/calculator_controller.rb +++ b/app/controllers/calculator_controller.rb @@ -16,20 +16,43 @@ class CalculatorController < ApplicationController ingredient = Ingredient.find_by_ingredient_id(ingredient_id) end - data = {errors: [], output: ''} + data = {errors: Hash.new { |h, k| h[k] = [] }, output: ''} - begin - UnitConversion::with_custom_units(ingredient ? ingredient.custom_units : []) do - unit = UnitConversion.parse(input) + UnitConversion::with_custom_units(ingredient ? ingredient.custom_units : []) do + density_unit = nil + begin + if density + density_unit = UnitConversion.parse(density) + unless density_unit.density? + data[:errors][:density] << 'not a density unit' + density_unit = nil + end + end + rescue UnitConversion::UnparseableUnitError => e + data[:errors][:density] << 'invalid string' + end + + begin + input_unit = UnitConversion.parse(input) + rescue UnitConversion::UnparseableUnitError => e + data[:errors][:input] << 'invalid string' + end + + if !input_unit.nil? if output_unit.present? - unit = unit.convert(output_unit, density) - data[:output] = unit.to_s + begin + input_unit = input_unit.convert(output_unit, density_unit) + rescue UnitConversion::UnparseableUnitError => e + data[:errors][:output_unit] << e.message + end else - data[:output] = unit.auto_unit.to_s + input_unit = input_unit.auto_unit end end - rescue UnitConversion::UnparseableUnitError => e - data[:errors] << e.message + + if data[:errors].empty? + data[:output] = input_unit.to_s + end end render json: data diff --git a/app/javascript/components/App.vue b/app/javascript/components/App.vue index f77e325..595f614 100644 --- a/app/javascript/components/App.vue +++ b/app/javascript/components/App.vue @@ -18,6 +18,7 @@ import { mapMutations, mapState } from "vuex"; import api from "../lib/Api"; + import TWEEN from '@tweenjs/tween.js'; export default { data() { @@ -44,9 +45,15 @@ }, created() { + // Setup global animation loop + function animate () { + TWEEN.update(); + requestAnimationFrame(animate); + } + animate(); + if (this.user === null && this.authChecked === false) { this.checkAuthentication(); - } }, diff --git a/app/javascript/components/AppExpandTransition.vue b/app/javascript/components/AppExpandTransition.vue index 21d8cbd..d272200 100644 --- a/app/javascript/components/AppExpandTransition.vue +++ b/app/javascript/components/AppExpandTransition.vue @@ -1,55 +1,98 @@