Skip to content

Commit

Permalink
Booth inf ocan be updated.
Browse files Browse the repository at this point in the history
  • Loading branch information
JGefroh committed Sep 15, 2016
1 parent 1d5c425 commit bbc6bf5
Show file tree
Hide file tree
Showing 19 changed files with 151 additions and 72 deletions.
11 changes: 11 additions & 0 deletions app/controllers/market_vendors_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class MarketVendorsController < ApplicationController
def index
if params[:market_id]
@market_vendors = MarketVendor.where(market_id: params[:market_id])
render json: @market_vendors, each_serializer: MarketVendorOnlyVendorSerializer, root: false
else
@market_vendors = MarketVendor.where(vendor_id: params[:vendor_id]) if params[:vendor_id]
render json: @market_vendors, each_serializer: MarketVendorSerializer, root: false
end
end
end
4 changes: 2 additions & 2 deletions app/controllers/vendors_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ def show
def add_market
if has_admin_code
@vendor = Vendor.find(params[:id])
@market_vendor = MarketVendor.create(vendor_id: params[:id], market_id: params[:market_id]);
render json: @market_vendor.market, root: false
@market_vendor = MarketVendor.create(vendor_id: params[:id], market_id: params[:market_id], booth_location: params[:booth_location]);
render json: @market_vendor, serializer: MarketVendorSerializer, root: false
else
send_unauthorized_response
end
Expand Down
8 changes: 8 additions & 0 deletions app/serializers/market_vendor_only_vendor_serializer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class MarketVendorOnlyVendorSerializer < ActiveModel::Serializer
attributes :id,
:booth_location, :vendor

def vendor
return VendorSerializer.new(object.vendor, root: false)
end
end
12 changes: 12 additions & 0 deletions app/serializers/market_vendor_serializer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
class MarketVendorSerializer < ActiveModel::Serializer
attributes :id,
:booth_location, :market, :vendor

def market
return MarketSerializer.new(object.market, root: false)
end

def vendor
return VendorSerializer.new(object.vendor, root: false)
end
end
2 changes: 2 additions & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
get 'to_coordinates', on: :collection
end

resources :market_vendors

resources :vendors do
put 'add_market', on: :member
put 'remove_market', on: :member
Expand Down
7 changes: 7 additions & 0 deletions db/migrate/20160915054510_add_booth_info_to_market_vendors.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class AddBoothInfoToMarketVendors < ActiveRecord::Migration
def change
add_column :market_vendors, :booth_location, :string
add_column :market_vendors, :at_market_longitude, :float
add_column :market_vendors, :at_market_latitude, :float
end
end
13 changes: 8 additions & 5 deletions db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,19 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 20160911223901) do
ActiveRecord::Schema.define(version: 20160915054510) do

# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"

create_table "market_vendors", force: :cascade do |t|
t.integer "vendor_id", null: false
t.integer "market_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "vendor_id", null: false
t.integer "market_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "booth_location"
t.float "at_market_longitude"
t.float "at_market_latitude"
end

create_table "markets", force: :cascade do |t|
Expand Down
1 change: 1 addition & 0 deletions frontend/app/modules/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
'ui.router',
'ttfm.home',
'ttfm.markets',
'ttfm.market-vendors',
'ttfm.security',
'ttfm.vendors',
'jgefroh.components'
Expand Down
4 changes: 4 additions & 0 deletions frontend/app/modules/components/base-service-factory.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@
return response.data[service.resourceNameSingular] || response.data[service.resourceNamePlural] || response.data;
};

service.getResponseData = function(response) {
return response.data;
}

