petra-tool / frontend / src / components / PrototypingProcess.vue
PrototypingProcess.vue
Raw
<template>
  <div class="score-matrix">

    <div class="text-h5 mb-0">
      <span>Development Process</span>
      <dialog-info>
        <template v-slot:title>Development Process</template>
        <template v-slot:text>
          The progress bar shows the current status of your development process by highlighting concluded prototype milestones. These milestones are a roadmap to the product concept. Each
          milestone is required to be completed through at least one cycle (iterations of a milestone are possible and desirable).
        </template>
      </dialog-info>
    </div>

    <v-container class="my-0">
      <v-skeleton-loader v-if="!getPhases" type="image" max-height="150"></v-skeleton-loader>
      <v-stepper v-else v-model="progress.e1" alt-labels non-linear class="elevation-0 py-7 px-7">
        <v-stepper-header class="elevation-0">
          <v-stepper-step :complete="getPhases.includes('Problem Understanding')" step="" complete-icon="" color="accent">
            <div class="text-center body-2 pl-8" v-show="textVisible">Problem<br>Pretotype</div>
            <div class="text-center body-2" v-show="textVisible" style="margin:-110px 0;">
              <span>Problem</span>
              <dialog-info styles="margin: -3px; padding: 0 0 0 0;">
                <template v-slot:title>Problem Understanding</template>
                <template v-slot:text>
                  In this phase, you gain a deep understanding of the problem you're addressing. It involves research, observation, interviews, and testing to identify the core issues. 
                  The result is a problem pretotype that describes the overall problem that you are tackling.
                </template>
              </dialog-info>
              <span>Understanding</span>
            </div>
          </v-stepper-step>

          <v-divider :class="getPhases.includes('Problem Understanding') && getPhases.includes('Problem Decomposition') && 'active'"></v-divider>

          <v-stepper-step :complete="getPhases.includes('Problem Decomposition')" step="" complete-icon="" color="accent">
            <div class="text-center body-2 ml-9" v-show="textVisible">Problem<br>Prototype</div>
            <div class="text-center body-2" v-show="textVisible" style="margin:-110px 0;">
              <span>Problem</span>
              <dialog-info styles="margin: -3px; padding: 0 0 0 0;">
                <template v-slot:title>Problem Decomposition</template>
                <template v-slot:text>
                Once the problem is understood, it's broken down into sub-problems. This phase helps define the specific challenges that can be solved through targeted user feedback. 
                The result is a problem prototype that shows the final set of problems that can be solved through targeted user feedback.
                </template>
              </dialog-info>
              <span>Decomposition</span>
            </div>
          </v-stepper-step>

          <v-divider :class="getPhases.includes('Problem Decomposition') && getPhases.includes('Requirements Elicitation') && 'active'"></v-divider>

          <v-stepper-step :complete="getPhases.includes('Requirements Elicitation')" step="" complete-icon="" color="accent">
            <div class="text-center body-2 ml-8" v-show="textVisible">Solution<br>Pretotype I</div>
            <div class="text-center body-2" v-show="textVisible" style="margin:-110px 0;">
              <span>Requirements</span>
              <dialog-info styles="margin: -3px; padding: 0 0 0 0;">
                <template v-slot:title>Requirements Elicitation</template>
                <template v-slot:text>
                Collecting requirements for the sub-problems is essential. Interviews, questionnaires, user observations, workshops, and prototyping with users are all part of this phase. 
                The result of this phase is a solution pretotype 1 that are artifacts created to test if the requirement or alternative requirements are useful.
                </template>
              </dialog-info>
              <span>Elicitation</span>
            </div>
          </v-stepper-step>

          <v-divider :class="getPhases.includes('Requirements Elicitation') && getPhases.includes('Requirements Selection') && 'active'"></v-divider>

          <v-stepper-step :complete="getPhases.includes('Requirements Selection')" step="" complete-icon="" color="accent">
            <div class="text-center body-2 ml-8" v-show="textVisible">Solution<br>Pretotype II</div>
            <div class="text-center body-2" v-show="textVisible" style="margin:-110px 0;">
              <span>Requirements</span>
              <dialog-info styles="margin: -3px; padding: 0 0 0 0;">
                <template v-slot:title>Requirements Selection</template>
                <template v-slot:text>
                After gathering requirements, it's time to select the final ones. The selected requirements are tested through initial solution prototypes. 
                The result of this phase is a solution pretotype 2, which are artifacts created to test the requirements to be selected, and a problem definition/requirements list that describes the problem you defined in steps 1-2.
                </template>
              </dialog-info>
              <span>Selection</span>
            </div>
          </v-stepper-step>

          <v-divider :class="getPhases.includes('Requirements Selection') && getPhases.includes('Function Exploration') && 'active'"></v-divider>

          <v-stepper-step :complete="getPhases.includes('Function Exploration')" step="" complete-icon="" color="accent">
            <div class="text-center body-2 ml-8" v-show="textVisible">Solution<br>Prototype I</div>
            <div class="text-center body-2" v-show="textVisible" style="margin:-110px 0;">
              <span>Function</span>
              <dialog-info styles="margin: -3px; padding: 0 0 0 0;">
                <template v-slot:title>Function Exploration</template>
                <template v-slot:text>
                  This phase involves brainstorming and thinking of different functions that can address the requirements. 
                  The result of such a phase is a solution prototype 1 focusing on the functionality of the desired product (works-like).
                </template>
              </dialog-info>
              <span>Exploration</span>
            </div>
          </v-stepper-step>

          <v-divider :class="getPhases.includes('Function Exploration') && getPhases.includes('Embodiment Design') && 'active'"></v-divider>

          <v-stepper-step :complete="getPhases.includes('Embodiment Design')" step="" complete-icon="" color="accent">
            <div class="text-center body-2 ml-8" v-show="textVisible">Solution<br>Prototype II</div>
            <div class="text-center body-2" v-show="textVisible" style="margin:-110px 0;">
              <span>Embodiment</span>
              <dialog-info styles="margin: -3px; padding: 0 0 0 0;">
                <template v-slot:title>Embodiment Design</template>
                <template v-slot:text>
                  Here, you determine how to realize the functions identified in the previous phase. 
                  The result of such a phase is a solution prototype 2 focusing on the looks of the desired product (looks-like).
                </template>
              </dialog-info>
              <span>Design</span>
            </div>
          </v-stepper-step>

          <v-divider :class="getPhases.includes('Embodiment Design') && getPhases.includes('Integration Design') && 'active'"></v-divider>

          <v-stepper-step :complete="getPhases.includes('Integration Design')" step="" complete-icon="" color="accent">
            <div class="text-center body-2 ml-8" v-show="textVisible">Integration<br>Prototype</div>
            <div class="text-center body-2" v-show="textVisible" style="margin:-110px 0;">
              <span>Integration</span>
              <dialog-info styles="margin: -3px; padding: 0 0 0 0;">
                <template v-slot:title>Integration Design</template>
                <template v-slot:text>
                Integration of all technical components into a cohesive design takes place in this phase, resulting in an integration prototype. 
                The result is an integration prototype by combining the functional- and model prototypes.
                </template>
              </dialog-info>
              <span class="mx-2">Design</span>
            </div>
          </v-stepper-step>

          <v-divider :class="getPhases.includes('Integration Design') && getPhases.includes('User Testing and Feedback') && 'active'"></v-divider>

          <v-stepper-step :complete="
                 getPhases.includes('Problem Understanding')
              && getPhases.includes('Problem Decomposition')
              && getPhases.includes('Requirements Elicitation')
              && getPhases.includes('Requirements Selection')
              && getPhases.includes('Function Exploration')
              && getPhases.includes('Embodiment Design')
              && getPhases.includes('Integration Design')
              && getPhases.includes('User Testing and Feedback')" step="" color="accent" complete-icon="">
            <div class="text-center body-2 ml-8" v-show="textVisible">Final<br>Prototype</div>
            <div class="text-center body-2" v-show="textVisible" style="margin:-110px 0;">
              <span>User Testing &</span>
              <dialog-info styles="margin: -3px; padding: 0 0 0 0;">
                <template v-slot:title>User Testing & Feedback</template>
                <template v-slot:text>
                  The final prototype is tested with users to validate the solution and demonstrate a working version of the product concept. 
                  This phase culminates in a Final Prototype that is a a working version of the product concept and shows by user feedback that the problem was adequately solved and convincing to invest in the product.
                </template>
              </dialog-info>
              <span>Feedback</span>
            </div>
          </v-stepper-step>
        </v-stepper-header>
      </v-stepper>
    </v-container>

  </div>
</template>

<script>
import DialogInfo from "@/components/DialogInfo";
import {mapGetters} from "vuex";

export default {
  name: "PrototypeProcess",
  components: {DialogInfo},
  data: () => ({
    milestones: [],
    progress: {
      loading: false,
      e1: 7
    },
  }),
  methods: {},
  computed: {
    ...mapGetters('site', ['getPhases']),
    textVisible() {
      return this.$vuetify.breakpoint.lgAndUp
    }
  },
  created() {
    if (this.getPhases === null) {
      this.$store.dispatch('site/fetchProgress')
    }
  },
}
</script>

<style scoped lang="scss">
// background color for header icons in App.vue

.v-stepper--alt-labels .v-stepper__header .v-divider {
  // margins left and right from v-divider
  margin: 35px -77px 0px;
  border-width: thick 0 0 0;
}

.theme--light.v-stepper .v-stepper__header .v-divider {
  background-color: #a0a2a2;
}

.v-stepper {
  .v-stepper__header {
    // overall width of container (negative
    margin: -10px -55px;
  }

  .active {
    // assign this class to connect steps with black divider
    background-color: #01141C !important;
  }

}
</style>