Skip to content

Instantly share code, notes, and snippets.

View vertcitron's full-sized avatar

Stéphane Souron vertcitron

View GitHub Profile
/** Class to manage asset data model **/
export default class Asset {
constructor (rawData = {}) {
Vue.set(this, 'data', rawData)
}
get slot () {
return name => {
for (const slot of this.data.slots) {
/** VUEX module for image asset management **/
import Vue from 'vue'
import Asset from './assetClass.js'
export default {
namespaced: true,
// -----------------------------------------------------------------
state: {
asset: new Asset()
const asset = this.$store.getters['asset/asset']
const originalSlot = asset.slot('original')
originalSlot.public_url = 'some new url'
asset.setSlot(originalSlot)
@vertcitron
vertcitron / movies.js
Last active November 8, 2018 10:22
movie-search movies.js module step 1
/** Store module to handle movies lists **/
import Vue from 'vue'
export default {
namespaced: true,
// ----------------------------------------------------------------------------------
state: {
movies: []
},
@vertcitron
vertcitron / config.js
Created November 8, 2018 10:36
movie-search config.js module step 1
/** Store module to handle TMDb config **/
import Vue from 'vue'
export default {
namespaced: true,
// ----------------------------------------------------------------------------------
state: {
images: {}
},
@vertcitron
vertcitron / MovieCard.vue
Created November 8, 2018 10:51
movie-search component MovieCard.vue step 1
<template>
<div class="movie">
<h5>{{movie.title}}</h5>
<img :src="posterUrl">
</div>
</template>
<script>
export default {
name: 'MovieCard',
@vertcitron
vertcitron / movies.js
Created November 8, 2018 11:10
movie-search movies.js module step 2
/** Store module to handle movies lists **/
import Vue from 'vue'
export default {
namespaced: true,
// ----------------------------------------------------------------------------------
state: {
movies: []
},
@vertcitron
vertcitron / MovieCard.vue
Created November 8, 2018 11:14
movie-search MovieCard.vue component step 2
<template>
<div class="movie">
<h5>{{movie.title}}</h5>
<img :src="$store.getters['movies/posterUrl'](movie.id)" onerror="this.src=''">
</div>
</template>
<script>
export default {
name: 'MovieCard',
@vertcitron
vertcitron / MovieClass.js
Last active November 8, 2018 11:35
movie-search MovieClass.js step 3
/** Model definition file for the Movie Class **/
import store from '../store'
export default class Movie {
constructor (rawData = {}) {
this.id = rawData.id
this.title = rawData.title
this.poster_path = rawData.poster_path
}
@vertcitron
vertcitron / movies.js
Last active March 9, 2020 14:27
movie-search movies.js module step 3
/** Store module to handle movies lists **/
import Vue from 'vue'
import Movie from '../models/MovieClass'
export default {
namespaced: true,
// ----------------------------------------------------------------------------------
state: {
movies: []