service.createPayload = function(resource) {
var payload = {};
payload[service.resourceNameSingular] = resource;
Expand Down
16 changes: 16 additions & 0 deletions frontend/app/modules/market-vendors/market-vendors-list.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<div data-ng-show="vm.marketVendors.length">
<table>
<thead>
<th>Booth</th>
<th>Vendor</th>
<th>Products</th>
</thead>
<tbody>
<tr data-ng-repeat="marketVendor in vm.marketVendors | orderBy: 'vendor.name' track by marketVendor.id">
<td><span data-ng-bind="marketVendor.booth_location"></span></td>
<td><span data-ng-bind="marketVendor.vendor.name"></span></td>
<td><span data-ng-bind="marketVendor.vendor.description"></span></td>
</tr>
</tbody>
</table>
</div>
32 changes: 32 additions & 0 deletions frontend/app/modules/market-vendors/market-vendors-list.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
(function() {
'use strict';
angular
.module('ttfm.market-vendors')
.directive('marketVendorsList', Directive);
function Directive() {
function Controller(MarketVendorsService) {
var vm = this;
function initialize() {
MarketVendorsService.query({market_id: vm.market.id}).then(function(marketVendors) {
vm.marketVendors = marketVendors;
console.info("WHAT");
});
console.info("WHAT");

}
initialize();
}

return {
restrict: 'A',
templateUrl: 'market-vendors-list.html',
replace: true,
controller: ['MarketVendorsService', Controller],
controllerAs: 'vm',
bindToController: true,
scope: {
market: '='
}
};
}
})();
8 changes: 8 additions & 0 deletions frontend/app/modules/market-vendors/market-vendors-module.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
(function() {
angular
.module('ttfm.market-vendors', [])
.config(['$stateProvider', Routes]);

function Routes($stateProvider) {
}
})();
10 changes: 10 additions & 0 deletions frontend/app/modules/market-vendors/market-vendors-service.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
(function() {
angular
.module('ttfm.market-vendors')
.service('MarketVendorsService', ['$rootScope', '$sanitize', 'BaseServiceFactory', Service]);

function Service($rootScope, $sanitize, BaseServiceFactory) {
var service = BaseServiceFactory('market_vendor', 'market_vendors');
return service;
}
})();
2 changes: 1 addition & 1 deletion frontend/app/modules/markets/markets-show.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ <h1>{{vm.market.name}}</h1>
<h2>{{vm.market.address}}</h2>
<h3 style="text-transform: capitalize;">{{vm.market.days_of_week_as_array.join(', ')}}</h3>
<div data-static-map data-location="vm.market.latitude + ',' + vm.market.longitude" data-size="512x512"></div>
<div data-vendors-list data-market="vm.market"></div>
<div data-market-vendors-list data-market="vm.market"></div>
</div>
20 changes: 14 additions & 6 deletions frontend/app/modules/vendors/vendors-form.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,28 @@ <h3>Markets the Vendor Attends</h3>

<div class="input-field">
<label>Markets</label>
<select data-ng-options="market as market.name for market in vm.allMarkets | filter: vm.isNotOnVendor | orderBy: 'name' track by market.id" data-ng-model="vm.selectedMarket">
<select data-ng-options="market as market.name for market in vm.allMarkets | filter: vm.isNotOnVendor | orderBy: 'name' track by market.id" data-ng-model="vm.selectedMarket" style="margin-bottom: 1rem;">
<option value="">Select a Market</option>
</select>
<button data-ng-click="vm.addMarket(vm.selectedMarket);">Add Market</button>
<div data-text-field data-label="Booth at Market" data-ng-model="vm.boothLocation"></div>
<button data-ng-click="vm.addMarket(vm.selectedMarket, vm.boothLocation);">Add Market</button>

</div>
<table>
<tr data-ng-repeat="market in vm.vendorMarkets">
<thead>
<th>Booth</th>
<th>Market</th>
</thead>
<tr data-ng-repeat="marketVendor in vm.marketVendors">
<td>
<span data-ng-bind="market.name"></span><br/>
<span data-ng-bind="market.address"></span>
<span data-ng-bind="marketVendor.booth_location"></span>
</td>
<td>
<span data-ng-bind="marketVendor.market.name"></span><br/>
<span data-ng-bind="marketVendor.market.address"></span>
</td>
<td class="button-column">
<a data-ng-click="vm.removeMarket(market)"><span class="fa fa-fw fa-trash"></span></a>
<a data-ng-click="vm.removeMarket(marketVendor)"><span class="fa fa-fw fa-trash"></span></a>
</td>
</tr>
</table>
Expand Down
26 changes: 13 additions & 13 deletions frontend/app/modules/vendors/vendors-form.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,40 @@
.module('ttfm.vendors')
.directive('vendorsForm', Directive);
function Directive() {
function Controller($scope, VendorsService, MarketsService) {
function Controller($scope, VendorsService, MarketsService, MarketVendorsService) {
var vm = this;
vm.allMarkets = [];
vm.vendorMarkets = [];
vm.marketVendors = [];
MarketsService.query().then(function(markets) {
vm.allMarkets = markets;
});

MarketsService.query({vendor_id: vm.vendor.id}).then(function(markets) {
vm.vendorMarkets = markets;
MarketVendorsService.query({vendor_id: vm.vendor.id}).then(function(marketVendors) {
vm.marketVendors = marketVendors;
});

vm.addMarket = function(market) {
vm.addMarket = function(market, boothLocation) {
$scope.$parent.vm.errors = null;
VendorsService.addMarket(vm.vendor, market).then(function(market) {
vm.vendorMarkets.push(market);
VendorsService.addMarket(vm.vendor, market, boothLocation).then(function(marketVendor) {
vm.marketVendors.push(marketVendor);
}).catch(function(response) {
$scope.$parent.vm.errors = response.data.error;
});
}

vm.removeMarket = function(market) {
vm.removeMarket = function(marketVendor) {
$scope.$parent.vm.errors = null;
VendorsService.removeMarket(vm.vendor, market).then(function() {
vm.vendorMarkets.splice(vm.vendorMarkets.indexOf(market), 1);
VendorsService.removeMarket(vm.vendor, marketVendor.market).then(function() {
vm.marketVendors.splice(vm.marketVendors.indexOf(marketVendor), 1);
}).catch(function(response) {
$scope.$parent.vm.errors = response.data.error;
});
}

vm.isNotOnVendor = function(market) {
var isDuplicate = false;
angular.forEach(vm.vendorMarkets, function(vendorMarket) {
if (market.id === vendorMarket.id) {
angular.forEach(vm.marketVendors, function(existingMarketVendor) {
if (market.id === existingMarketVendor.market.id) {
isDuplicate = true;
}
});
Expand All @@ -49,7 +49,7 @@
restrict: 'A',
templateUrl: 'vendors-form.html',
replace: true,
controller: ['$scope', 'VendorsService', 'MarketsService', Controller],
controller: ['$scope', 'VendorsService', 'MarketsService', 'MarketVendorsService', Controller],
controllerAs: 'vm',
bindToController: true,
scope: {
Expand Down
14 changes: 0 additions & 14 deletions frontend/app/modules/vendors/vendors-list.html

This file was deleted.

29 changes: 0 additions & 29 deletions frontend/app/modules/vendors/vendors-list.js

This file was deleted.

4 changes: 2 additions & 2 deletions frontend/app/modules/vendors/vendors-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
function Service($rootScope, $sanitize, BaseServiceFactory) {
var service = BaseServiceFactory('vendor', 'vendors');

service.addMarket = function(vendor, market) {
return service.$http.put(service.memberUrl(vendor.id) + '/add_market', {market_id: market.id}).then(service.getResponsePayload);
service.addMarket = function(vendor, market, boothLocation) {
return service.$http.put(service.memberUrl(vendor.id) + '/add_market', {market_id: market.id, booth_location: boothLocation}).then(service.getResponseData);
}
service.removeMarket = function(vendor, market) {
return service.$http.put(service.memberUrl(vendor.id) + '/remove_market', {market_id: market.id}).then(service.getResponsePayload);
Expand Down

0 comments on commit bbc6bf5

Please sign in to comment.